lean4-htt/tests/lean/run/apply4.lean
Leonardo de Moura 5a2b7348f9 feat(library/tactic/apply_tactic): make apply tactic more robust
See issue #1342

Support for auto_param and opt_param have not been implemented yet.
2017-06-27 10:42:26 -07:00

50 lines
1.1 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

open tactic bool
universe variables u
constant foo {A : Type u} [inhabited A] (a b : A) : a = default A → a = b
example (a b : nat) : a = 0 → a = b :=
by do
intro `H,
apply (expr.const `foo [level.of_nat 0]),
trace_state,
assumption
definition ex : inhabited (nat × nat × bool) :=
by apply_instance
set_option pp.all true
#print ex
set_option pp.all false
example (a b : nat) : a = 0 → a = b :=
by do
intro `H,
apply_core (expr.const `foo [level.of_nat 0]) {approx := ff, new_goals := new_goals.all, instances := ff },
trace_state,
a ← get_local `a,
trace_state,
mk_app `inhabited.mk [a] >>= exact,
trace "--------",
trace_state,
reflexivity
#print "----------------"
set_option pp.all true
example (a b : nat) : a = 0 → a = b :=
by do
intro `H,
foo ← mk_const `foo,
trace foo,
apply foo,
trace_state,
assumption
example (a b : nat) : a = 0 → a = b :=
by do
`[intro],
apply_core (expr.const `foo [level.of_nat 0]) {approx := ff, new_goals := new_goals.all, instances := ff},
`[exact inhabited.mk a],
reflexivity