Hi,

sylvain wrote:
In my humble opinion, Haskell presently fall short of its promises
because it does not embed theorem proving. Quickcheck-like testing is
truly great, but can not replace proofs to produce bug free software.

With use of equational reasoning + induction, one can already prove a
huge amount of useful properties of an Haskell program [1].

this sounds like a really interesting project to me...  Especially as
I'm doing maths instead of CS as main subject (and it is simply
inherently interesting :D).

theorem : ( xs :: [a], ys :: [a], f :: a -> b) => length (map f (xs ++ ys )) = length xs + length yx
  proof
    length (map f (xs ++ ys )) =
    length (xs ++ ys) = {- use length++ -}
    length xs ++ length ys

That's of course nice, but I'm at the moment not yet convinced something
like this could be more or less easily implemented also for larger
programs; and, I don't see from your example how the real implementation
of the program should play in.  Do you expect that Haskell figures out
from the implementation that (map f) does not alter a lists length?  Or
should this be an already available theorem within the Prelude?

I guess it should be the former, as otherwise the whole proofing seems
to be just documentation, without real connection to the Haskell code.
But in this case, I wonder whether something like that can be
successfully done on more sophisticated code, and especially done as
part of a GSoC project...  But I guess with a competent mentor and
clearly defined goals it should be possible.

But all in all, as stated above, this could be really interesting :)
Thanks for this suggestion and your ideas!

Daniel

--
Done:  Arc-Bar-Cav-Ran-Rog-Sam-Tou-Val-Wiz
To go: Hea-Kni-Mon-Pri

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to