I heard a joke about logic a while back:

One man's modus ponens is another man's modus tollens

Though, I am hesitant to tell such a joke, for fear it will injure someone through uncontrollable side-splitting laughter. I am not responsible for burst spleens! ;)

It basically means any valid chain of reasoning can be run in two directions. For example:

Here's one proof for 1 = .999...

In Axiomatic System 1

(1) Assume: 1/3 = .333...

(2) Then adding this equation to itself three times results in:

1/3 = .333...

+ 1/3 = .333...

+ 1/3 = .333...

-------------------

1 = .999...

(3) Therefore 1 = .999...

However, this result seems a bit counter-intuitive.

There is however an equally valid argument that can be constructed by running this same chain of reasoning in reverse:

In Axiomatic System 2

(1) Assume: 1/3 = .333...

(2) Then adding this equation to itself three times results in:

1/3 = .333...

+ 1/3 = .333...

+ 1/3 = .333...

-------------------

1 = .999...

(3) Therefore, 1 = .999...

(4) However, clearly this conclusion is absurd. There is one point of difference, if we define the set of real numbers by repeatedly dividing a line into ten parts. The coordinate .999... would describe the next-to-last point in the line.

(5) Therefore we can conclude that the assumption (1) was false (by reductio ad absurdum).

(6) And since 1 > .999... by one point,

1/3 > .333...

Just like that we get a completely different conclusion.

Point Schmoint

Generally both axiomatic systems coincide on calculations, literally, 99.9... % of the time. Does a difference of a point or two matter? Who would notice the error in a calculation off by such a small amount?

The practical significance will emerge in a calculation that amplifies the difference, such as:

(1 - .999...) * (the number of points in a line of length 1)

This infinite summation is an indeterminate form, roughly:

0 * oo

In the first axiomatic system we may take this product to be 0. Since if the difference is truly zero, zero times anything must be zero.

In the second axiomatic system we may take this product to be equal to 1. Since if N represents the non-finite number of points in the line, 1/N * N = 1.

Neither 0 or 1 is "the" correct answer, any more than saying Checkers is "more correct" than Othello. Different ground rules will lead to different results in different games. A chain of reasoning only establishes a connection between a set of assumptions and the conclusion. It does not establish a direction the reasoning must travel along that chain. Just as we can accept the conclusion, we may equally reject both the conclusion and at least one assumption which led to it.

We might even imagine a system in which 1=0 (mod 1, for example), and both answers are correct. :)

So overall, we may take these numbers '1/3' and '.333...' to be infinitely close together on the number line, but not exactly equal. Or we may take them to be *exactly* equal -- the exact same point. Both systems can be consistent. But whether or not they are equal really depends on what our definition of "is equal" is.

## Friday, July 23, 2010

## Wednesday, July 21, 2010

### 1=0

Based on the definitions and axioms of standard arithmetic,'1=0' is a contradiction. However, there is nothing intrinsically contradictory about stating that '1=0' in isolation of a given set of definitions/axioms.

Math is a lot like a game of checkers. Abstractly, an axiomatic system can be reduced to three things:

For example here is an inconsistent system, where two core axioms contradict each other:

System X

(1) X is true (assumption)

(2) X is not true (assumption)

(3) If X is true, then either X is true or pigs can fly. ('or' introduction from 1)

(4) But since X is not true (from 2), pigs can fly ('or' elimination from 1, 2)

(5) Therefore since we can replace 'pigs can fly' with any other random absurdity, if a system is inconsistent, we can derive any assertion from it.

So, if 'inconsistency' means that any result can be derived, 'consistency' just means there is there is least one thing that cannot be derived from the set of assumptions. To show consistency of a simple system consisting of '1=0', it's easy to show we cannot derive '1 != 0'. Since, from '1=0', the most we may derive is '1=2, 1=3, 1=4, ...'.

Therefore '1=0' is only inconsistent if we introduce definitions/axioms that make it so.

Usefulness of 1=0

Though, my next thought is "So '1=0' may be logically consistent, but is it useless? What can you do with a number system in which 1=0?"

However, consider a larger context of use. Likewise we may not see a good use for the number "zero" in only the context of itself. But when combined with other numbers, in a larger system, zero is useful precisely because it is the trivial case. And the trivial case becomes a pivot point for solving an equation, given it's unique properties when applied to operators.

So what is simple a real world example? Suppose we have a ceiling fan or lamp, that has a cyclic switch with four settings:

Now we could physically replace the fan switch with one with fewer possible states (3, 2, or 1). In the smallest number of states, we have a switch that is hardwired to be either always on or off. This is a system where 1 = 0 (mod 1) best models the situation. So we could view a wire as a cyclic switch, where states 1=0. A collection of switches AND wires, therefore, reduce to a collection of only switches. Not that this is the only way to see a problem, but the benefit is that it leads to a different way to see a problem (without requiring as many different types of components).

Combining inconsistent branches into a consistent superstructure:

There can be a fork in mathematics where on one branch '1=0' is an axiom, and on another branch '1!=0' is an axiom. Both are consistent when taken individually, but they are inconsistent in relation to each other. But are these two systems truly incompatible though?

Not necessarily. Both could be combined into one axiomatic superstructure, where the "loop" property of the number line was a variable.

For example, in a system where '1=0' the numbers loop at 1. In modular arithmetic, the line loops at some finite number > 1. And for standard arithmetic, the loop could be placed somewhere past the largest number we need. Not that this is the only approach to combining the two systems, but it's just an example.

So I think the interesting results from this line of reasoning are:

1. For any statement that is derivable in one axiomatic system, there exists at least one alternate axiomatic system such that the exact opposite result is derivable. Since at least, we may take that opposite result to be the starting axiom of the new system.

2. In general, any two incompatible axiomatic systems can be brought together under one super set of axioms, by simply adding one (or more) variables to axioms that switch results down one branch or the other. This is similar to re-factoring in software engineering, where different cases can always be brought together within the same handler, simply by introducing more variables.

3. The difference between "internal inconsistency of one system" and "external inconsistency between two systems" is arbitrary. Any subset of assumptions may be considered to be an independent axiomatic system. So, consistency problems within a single given system can likewise be resolved by the addition of (at least) one new variable. For example, considering "System X" again, we can introduce a new variable Y that easily resolves the contradiction:

System X+Y

(1') X is true if Y (assumption)

(2') X is not true if not Y (assumption)

(3') it's not possible to derive 'pigs can fly'

So rather than seeing two complete systems or axioms as inconsistent, we may see both as special cases of a larger framework of axioms.

The pros/cons of adding new variables to core axioms is that they increase the resolution of detail, but decrease the simplicity. Really, the practical problem in designing an axiomatic system isn't so much in getting the system to be consistent, but in preventing it from becoming too complex and unwieldy to use.

Math is a lot like a game of checkers. Abstractly, an axiomatic system can be reduced to three things:

- a set of symbols (definitions)
- a set of rules for manipulating those symbols (axioms)
- a set of derived results (theorems)

For example here is an inconsistent system, where two core axioms contradict each other:

System X

(1) X is true (assumption)

(2) X is not true (assumption)

(3) If X is true, then either X is true or pigs can fly. ('or' introduction from 1)

(4) But since X is not true (from 2), pigs can fly ('or' elimination from 1, 2)

(5) Therefore since we can replace 'pigs can fly' with any other random absurdity, if a system is inconsistent, we can derive any assertion from it.

So, if 'inconsistency' means that any result can be derived, 'consistency' just means there is there is least one thing that cannot be derived from the set of assumptions. To show consistency of a simple system consisting of '1=0', it's easy to show we cannot derive '1 != 0'. Since, from '1=0', the most we may derive is '1=2, 1=3, 1=4, ...'.

Therefore '1=0' is only inconsistent if we introduce definitions/axioms that make it so.

Usefulness of 1=0

Though, my next thought is "So '1=0' may be logically consistent, but is it useless? What can you do with a number system in which 1=0?"

However, consider a larger context of use. Likewise we may not see a good use for the number "zero" in only the context of itself. But when combined with other numbers, in a larger system, zero is useful precisely because it is the trivial case. And the trivial case becomes a pivot point for solving an equation, given it's unique properties when applied to operators.

So what is simple a real world example? Suppose we have a ceiling fan or lamp, that has a cyclic switch with four settings:

- off
- low
- medium
- high

Now we could physically replace the fan switch with one with fewer possible states (3, 2, or 1). In the smallest number of states, we have a switch that is hardwired to be either always on or off. This is a system where 1 = 0 (mod 1) best models the situation. So we could view a wire as a cyclic switch, where states 1=0. A collection of switches AND wires, therefore, reduce to a collection of only switches. Not that this is the only way to see a problem, but the benefit is that it leads to a different way to see a problem (without requiring as many different types of components).

Combining inconsistent branches into a consistent superstructure:

There can be a fork in mathematics where on one branch '1=0' is an axiom, and on another branch '1!=0' is an axiom. Both are consistent when taken individually, but they are inconsistent in relation to each other. But are these two systems truly incompatible though?

Not necessarily. Both could be combined into one axiomatic superstructure, where the "loop" property of the number line was a variable.

For example, in a system where '1=0' the numbers loop at 1. In modular arithmetic, the line loops at some finite number > 1. And for standard arithmetic, the loop could be placed somewhere past the largest number we need. Not that this is the only approach to combining the two systems, but it's just an example.

So I think the interesting results from this line of reasoning are:

1. For any statement that is derivable in one axiomatic system, there exists at least one alternate axiomatic system such that the exact opposite result is derivable. Since at least, we may take that opposite result to be the starting axiom of the new system.

2. In general, any two incompatible axiomatic systems can be brought together under one super set of axioms, by simply adding one (or more) variables to axioms that switch results down one branch or the other. This is similar to re-factoring in software engineering, where different cases can always be brought together within the same handler, simply by introducing more variables.

3. The difference between "internal inconsistency of one system" and "external inconsistency between two systems" is arbitrary. Any subset of assumptions may be considered to be an independent axiomatic system. So, consistency problems within a single given system can likewise be resolved by the addition of (at least) one new variable. For example, considering "System X" again, we can introduce a new variable Y that easily resolves the contradiction:

System X+Y

(1') X is true if Y (assumption)

(2') X is not true if not Y (assumption)

(3') it's not possible to derive 'pigs can fly'

So rather than seeing two complete systems or axioms as inconsistent, we may see both as special cases of a larger framework of axioms.

The pros/cons of adding new variables to core axioms is that they increase the resolution of detail, but decrease the simplicity. Really, the practical problem in designing an axiomatic system isn't so much in getting the system to be consistent, but in preventing it from becoming too complex and unwieldy to use.

## Sunday, July 18, 2010

### Paradox: I'm lying, and that's a promise

I remember years ago, on the old "Star Trek" series, Spock told a robot that he was lying, and it made the robot's head explode.

That paradox fascinated me, because it is such a simple paradox, but it is tricky to analyze. It cleverly sets all the logic about itself in a tight loop. I wondered:

What's curious is the logic stemming from the paradox is not really symmetrical.

In deriving the falsity of the statement (1), we have a valid line of reasoning (reductio ad absurdum). However, attempting to derive the opposite result -- that the statement is is true -- is invalid (circular reasoning). Using (1) in any manner to prove that (1) is true assumes the conclusion. And if the statement is false, we don't know that the mechanism that would allow a desired inference would even be supported, as there's more than one way a statement can be false.

So then what exactly is screwy with the statement? The problem is simple, but to model this more precisely, I will need better notation.

As an analogy, "0" will function like "false", "1" will function like "true," and just to be safe "null" is anything else that doesn't fit in the previous two categories, for example, an incomplete thought, or gibberish. The value "null" value will propagate to anything it touches.

But how would I determine if a statement would map to one of these values?

What does it means for a mathematical statement to be "true?"

For a simple example, if I defined numbers like:

Let 1 be a primitive

Let + be an operation

Let 2 = 1+1

Let 3 = 1 + 1 + 1

Let 4 = 1 + 1 + 1 + 1

...

Then a statement like 2+2=4 is "true" since it's derivable from the basic definitions/axioms:

4 = 1+1+1+1 = (1+1) + (1+1) = 2+2

Generally, in math, if "a statement is true" it just means that it's derivable from the given set of definitions/axioms. So more precisely:

Also the statement at (1) contains a semantic structure like "P is false," which operates like an inverter on the truth value. For example if P is true, "P is false" is false. If P is false, "P is false" is true. This function essentially just flips the truth value of P. To model this more precisely:

Note: if the number is a value 1 or 0, the function is just:

inverter(x) = 1 - x.

Now the statement at (1) is only talking about truth values. And it's asserting (at least) two different things. If we let the variable S refer to the statement at (1), the assertions are:

I can extract more things from the statement (like more complex combinations of the above two identities), but ultimately, in exploding a statement into a package of simpler assertions, all these things would be AND'ed together to form the complete thought.

But I'm only interested in showing the falsity of the entire package. It's sufficient that if any one of these components is false, any larger AND statement containing these two assertions will also be false.

Now simplifying, if we let:

Then what is asserted at the bottom of the paradox is a set of linear equations:

The "solution" implies that 1 = 0. By definition, this is a contradiction, so we can say the entire the complete package of assertions in (1) is false (in a system of binary truth values). The self-reference implicitly sets up an impossible set of constraints, so the reference is exactly what is false.

The interesting morals of the story, I think, are:

Generally a reference can bear a truth value. For example, suppose a wrecking crew shows up, and someone asks "Hey boss, where's the house we are supposed to demolish?" If the boss man points to the wrong house and says "That," it's precisely the reference that is false.

Self-references are fine, but they are assertions, as they implicitly set up an identity relation. Those assertions can be incorrect just like anything else. But in pointing a reference back to the statement containing the reference, the self-reference is effectively camouflaged so as to hardly look like an assertion at all.

Circular reasoning is a tricky issue to diagnose, and any kind of recursive definition will naturally lend itself to this problem.

That paradox fascinated me, because it is such a simple paradox, but it is tricky to analyze. It cleverly sets all the logic about itself in a tight loop. I wondered:

- Does the statement have a truth value?
- Is the statement valid?
- If something is screwy with the statement, what exactly is it?

Consider:

(1) This sentence is false.

(1) This sentence is false.

(2) Suppose the statement at (1) is either true or false. The analysis will explore the two branches independently.

(3.a) First assume it is true. Then from (1), we can easily derive that the statement is false.

(3.b) Now assume it is false. No further deduction can be made using (1) within this branch. Since any attempt to prove the truth of (1) would also be relying on (1) as an assumption, which we just assumed to be false.

(4) Hence, either way, the reasoning terminates on the conclusion that the statement at (1) is false.

What's curious is the logic stemming from the paradox is not really symmetrical.

In deriving the falsity of the statement (1), we have a valid line of reasoning (reductio ad absurdum). However, attempting to derive the opposite result -- that the statement is is true -- is invalid (circular reasoning). Using (1) in any manner to prove that (1) is true assumes the conclusion. And if the statement is false, we don't know that the mechanism that would allow a desired inference would even be supported, as there's more than one way a statement can be false.

So then what exactly is screwy with the statement? The problem is simple, but to model this more precisely, I will need better notation.

Define a set of distinct truth values {0, 1, null}.

As an analogy, "0" will function like "false", "1" will function like "true," and just to be safe "null" is anything else that doesn't fit in the previous two categories, for example, an incomplete thought, or gibberish. The value "null" value will propagate to anything it touches.

But how would I determine if a statement would map to one of these values?

What does it means for a mathematical statement to be "true?"

For a simple example, if I defined numbers like:

Let 1 be a primitive

Let + be an operation

Let 2 = 1+1

Let 3 = 1 + 1 + 1

Let 4 = 1 + 1 + 1 + 1

...

Then a statement like 2+2=4 is "true" since it's derivable from the basic definitions/axioms:

4 = 1+1+1+1 = (1+1) + (1+1) = 2+2

Generally, in math, if "a statement is true" it just means that it's derivable from the given set of definitions/axioms. So more precisely:

Define a function truth_value(P) that maps an assertion P to its truth value such that:

The return value is 1, if P is derivable from the given set of definitions/axioms.

The return value is 0, if a contradiction (like 1=0) can be derived from P and the given set of definitions/axioms.

The return value is null otherwise.

Also the statement at (1) contains a semantic structure like "P is false," which operates like an inverter on the truth value. For example if P is true, "P is false" is false. If P is false, "P is false" is true. This function essentially just flips the truth value of P. To model this more precisely:

Define a truth function inverter(x) such that:

The return value is 1, if x = 0.

The return value is 0, if x = 1.

Note: if the number is a value 1 or 0, the function is just:

inverter(x) = 1 - x.

Now the statement at (1) is only talking about truth values. And it's asserting (at least) two different things. If we let the variable S refer to the statement at (1), the assertions are:

The statement is false:

truth_value(S) = 0

and a self-reference roughly like "S = 'S is false'" sets up an identity statement about the truth values:

truth_value(S) = inverter(truth_value(S))

I can extract more things from the statement (like more complex combinations of the above two identities), but ultimately, in exploding a statement into a package of simpler assertions, all these things would be AND'ed together to form the complete thought.

But I'm only interested in showing the falsity of the entire package. It's sufficient that if any one of these components is false, any larger AND statement containing these two assertions will also be false.

Now simplifying, if we let:

x = truth_value(S)

Then what is asserted at the bottom of the paradox is a set of linear equations:

x = 0

x = 1 - x

...

The "solution" implies that 1 = 0. By definition, this is a contradiction, so we can say the entire the complete package of assertions in (1) is false (in a system of binary truth values). The self-reference implicitly sets up an impossible set of constraints, so the reference is exactly what is false.

The interesting morals of the story, I think, are:

Generally a reference can bear a truth value. For example, suppose a wrecking crew shows up, and someone asks "Hey boss, where's the house we are supposed to demolish?" If the boss man points to the wrong house and says "That," it's precisely the reference that is false.

Self-references are fine, but they are assertions, as they implicitly set up an identity relation. Those assertions can be incorrect just like anything else. But in pointing a reference back to the statement containing the reference, the self-reference is effectively camouflaged so as to hardly look like an assertion at all.

Circular reasoning is a tricky issue to diagnose, and any kind of recursive definition will naturally lend itself to this problem.

### Atari 2600 games

The Atari emulator called "Stella" brings the old Atari 2600 games back to life. Honestly these games are sometimes terrible by modern standards. :) Though, they do have an interesting primitive appeal, and I wanted screen shots of them. Maybe I will make them into a desktop background.

I think my favorite was H.E.R.O, where you could explore caverns (across multiple screens) and rescue trapped minors.

Here are more or less all the games I purchased back in the day...

I think my favorite was H.E.R.O, where you could explore caverns (across multiple screens) and rescue trapped minors.

Here are more or less all the games I purchased back in the day...

## Wednesday, July 7, 2010

### Google Voice

Google has a new (free) phone service that's interesting. You can set up a new phone number that will forward a call to any number of other phones. So it's like a virtual phone, pointing to physical devices. Here's a quick overview:

http://www.google.com/googlevoice/about.html

I had been thinking of something similar for mailing addresses. If the postal service would recognize a set of virtual addresses, it would be possible to make a free service that would resolve a virtual address to a physical mailing addresses as well. Then if you move from one physical address to another, you could just update a pointer in the abstraction layer rather than notifying hundreds of people about the change. The virtual mailing address could always be the same.

http://www.google.com/googlevoice/about.html

I had been thinking of something similar for mailing addresses. If the postal service would recognize a set of virtual addresses, it would be possible to make a free service that would resolve a virtual address to a physical mailing addresses as well. Then if you move from one physical address to another, you could just update a pointer in the abstraction layer rather than notifying hundreds of people about the change. The virtual mailing address could always be the same.

Subscribe to:
Posts (Atom)