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

Henning Thielemann lemming at henning-thielemann.de
Mon May 2 08:29:02 EDT 2005


On Mon, 2 May 2005, Echo Nolan wrote:

> Hello all,
> 	My copy of HS: The Craft Of FP just arrived and I was reading
> section 8.5 about induction. On page 141, Simon Thompson gives a
> method of proving properties of functions on lists:
> 	1) Prove that the property holds for the null list
> 	2) Prove that the property holds for (x:xs) under the assumption
> 		that the property holds for xs.
>
> 	My question is this: what is the proof of (P([]) and ( P(xs) => P(x:xs))) => P(xs)?
> In other words, how does proof of the property on empty lists and proof
> that the property holds on (x:xs) under the assumption that it holds on
> xs give proof that it holds on all lists?

There must be some warranty that the resolution with respect to (:) stops 
somewhere. If you are sure that xs is shorter than x then the induction 
will stop sometimes. But if (x:xs) is infinite the induction won't work. I 
think you need some notion of the length of a list or some relation "one 
list is shorter than the other one" in order to explain induction.


More information about the Haskell-Cafe mailing list