lean4-htt/tests/lean/defeq_simp2.lean

37 lines
1.1 KiB
Text

open tactic
constant f (n : nat) : n ≥ 0 → nat
axiom foo1 (n : nat) : n ≥ 0
axiom foo2 (n : nat) : n ≥ 0
axiom foo3 (n : nat) : n ≥ 0
-- by default we dont canonize proofs
example (a b : nat) (H : f a (foo1 a) = f a (foo2 a)) : true :=
by do
s ← simp_lemmas.mk_default,
get_local `H >>= infer_type >>= s^.dsimplify >>= trace,
constructor
constant x1 : nat -- update the environment to force defeq_canonize cache to be reset
example (a b : nat) (H : f a (foo1 a) = f a (foo2 a)) : true :=
by do
s ← simp_lemmas.mk_default,
get_local `H >>= infer_type >>= s^.dsimplify >>= trace,
constructor
constant x2 : nat -- update the environment to force defeq_canonize cache to be reset
example (a b : nat) (H : f a (id (id (id (foo1 a)))) = f a (foo2 a)) : true :=
by do
s ← simp_lemmas.mk_default,
get_local `H >>= infer_type >>= s^.dsimplify >>= trace,
constructor
-- Example that does not work
example (a b : nat) (H : (λ x, f x (id (id (id (foo1 x))))) = (λ x, f x (foo2 x))) : true :=
by do
s ← simp_lemmas.mk_default,
get_local `H >>= infer_type >>= s^.dsimplify >>= trace,
constructor