[Haskell-cafe] Clarification on proof section of HS: The Craft of FP

robert dockins robdockins at fastmail.fm
Mon May 2 12:27:09 EDT 2005


> Well, yes, but I'd argue that ordinary (transfinite) mathematical
> induction will work just fine here. It's just that the set we're doing
> mathematical induction over is one larger (in the ordinal sense) than
> usual. Let S = N union {w}, where N is the usual set of naturals and w
> is an additional new element. Adopt the usual well-ordering <= on N,
> and extend it to a new well-ordering by defining x <= w for every x.
> 
> Assign finite completely defined lists their usual lengths, and every
> _|_ terminated or infinite list, length w.

So every infinite object has a special length denoted "w".  I assume we 
wish to make the following statements about "w"

w = w
~(w < w)

Without which "=" and "<" fail to have their intended meaning.

> Suppose that if the statement P(x) holds for every x < y then it holds
> for y as well. Then P(y) holds by mathematical induction.

Then this induction hypothesis cannot apply to infinite lists.  Suppose
xs is infinite.  Then we assign it length "w".  Now, (x:xs) is also 
infinite, and has length "w".  But, ~(w < w), so we cannot conclude that 
P(x:xs) given P(xs).


One simply cannot reason based on the "size" of an infinite object in 
this way.  You require a form of structural reasoning, and that means 
coinduction.



More information about the Haskell-Cafe mailing list