#[cfg(feature = "z3_4_16")]
#[test]
fn test_optimize_translate() {
use z3::ast::Int;
use z3::*;
let x = Int::new_const("x");
let sx = x.synchronized();
let opt = with_z3_config(&Config::new(), || {
let x = sx.recover();
let opt = Optimize::new();
opt.assert(x.ge(0));
opt.assert(x.le(10));
assert_eq!(opt.check(&[]), SatResult::Sat);
opt.synchronized()
})
.recover();
assert_eq!(opt.check(&[]), SatResult::Sat);
opt.assert(x.gt(10));
assert_eq!(opt.check(&[]), SatResult::Unsat);
}
#[cfg(feature = "z3_4_16")]
#[test]
fn test_optimize_clone() {
use z3::ast::Int;
use z3::*;
let x = Int::new_const("x");
let opt = Optimize::new();
opt.assert(x.ge(0));
opt.assert(x.le(10));
opt.minimize(&x);
let cloned = opt.clone();
cloned.assert(x.ge(5));
assert_eq!(opt.check(&[]), SatResult::Sat);
assert_eq!(
opt.get_model()
.unwrap()
.eval(&x, true)
.unwrap()
.as_i64()
.unwrap(),
0
);
assert_eq!(cloned.check(&[]), SatResult::Sat);
assert_eq!(
cloned
.get_model()
.unwrap()
.eval(&x, true)
.unwrap()
.as_i64()
.unwrap(),
5
);
}