lean2/tests/lean/exp/arith.lean
Leonardo de Moura 640ebcc040 test(tests/lean/exp): add example for Steve
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-02-03 11:35:40 -08:00

24 lines
826 B
Text

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)