[Haskell-cafe] Clarification on proof section of HS: The Craft
of FP
Clive Brettingham-Moore
haskell at brettingham-moore.net
Mon May 2 20:44:03 EDT 2005
Although the answer to the original question was sort of embedded in the
discussion, a quick read of the replies suggested that no one had made
the simple clarification.
2) Prove that the property holds for (x:xs) under the assumption
that the property holds for xs.
It's not a general property it is a specific one, this is more clearly
stated thus:
2) Prove that the property holds for (x:xs) given that it holds for a list xs.
Now, from 1 you already have a list xs =[], and then you have (x:[]) =
[x], then (x2:[x]) = [x2,x] ... I think that you can see where this is
going.
This is an example of a useful type of proof called proof by induction,
which are related to natural numbers and counting. Induction gets a
little uncertain with infinities which is what most of the posts where
about, in summary: Haskell has infinite lists, infinite lists must be
handled seperately in the proof.
Wikipedia has a fairly conventional explanation of induction
http://en.wikipedia.org/wiki/Mathematical_induction
C
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
> 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? Isn't there a recursive
>dependency here? You are defining the proof for lists with at least one
>element based on the assumption that it holds for all lists, right? How
>does this get you a proof of the general property if it depends on the
>assumption of the general property?
>
>Regards and thanks,
>Echo Nolan.
>
>
>
>
>
More information about the Haskell-Cafe
mailing list