extern crate libsmt;
use libsmt::backends::smtlib2::*;
use libsmt::backends::backend::*;
use libsmt::backends::z3;
use libsmt::theories::{core,integer};
use libsmt::logics::lia::LIA;
fn main() {
let mut z3: z3::Z3 = Default::default();
let mut solver = SMTLib2::new(Some(LIA));
solver.set_logic(&mut z3);
let x = solver.new_var(Some("x"),integer::Sorts::Int);
let y = solver.new_var(Some("y"),integer::Sorts::Int);
let int5 = solver.new_const(integer::OpCodes::Const(5));
let int1 = solver.new_const(integer::OpCodes::Const(1));
let bool1 = solver.new_const(core::OpCodes::Const(true));
let _ = solver.assert(core::OpCodes::And, &[bool1, bool1]);
let (res, check) = solver.solve(&mut z3);
match res {
Ok(..) => {
match check {
SMTRes::Sat(..) => { println!("SAT\n{:?}", check); },
SMTRes::Unsat(..) => { println!("UNSAT\n{:?}", check); },
_ => { unimplemented!(); }
}
},
Err(..) => { println!("\nError in Verification Condition Generation.\n{:?}", check); }
}
}