lean2/tests/lean/exp/arith.lean

25 lines
826 B
Text
Raw Normal View History

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)