We currently translate Nat-based expressions in the smt tactic as Ints greater than zero. However this translation is not proof-producing, and it will cause issues for proof reconstruction when the solver has proved something about a positive integer, but the Lean goal is still about natural numbers. We agreed that the way to go here is to have a separate smt_nat_to_int (or something) preprocessing tactic which provably rewrites the goal to talk about positive integers. After running it, the goal would only include integers at which point the core smt translation can just raise an error whenever it encounters a Nat.
See here for a usage of the more general Transfer tactic in Isabelle/HOL.
We currently translate
Nat
-based expressions in thesmt
tactic asInt
s greater than zero. However this translation is not proof-producing, and it will cause issues for proof reconstruction when the solver has proved something about a positive integer, but the Lean goal is still about natural numbers. We agreed that the way to go here is to have a separatesmt_nat_to_int
(or something) preprocessing tactic which provably rewrites the goal to talk about positive integers. After running it, the goal would only include integers at which point the coresmt
translation can just raise an error whenever it encounters aNat
.See here for a usage of the more general Transfer tactic in Isabelle/HOL.