perform aggressive miniscoping for quantifiers
option elimTautQuant --elim-taut-quant bool :default true
eliminate tautological disjuncts of quantified formulas
-option elimExtArithQuant --elim-ext-arith-quant bool :default true
+option elimExtArithQuant --elim-ext-arith-quant bool :read-write :default true
eliminate extended arithmetic symbols in quantified formulas
option condRewriteQuant --cond-rewrite-quant bool :default true
conditional rewriting of quantified formulas
if( !options::quantDynamicSplit.wasSetByUser() ){
options::quantDynamicSplit.set( quantifiers::QUANT_DSPLIT_MODE_DEFAULT );
}
+ //do not eliminate extended arithmetic symbols from quantified formulas
+ if( !options::elimExtArithQuant.wasSetByUser() ){
+ options::elimExtArithQuant.set( false );
+ }
if( !options::eMatching.wasSetByUser() ){
options::eMatching.set( options::fmfInstEngine() );
}
if( !options::instWhenMode.wasSetByUser() ){
- //instantiate only on last call FIXME: remove?
+ //instantiate only on last call
if( options::eMatching() ){
options::instWhenMode.set( quantifiers::INST_WHEN_LAST_CALL );
}
constr-ground-to.smt2 \
bug-041417-set-options.cvc \
alg202+1.smt2 \
- fmf-fun-no-elim-ext-arith.smt2
+ fmf-fun-no-elim-ext-arith.smt2 \
+ fmf-fun-no-elim-ext-arith2.smt2
EXTRA_DIST = $(TESTS)
--- /dev/null
+; COMMAND-LINE: --fmf-fun --no-check-models
+; EXPECT: sat
+(set-logic UFLIA)
+(set-info :status sat)
+(define-fun-rec int-and ((n Int) (n1 Int) (n2 Int)) Bool (
+ or
+ (= n1 n 0)
+ (= n2 n 0)
+ (
+ and
+ (> n1 0)
+ (> n2 0)
+ (>= n 0)
+ (= (not (= (mod n 2 ) 0)) (and (not (= (mod n1 2 ) 0)) (not (= (mod n2 2) 0))))
+ (int-and (div n 2) (div n1 2) (div n2 2))
+ )
+))
+(declare-const x Int)
+(declare-const y Int)
+(declare-const z Int)
+(assert (= x 1))
+(assert (= y 1))
+(assert (= z 1))
+(assert (int-and z x y))
+(check-sat)