test(tests/lean/exp): add example for Steve
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
e4afa3dc43
commit
640ebcc040
1 changed files with 24 additions and 0 deletions
24
tests/lean/exp/arith.lean
Normal file
24
tests/lean/exp/arith.lean
Normal 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)
|
Loading…
Reference in a new issue