lean2/tests/lean/run/blast_flat.lean

22 lines
645 B
Text
Raw Normal View History

open nat subtype
definition f (x : nat) (y : {n : nat | n > x}) : nat :=
x + elt_of y
definition f_flat (x : nat) (y : nat) (H : y > x) : nat :=
f x (tag y H)
lemma f_flat_simp [forward] (x : nat) (y : nat) (H : y > x) : f x (tag y H) = f_flat x y H :=
rfl
set_option trace.simplifier true
set_option trace.blast true
set_option blast.strategy "ematch"
example (a b c d : nat) (Ha : c > a) (Hb : d > b) : a = b → c = d → f a (tag c Ha) = f b (tag d Hb) :=
by blast
example (h : nat → nat) (a b c d : nat) (Ha : h c > h a) (Hb : h d > h b)
: h a = h b → c = d → f (h a) (tag (h c) Ha) = f (h b) (tag (h d) Hb) :=
by blast