lean4-htt/tests/lean/run/exposeNames.lean
Leonardo de Moura b81dd3e7ad
feat: expose_names tactic (#6935)
This PR adds the tactic `expose_names`. It creates a new goal whose
local context has been "exposed" so that every local declaration has a
clear, accessible name. If no local declarations require renaming, the
original goal is returned unchanged.

This tactic will be used to improve `try?`.
2025-02-04 00:53:31 +00:00

48 lines
860 B
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.

/--
info: α : Type u_1
inst : DecidableEq α
inst_1 : Add α
a_1 b_1 : α
h : a_1 = b_1
a_2 b : α
h_1 : b = a_2
a : α
⊢ a = b
-/
#guard_msgs (info) in
example [DecidableEq α] [Add α] (a b : α) (_ : a = b) (a : α) (b : α) (_ : b = a) (a : α) : a = b := by
expose_names
trace_state
sorry
/--
info: α : Sort u_1
a b : α
h_1 : a = b
h_2 : True
h_3 : True False
h : b = a
⊢ b = a
-/
#guard_msgs (info) in
example (a b : α) (h : a = b) (_ : True) (_ : True False) (h : b = a) : b = a := by
expose_names
trace_state
rw [h]
/--
info: α : Sort u_1
a b : α
h : a = b
h_3 : True
h_4 : False
h_1 : True False
h_5 : True
h_2 : b = a
⊢ b = a
-/
#guard_msgs (info) in
example (a b : α) (h : a = b) (_ : True) (_ : False) (h_1 : True False) (_ : True) (h_2 : b = a) : b = a := by
expose_names
trace_state
contradiction