Zulip Chat Archive
Stream: Is there code for X?
Topic: Non terminal tauto?
Siddharth Bhat (Jan 29 2024 at 11:13):
I'd like to have a version of tauto
that simplifies tautologies as much as possible, leaving me with the final goal state. In order to avoid an XY problem, I have some bitvector reasoning:
I start with:
w : Nat
x y : BitVec w
h✝² : ¬y = 0#w
h✝¹ : ¬((¬w = 1 ∧ x = intMin w) ∧ y = -1#w)
h✝ : y = 0#w ∨ x = intMin w ∧ y = -1#w
⊢ False
and I want to end with the state:
w : Nat
x y : BitVec w
h✝¹ : ¬y = 0#w
em✝ : (a : Prop) → Decidable a
left✝ : x = intMin w
right✝ : y = -1#w
h✝ : w = 1
⊢ False
where the subsingleton property of bitvectors of width 1 creates a contradiction between right✝ : y = -1#w
and h✝¹ : ¬y = 0#w
.
Currently, tauto
from the starting goal ends with "unsolved goal <END GOAL STATE>". I want a version of tauto
that leaves me there interactively (ie, a version of tauto
that is not a finishing tactic).
Anand Rao Tadipatri (Jan 29 2024 at 11:33):
It seems like Mathlib.Tactic.Tauto.Config
is currently empty, so it's unlikely that the tactic can be configured to do this.
However, the aesop
tactic has a configuration option to make it non-terminal: aesop (options := { terminal := False })
.
It might be possible to use aesop
as a replacement for tauto
, but it probably depends on the specifics of the use-case.
Siddharth Bhat (Jan 29 2024 at 11:33):
Alternatively. I could PR mathlib adding a config, correct?
Anand Rao Tadipatri (Jan 29 2024 at 11:34):
Yes
Siddharth Bhat (Jan 29 2024 at 11:34):
Great, thanks!
Last updated: May 02 2025 at 03:31 UTC