Skip to content

Commit

Permalink
HolSmt: parse div0 and mod0 in Z3 proofs
Browse files Browse the repository at this point in the history
Unfortunately, these operators don't seem to be documented.

However, from a quick reading of the Z3 source code, it seems that
they seem to be similar to `div` and `mod`, but they seem to be used
to indicate that Z3 can't prove that the divisor is non-zero.
  • Loading branch information
someplaceguy authored and mn200 committed Apr 9, 2024
1 parent a2f47a9 commit 8d6e54b
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/HolSmt/SmtLib_Theories.sml
Original file line number Diff line number Diff line change
Expand Up @@ -337,8 +337,12 @@ in
("*", leftassoc intSyntax.mk_mult),
("div", leftassoc (fn (t1, t2) => Term.mk_comb (Term.mk_comb
(Term.prim_mk_const {Thy="HolSmt", Name="smtdiv"}, t1), t2))),
("div0", leftassoc (fn (t1, t2) => Term.mk_comb (Term.mk_comb
(Term.prim_mk_const {Thy="HolSmt", Name="smtdiv"}, t1), t2))),
("mod", leftassoc (fn (t1, t2) => Term.mk_comb (Term.mk_comb
(Term.prim_mk_const {Thy="HolSmt", Name="smtmod"}, t1), t2))),
("mod0", leftassoc (fn (t1, t2) => Term.mk_comb (Term.mk_comb
(Term.prim_mk_const {Thy="HolSmt", Name="smtmod"}, t1), t2))),
("abs", K_zero_one intSyntax.mk_absval),
("<=", chainable intSyntax.mk_leq),
("<", chainable intSyntax.mk_less),
Expand Down

0 comments on commit 8d6e54b

Please sign in to comment.