test(tests/lean): add heterogeneous equality simplification example
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
cbe89ca32e
commit
e2add5c9f2
2 changed files with 50 additions and 0 deletions
34
tests/lean/hsimp.lean
Normal file
34
tests/lean/hsimp.lean
Normal file
|
@ -0,0 +1,34 @@
|
|||
import heq
|
||||
import tactic
|
||||
add_rewrite Nat::add_assoc Nat::add_zeror
|
||||
|
||||
variable vec : Nat → Type
|
||||
variable concat {n m : Nat} (v : vec n) (w : vec m) : vec (n + m)
|
||||
infixl 65 ; : concat
|
||||
axiom concat_assoc {n1 n2 n3 : Nat} (v1 : vec n1) (v2 : vec n2) (v3 : vec n3) :
|
||||
(v1 ; v2) ; v3 = cast (by simp) (v1 ; (v2 ; v3))
|
||||
variable empty : vec 0
|
||||
axiom concat_empty {n : Nat} (v : vec n) :
|
||||
v ; empty = cast (by simp) v
|
||||
|
||||
add_rewrite concat_assoc concat_empty
|
||||
|
||||
(*
|
||||
local t = parse_lean('∀ (n : Nat) (v : vec (n + 0)) (w : vec n), v = w ; empty')
|
||||
print(t)
|
||||
local t2, pr = simplify(t)
|
||||
print("====>")
|
||||
print(t2)
|
||||
get_environment():type_check(pr)
|
||||
*)
|
||||
|
||||
print ""
|
||||
|
||||
(*
|
||||
local t = parse_lean('λ n : Nat, ∃ (v : vec (n + 0)) (w : vec n), v ≠ w ; empty')
|
||||
print(t)
|
||||
local t2, pr = simplify(t)
|
||||
print("====>")
|
||||
print(t2)
|
||||
get_environment():type_check(pr)
|
||||
*)
|
16
tests/lean/hsimp.lean.expected.out
Normal file
16
tests/lean/hsimp.lean.expected.out
Normal file
|
@ -0,0 +1,16 @@
|
|||
Set: pp::colors
|
||||
Set: pp::unicode
|
||||
Imported 'heq'
|
||||
Imported 'tactic'
|
||||
Assumed: vec
|
||||
Assumed: concat
|
||||
Assumed: concat_assoc
|
||||
Assumed: empty
|
||||
Assumed: concat_empty
|
||||
∀ (n : ℕ) (v : vec (n + 0)) (w : vec n), v = w ; empty
|
||||
====>
|
||||
∀ (n : ℕ) (v w : vec n), v = w
|
||||
|
||||
λ n : ℕ, ∃ (v : vec (n + 0)) (w : vec n), v ≠ w ; empty
|
||||
====>
|
||||
λ n : ℕ, ∃ v w : vec n, ¬ v = w
|
Loading…
Add table
Reference in a new issue