TheoryOfTable() :
d_table(new Theory*[::CVC4::kind::LAST_KIND]) {
}
+ ~TheoryOfTable(){
+ delete[] d_table;
+ }
Theory* operator[](TNode n) {
Assert(n.getKind() >= 0 && n.getKind() < ::CVC4::kind::LAST_KIND,
/**
* ECAttr is the attribute that maps a node to an equivalence class.
*/
-typedef expr::Attribute<EquivClass, ECData* /*, ECCleanupFcn*/> ECAttr;
+typedef expr::Attribute<EquivClass, ECData*, ECCleanupFcn > ECAttr;
} /* CVC4::theory::uf namespace */
} /* CVC4::theory namespace */
simple.02.cvc \
simple.03.cvc \
simple.04.cvc \
+ euf_simp01.smt \
+ euf_simp02.smt \
+ euf_simp03.smt \
+ euf_simp04.smt \
+ euf_simp05.smt \
+ euf_simp06.smt \
+ euf_simp08.smt \
+ euf_simp09.smt \
+ euf_simp10.smt \
+ euf_simp11.smt \
+ euf_simp12.smt \
+ euf_simp13.smt \
dead_dnd002.smt \
iso_brn001.smt \
SEQ032_size2.smt
--- /dev/null
+
+(benchmark euf_simp1.smt
+:status sat
+:logic QF_UF
+:category { crafted }
+
+:extrafuns ((x U))
+:extrafuns ((y U))
+:extrafuns ((z U))
+:extrafuns ((f U U))
+:extrafuns ((g U U))
+:extrafuns ((H U U U))
+:extrafuns ((J U U U))
+
+
+
+:formula
+(and
+ (= (f x) (f z))
+ (= (g y) (g z))
+ (or (not (= x z)) (not (= y z)))
+ )
+)
\ No newline at end of file
--- /dev/null
+
+(benchmark euf_simp2.smt
+:status unsat
+:logic QF_UF
+:category { crafted }
+
+:extrafuns ((x U))
+:extrafuns ((y U))
+:extrafuns ((z U))
+:extrafuns ((f U U))
+:extrafuns ((g U U))
+:extrafuns ((H U U U))
+:extrafuns ((J U U U))
+
+
+
+:formula
+(and
+ (not (= x y))
+ (= (f x) (f z))
+ (= (g y) (g z))
+ (= (g y) (g z))
+ (= (g y) y)
+ (= (f x) x)
+ (= (f z) z)
+ (= (g z) z)
+ (or (not (= x z)) (not (= y z)))
+ )
+)
\ No newline at end of file
--- /dev/null
+
+(benchmark euf_simp3.smt
+:status unsat
+:logic QF_UF
+:category { crafted }
+
+:extrafuns ((x U))
+:extrafuns ((y U))
+:extrafuns ((z U))
+:extrafuns ((f U U))
+:extrafuns ((g U U))
+:extrafuns ((H U U U))
+:extrafuns ((J U U U))
+
+
+
+:formula
+(and
+ (not (= x y))
+ (= (f (f x)) (f (f (f x))))
+ (= (f (f x)) y)
+ (= (f (f (f (f x)))) z)
+ (= (f x) z)
+ (not (= (f x) y))
+ )
+)
\ No newline at end of file
--- /dev/null
+
+(benchmark euf_simp4.smt
+:status unsat
+:logic QF_UF
+:category { crafted }
+
+:extrafuns ((x U))
+:extrafuns ((y U))
+:extrafuns ((z U))
+:extrafuns ((f U U))
+:extrafuns ((g U U))
+:extrafuns ((H U U U))
+:extrafuns ((J U U U))
+
+
+
+:formula
+(and
+ (= (H x y) (H y x))
+ (or (= x (J z y)) (= y (J z y)))
+ (= (J z y) (f x))
+ (or (= x (f x)) (not (= y (f x))) )
+ (or (not (= x (f x))) (not (= (H x (f x)) (H (f x) x) )) )
+ )
+)
\ No newline at end of file
--- /dev/null
+(benchmark euf_simp5.smt
+
+ :status unsat
+ :difficulty { unknown }
+ :category { crafted }
+ :logic QF_UF
+ :extrasorts (A)
+ :extrafuns ((x A))
+ :extrafuns ((f A A))
+ :formula (let (?cvc_1 (f x)) (let (?cvc_0 (f ?cvc_1)) (not (implies (and (= ?cvc_0 x) (= (f ?cvc_0) x)) (= ?cvc_1 x)))))
+)
--- /dev/null
+(benchmark euf_simp6.smt
+
+ :status unsat
+ :difficulty { unknown }
+ :category { crafted }
+ :logic QF_UF
+ :extrasorts (A)
+ :extrafuns ((x A))
+ :extrafuns ((f A A))
+ :formula (let (?cvc_1 (f x)) (let (?cvc_0 (f ?cvc_1)) (not (implies (and (= ?cvc_0 x) (= (f (f (f ?cvc_0))) x)) (= ?cvc_1 x)))))
+)
--- /dev/null
+(benchmark euf_simp8.smt
+
+ :status unsat
+ :difficulty { unknown }
+ :category { crafted }
+ :logic QF_UF
+ :extrasorts (A)
+ :extrafuns ((x A))
+ :extrafuns ((f A A))
+
+ :formula (let (?cvc_1 (f x)) (let (?cvc_0 (f (f ?cvc_1))) (not (implies (and (= ?cvc_0 x) (= (f (f ?cvc_0)) ?cvc_0)) (= ?cvc_1 x)))))
+
+)
--- /dev/null
+(benchmark euf_simp9.smt
+
+ :status unsat
+ :difficulty { unknown }
+ :category { crafted }
+ :logic QF_UF
+ :extrasorts (A)
+ :extrafuns ((x A))
+ :extrafuns ((f A A))
+ :formula (let (?cvc_1 (f (f x))) (let (?cvc_0 (f (f ?cvc_1))) (not (implies (and (= ?cvc_0 x) (= (f (f ?cvc_0)) x)) (= ?cvc_1 x)))))
+)
--- /dev/null
+(benchmark euf_simp10.smt
+
+ :status unsat
+ :difficulty { unknown }
+ :category { crafted }
+ :logic QF_UF
+ :extrasorts (A)
+ :extrafuns ((x A))
+ :extrafuns ((f A A))
+
+ :formula (let (?cvc_0 (f x)) (let (?cvc_1 (f (f ?cvc_0))) (flet ($cvc_2 (= ?cvc_1 ?cvc_0)) (not (implies (and $cvc_2 (= (f (f ?cvc_1)) ?cvc_0)) $cvc_2)))))
+)
--- /dev/null
+(benchmark euf_simp11.smt
+
+ :status unsat
+ :difficulty { unknown }
+ :category { crafted }
+ :logic QF_UF
+ :extrasorts (A)
+ :extrafuns ((x A))
+ :extrafuns ((f A A))
+
+
+
+
+
+
+ :formula (let (?cvc_0 (f x)) (let (?cvc_2 (f ?cvc_0)) (let (?cvc_1 (f (f ?cvc_2))) (not (implies (and (= ?cvc_1 ?cvc_0) (= (f (f ?cvc_1)) ?cvc_0)) (= ?cvc_2 ?cvc_0))))))
+)
--- /dev/null
+(benchmark euf_simp12.smt
+
+ :status unsat
+ :category { crafted }
+ :logic QF_UF
+ :extrasorts (A)
+ :extrafuns ((x A))
+ :extrafuns ((f A A))
+
+ :formula (let (?cvc_0 (f (f x))) (let (?cvc_2 (f ?cvc_0)) (let (?cvc_3 (f ?cvc_2)) (let (?cvc_1 (f ?cvc_3)) (let (?cvc_4 (f ?cvc_1)) (not (implies (and (= ?cvc_4 ?cvc_0) (= ?cvc_1 ?cvc_2)) (and (= ?cvc_3 ?cvc_0) (= ?cvc_4 ?cvc_3)))))))))
+
+)
--- /dev/null
+(benchmark euf_simp13.smt
+
+ :status unsat
+ :difficulty { unknown }
+ :category { crafted }
+ :logic QF_UF
+ :extrasorts (A)
+ :extrafuns ((x A))
+ :extrafuns ((f A A))
+ :formula
+ (let (?cvc_6 (f x)) (let (?cvc_0 (f ?cvc_6)) (flet ($cvc_1 (= ?cvc_0 x)) (let (?cvc_2 (f ?cvc_0)) (flet ($cvc_3 (= ?cvc_2 x)) (let (?cvc_4 (f ?cvc_2)) (let (?cvc_5 (f ?cvc_4)) (not (implies (or (or (or (and $cvc_1 $cvc_3) (and $cvc_1 (= ?cvc_5 x))) (and $cvc_3 (= ?cvc_4 ?cvc_2))) (and $cvc_3 (= ?cvc_5 ?cvc_2))) (= ?cvc_6 x))))))))))
+)