What I believed
about Proofs:
What I now know
about Proofs:
"I now do my mathematics with a proof assistant" - Vladimir Voevodsky (Fields Medal Winner)
"The areas I found of value and of beauty, I didn't have tools to explore" - Vladimir Voevodsky
assert (reverse [1,2]) [2,1]
assert (reverse []) []
assert (reverse [1,2,1]) [1,2,1]
import Test.QuickCheck
property_double_reverse :: [Int] -> Bool
property_double_reverse xs =
reverse (reverse xs) == xs
main = quickCheck property_double_reverse
Theorem double_reverse:
forall {A: Type} (xs: list A),
reverse (reverse xs) = xs.
Proof.
...
Geekiest Computer Game
Theorem deMorgen:
forall x y: bool,
not (x || y) = (not x) && (not y).
Inductive nat: Set :=
| O : nat (* zero *)
| S : nat -> nat (* 1 + nat *)
.
(* 3 = S (S (S O))) *)
Fixpoint sum_to_n (n: nat): nat :=
match n with
| O => O
| (S n') => n + sum_to_n n'
end.
(* sum_to_n 3 = 3 + 2 + 1 + 0 *)
Theorem sum_to_n_shortcut_works:
forall (n: nat),
2 * sum_to_n n = n * (S n).
"the overall payoff in terms of student engagement and performance on exams far exceeded my hopes"
- Using a Proof Assistant to Teach Programming Language Foundations
"Experience shows that many students do not have a very clear view of what is a proof" - Toward the use of a proof assistant to teach mathematics
"Computerized feedback ... can ease the burden on instructors and help students learn more efficiently." - Thesis - Andrew J. Haven (MIT)
Teaching Assistant
Free Book:
Theorem contains_correct:
forall (x: string) (xs: list string),
contains x xs = true <-> Contains x xs.
Proof.
...
Inductive BonusPoints ...: Prop :=
| bonus_points:
Contains you all_contributors ->
BonusPoints you all_contributors.
Theorem lem: forall (A: Prop), A \/ not A.
Proof.
(* Calculus of Inductive Constructions *)
Abort.
Five Stages of Accepting Constructive Mathematics - Andrej Bauer
Theorem proof_by_contradiction:
forall P, not not P -> P.
"I want to prove that this diagram commutes,
lets suppose it doesn't" - no Category Theorist ever
"I need an algorithm, lets suppose it is not computable" - no Computer Scientist ever
Regex
Set of Strings
Derived
Regex
Derived
Set Of Strings
derive
Derive
denote
denote
Proof Assistants
Dependent Types
Dependent Types?
Thank you for providing input for this presentation