public void SolverTest()
{
var z3c = new Z3Provider();
var z3s = z3c.MkSolver();
var phi = z3c.MkLe(z3c.MkVar(0, z3c.IntSort), z3c.MkVar(1, z3c.IntSort));
var psi = z3c.MkGt(z3c.MkVar(0, z3c.IntSort), z3c.MkVar(2, z3c.IntSort));
var eq = z3c.MkEq(z3c.MkVar(1, z3c.IntSort), z3c.MkVar(2, z3c.IntSort));
z3s.Push();
z3s.Assert(phi);
z3s.Assert(psi);
z3s.Push();
z3s.Assert(eq);
var isSat1 = z3s.Check();
z3s.Pop();
var isSat2 = z3s.Check();
z3s.Pop();
Assert.IsFalse(isSat1);
Assert.IsTrue(isSat2);
}