Re:The Future of Mathematics? [video]
by jhanschoo on Thursday October 10, 2019 @03:10AM
(#21211758)
> Essentially, true statements are expressions that pass the "type check" of a compiler. A function taking type A as param and returning type B is an implication A->B. To prove this implication, you need to find a function implementation that passes the corresponding type checks. This is what I would have wanted the tutorial to say at the start.
This sounds like the tutorial was geared toward those already familiar with other proof assistants, since this concept is present in most proof assistants.
Re:The Future of Mathematics? [video]
by foooobar on Wednesday October 09, 2019 @11:40AM
(#21204229)
Which tutorial did you use?
As someone coming from computer science, I found https://leanprover.github.io/theorem_proving_in_lean/ very approachable as an introduction to ITP in general.
Re:The Future of Mathematics? [video]
by mherrmann on Wednesday October 09, 2019 @11:50AM
(#21204327)
That's the one I meant I think. It is nice, but as I said the impression it left me with was "you could have told me how the approach generally works sooner".
Re:The Future of Mathematics? [video]
by lonelappde on Wednesday October 09, 2019 @03:51PM
(#21207210)
That books wants to build the foundation (dependent types) before making the big claim in chapter 3.
It's a bit weird because has Haskell shows, you don't need dependent types for basic theorem proving. (but dependent types do give a lot of useful power)
Re:The Future of Mathematics? [video]
by dwohnitmok on Wednesday October 09, 2019 @10:05PM
(#21210203)
Well if you just have Haskell 2010 types, you're talking about really really basic theorem proving since all you have is propositional logic. The most interesting thing I can think of to prove with Haskell 2010 types is (the constructive version of) de Morgan's laws. Almost all other interesting mathematical statements are out of reach.
I once played with Lean but found the tutorial not very approachable. It took an hour of reading through abstract explanations until it finally explained the idea how it works. Essentially, true statements are expressions that pass the "type check" of a compiler. A function taking type A as param and returning type B is an implication A->B. To prove this implication, you need to find a function implementation that passes the corresponding type checks. This is what I would have wanted the tutorial to say at the start.