Closed strub closed 4 months ago
The nosmt
keyword is going to disappear. This is pure technical debt, it has a lot of ad-hoc variations that have been introduced for specific projets & it has not been used consistently for the last 10 years.
IMO, this is orthogonal to having opaque operators to SMT (but even here, the implementation was intricated).
With lemmas and axioms, one can select whether to use them in smt(...). But with concrete operators, this is not possible. Making [opaque] also apply to smt would be one solution. For my needs that would be perfect.
Discussion is now in #576
Is there a new mechanism that replaces
nosmt
for operators? I was the one that implemented nosmt for operators. It's crucial for some of my work.I thought maybe you changed the semantics of
[opaque]
to subsume this, but I just checked and you didn't. Using abstract operators and adding axioms to give their meanings is a bad replacement fornosmt
for operators.I find it completely natural to give concrete definitions of operators but to want to hide those definitions from the solvers.