Zulip Chat Archive
Stream: general
Topic: What tactic forces beta reduction in goal or hypothesis
Kevin Sullivan (Oct 10 2018 at 03:52):
Clearly a newbie question -- but I don't see the answer at hand. Sorry to have to ask. E.g., if my current goal is 3 * 3 -= 8, how, in a tactic script, do I force the * expression to be evaluated, yielding 9 = 8 as the new goal?
Simon Hudon (Oct 10 2018 at 03:54):
If you're dealing with number literals, use norm_num
. It works whether you have large numbers or small ones. Reduction will get pretty slow.
Kevin Buzzard (Oct 10 2018 at 06:13):
Because 3 * 3 = 9
is true by definition, if your goal is 3 * 3 = ...
then in tactic mode you can change it to 9 = ...
with the show
tactic.
example (h : 9 = 8) : 3 * 3 = 8 := begin show 9 = 8, exact h, end
Kevin Buzzard (Oct 10 2018 at 06:14):
The funny thing is that this works too:
example (h : 9 = 8) : 3 * 3 = 8 := begin exact h, end
because Lean is quite happy to treat 3 * 3
and 9
as equal objects when attempting to convince itself that the hypothesis really is equal to the goal.
Kevin Sullivan (Oct 10 2018 at 13:40):
The more general case is one where the current goal involves expressions in which functions are applied to arguments. I'm looking for the tactic that simplifies the goal by reducing all of the (or perhaps selected) function application expressions to values.
Patrick Massot (Oct 10 2018 at 13:45):
If you are ready to provide the new goal explicitly then change
will do that
Kevin Sullivan (Oct 10 2018 at 13:51):
I was hoping to be able to just use a "simpl" (or whatever) tactic. Seems that Lean doesn't natively provide such a thing. I find that surprising.
Patrick Massot (Oct 10 2018 at 13:52):
Hold on
Patrick Massot (Oct 10 2018 at 13:56):
you could try something like:
meta def tactic.interactive.beta_red : tactic unit := `[dsimp only [] {beta := tt}] example {α : Type*} (a : α) : (λ x, x) a = a := begin beta_red, refl end
Patrick Massot (Oct 10 2018 at 13:56):
and probably set other config flag to false
Patrick Massot (Oct 10 2018 at 13:56):
I think we already has the same discussion before (or a closely related one)
Kevin Buzzard (Oct 10 2018 at 20:22):
Maybe unfold
is what you're looking for? Do you want to post an example of what you're trying to do?
Last updated: Dec 20 2023 at 11:08 UTC