[Haskell-cafe] currying combinators
wren ng thornton
wren at freegeek.org
Fri May 28 17:54:11 EDT 2010
Lennart Augustsson wrote:
> Yes, of course you have to trust Djinn to believe its proof.
> That's no different from having to trust me if I had done the proof by hand.
> Our you would have to trust yourself if you did the proof.
True, though I think I didn't make my point clearly.
The question is, when can we consider a proof of (\forall x. ~ P x) as a
valid *constructive* proof of (~ \exists x. P x)?
If you tell me you've checked every x and found none supporting P, and I
believe you have the capability to have done so, and I believe things
you say are true, then I may take your statement that (\forall x. ~ P x)
and prove to myself that (~ \exists x. P x). However, my proof ---no
matter how much I believe it--- is not the sort of thing I can pick up
and hand to someone else. If they do not trust your diligence, then they
have no reason to trust my proof. I haven't constructed a witness to the
proposition, I've only convinced myself of it.
If, however, you construct a proof of (\forall x. ~ P x) which shows
that all options have been exhausted, but does so in a finite way that's
open to inspection and analysis, well then that's a different story. In
this case, because we've actually constructed some mathematical object
that we can poke and prod to understand what it is and how it works, we
do have something that we can hand to a skeptic to convince them. We
needn't argue from authority or put our faith in an elder or prophet,
the proof stands on its own.
When someone says "prove it", it's not always clear whether they mean
they want to be convinced it's true, or whether they mean they want
concrete evidence that witnesses its truth. Exhaustive search may be
convincing, but it's not constructive. When the OP was asking how we'd
go about proving that no total function exists with a particular type, I
was assuming they were seeking a witness rather than a convincing. For a
witness, I'd think you'd have to reason from parametricity, understand
the process that Djinn is automating, or similar; just running Djinn is
merely convincing.
--
Live well,
~wren
More information about the Haskell-Cafe
mailing list