test(tests/lean/exp): add example for Steve

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
Leonardo de Moura 2014-02-03 11:35:40 -08:00
parent e4afa3dc43
commit 640ebcc040

24
tests/lean/exp/arith.lean Normal file
View file

@ -0,0 +1,24 @@
import tactic
using Nat
-- Manual proof using symmetry, transitivity, distributivity and 1*x=x.
theorem T1 (a b c : Nat)
(H1 : a = b + c) -- First hypothesis
(H2 : b = c) -- Second hypothesis
: a = 2*c -- Conclusion
:= calc a = b + c : H1
... = c + c : { H2 }
... = 1*c + 1*c : { symm (mul_onel c) }
... = (1 + 1)*c : symm (distributel 1 1 c)
... = 2*c : refl (2*c)
add_rewrite mul_onel
-- The simplifier can already compress the proof above.
theorem T2 (a b c : Nat)
(H1 : a = b + c) -- first hypothesis
(H2 : b = c) -- second hypothesis
: a = 2*c
:= calc a = 1*c + 1*c : by simp
... = (1 + 1)*c : symm (distributel 1 1 c)
... = 2*c : refl (2*c)