Closed kjcjohnson closed 2 years ago
Also fixes #70 in the same "syntactic sugar" spirit. We now allow arbitrary SMT terms in the inputs to semantic relations, and we internally transform those to a fresh variable and a constraint. For example,
($a (E.Sem x y (+ x y)))
gets transformed into a CHC with an extra variable q
such that:
(E.Sem x y q)
(= q (+ x y))
(q
is not the real variable name. It's an auto-generated identifier.)
Fixes #68 by allowing multiple constraints in CHCs. Note that this is just syntactic sugar - the generated CHCs still have a single constraint, but:
true