| | | |
| | | ``Term t = solver.mkTerm(Kind::APPLY_SELECTOR, {s, t});`` |
+----------------------+----------------------------------------------+------------------------------------------------------------------------------------+
-| Relation Sort | ``(Set (Tuple <Sort_1>, ..., <Sort_n>))`` | ``Sort s = solver.mkSetSort(cvc5::Sort tupleSort);`` |
+| Relation Sort | ``(Relation <Sort_1>, ..., <Sort_n>)`` | ``Sort s = solver.mkSetSort(cvc5::Sort tupleSort);`` |
+| | | |
+| | which is a syntax sugar for | |
+| | | |
+| | ``(Set (Tuple <Sort_1>, ..., <Sort_n>))`` | |
+----------------------+----------------------------------------------+------------------------------------------------------------------------------------+
| Constants | ``(declare-const X (Set (Tuple Int Int)`` | ``Sort s = solver.mkSetSort(solver.mkTupleSort({s_int, s_int});`` |
| | | |
// (Tuple Person)
Sort tupleArity1 = solver.mkTupleSort({personSort});
- // (Set (Tuple Person))
+ // (Relation Person)
Sort relationArity1 = solver.mkSetSort(tupleArity1);
// (Tuple Person Person)
Sort tupleArity2 = solver.mkTupleSort({personSort, personSort});
- // (Set (Tuple Person Person))
+ // (Relation Person Person)
Sort relationArity2 = solver.mkSetSort(tupleArity2);
// empty set
Term isEmpty1 = solver.mkTerm(EQUAL, {males, emptySetTerm});
Term isEmpty2 = solver.mkTerm(EQUAL, {females, emptySetTerm});
- // (assert (= people (as set.universe (Set (Tuple Person)))))
+ // (assert (= people (as set.universe (Relation Person))))
Term peopleAreTheUniverse = solver.mkTerm(EQUAL, {people, universeSet});
- // (assert (not (= males (as set.empty (Set (Tuple Person))))))
+ // (assert (not (= males (as set.empty (Relation Person)))))
Term maleSetIsNotEmpty = solver.mkTerm(NOT, {isEmpty1});
- // (assert (not (= females (as set.empty (Set (Tuple Person))))))
+ // (assert (not (= females (as set.empty (Relation Person)))))
Term femaleSetIsNotEmpty = solver.mkTerm(NOT, {isEmpty2});
// (assert (= (set.inter males females)
- // (as set.empty (Set (Tuple Person)))))
+ // (as set.empty (Relation Person))))
Term malesFemalesIntersection = solver.mkTerm(SET_INTER, {males, females});
Term malesAndFemalesAreDisjoint =
solver.mkTerm(EQUAL, {malesFemalesIntersection, emptySetTerm});
- // (assert (not (= father (as set.empty (Set (Tuple Person Person))))))
- // (assert (not (= mother (as set.empty (Set (Tuple Person Person))))))
+ // (assert (not (= father (as set.empty (Relation Person Person)))))
+ // (assert (not (= mother (as set.empty (Relation Person Person)))))
Term isEmpty3 = solver.mkTerm(EQUAL, {father, emptyRelationTerm});
Term isEmpty4 = solver.mkTerm(EQUAL, {mother, emptyRelationTerm});
Term fatherIsNotEmpty = solver.mkTerm(NOT, {isEmpty3});
// (Tuple Person)
Sort tupleArity1 = solver.mkTupleSort(new Sort[] {personSort});
- // (Set (Tuple Person))
+ // (Relation Person)
Sort relationArity1 = solver.mkSetSort(tupleArity1);
// (Tuple Person Person)
Sort tupleArity2 = solver.mkTupleSort(new Sort[] {personSort, personSort});
- // (Set (Tuple Person Person))
+ // (Relation Person Person)
Sort relationArity2 = solver.mkSetSort(tupleArity2);
// empty set
Term isEmpty1 = solver.mkTerm(EQUAL, males, emptySetTerm);
Term isEmpty2 = solver.mkTerm(EQUAL, females, emptySetTerm);
- // (assert (= people (as set.universe (Set (Tuple Person)))))
+ // (assert (= people (as set.universe (Relation Person))))
Term peopleAreTheUniverse = solver.mkTerm(EQUAL, people, universeSet);
- // (assert (not (= males (as set.empty (Set (Tuple Person))))))
+ // (assert (not (= males (as set.empty (Relation Person)))))
Term maleSetIsNotEmpty = solver.mkTerm(NOT, isEmpty1);
- // (assert (not (= females (as set.empty (Set (Tuple Person))))))
+ // (assert (not (= females (as set.empty (Relation Person)))))
Term femaleSetIsNotEmpty = solver.mkTerm(NOT, isEmpty2);
// (assert (= (set.inter males females)
- // (as set.empty (Set (Tuple Person)))))
+ // (as set.empty (Relation Person))))
Term malesFemalesIntersection = solver.mkTerm(SET_INTER, males, females);
Term malesAndFemalesAreDisjoint =
solver.mkTerm(EQUAL, malesFemalesIntersection, emptySetTerm);
- // (assert (not (= father (as set.empty (Set (Tuple Person Person))))))
- // (assert (not (= mother (as set.empty (Set (Tuple Person Person))))))
+ // (assert (not (= father (as set.empty (Relation Person Person)))))
+ // (assert (not (= mother (as set.empty (Relation Person Person)))))
Term isEmpty3 = solver.mkTerm(EQUAL, father, emptyRelationTerm);
Term isEmpty4 = solver.mkTerm(EQUAL, mother, emptyRelationTerm);
Term fatherIsNotEmpty = solver.mkTerm(NOT, isEmpty3);
// (Tuple Person)
Sort tupleArity1 = solver.mkTupleSort(new Sort[] {personSort});
- // (Set (Tuple Person))
+ // (Relation Person)
Sort relationArity1 = solver.mkSetSort(tupleArity1);
// (Tuple Person Person)
Sort tupleArity2 = solver.mkTupleSort(new Sort[] {personSort, personSort});
- // (Set (Tuple Person Person))
+ // (Relation Person Person)
Sort relationArity2 = solver.mkSetSort(tupleArity2);
// empty set
Term isEmpty1 = solver.mkTerm(EQUAL, males, emptySetTerm);
Term isEmpty2 = solver.mkTerm(EQUAL, females, emptySetTerm);
- // (assert (= people (as set.universe (Set (Tuple Person)))))
+ // (assert (= people (as set.universe (Relation Person))))
Term peopleAreTheUniverse = solver.mkTerm(EQUAL, people, universeSet);
- // (assert (not (= males (as set.empty (Set (Tuple Person))))))
+ // (assert (not (= males (as set.empty (Relation Person)))))
Term maleSetIsNotEmpty = solver.mkTerm(NOT, isEmpty1);
- // (assert (not (= females (as set.empty (Set (Tuple Person))))))
+ // (assert (not (= females (as set.empty (Relation Person)))))
Term femaleSetIsNotEmpty = solver.mkTerm(NOT, isEmpty2);
// (assert (= (set.inter males females) (as set.empty (Set (Tuple
Term malesFemalesIntersection = solver.mkTerm(SET_INTER, males, females);
Term malesAndFemalesAreDisjoint = solver.mkTerm(EQUAL, malesFemalesIntersection, emptySetTerm);
- // (assert (not (= father (as set.empty (Set (Tuple Person Person))))))
- // (assert (not (= mother (as set.empty (Set (Tuple Person Person))))))
+ // (assert (not (= father (as set.empty (Relation Person Person)))))
+ // (assert (not (= mother (as set.empty (Relation Person Person)))))
Term isEmpty3 = solver.mkTerm(EQUAL, father, emptyRelationTerm);
Term isEmpty4 = solver.mkTerm(EQUAL, mother, emptyRelationTerm);
Term fatherIsNotEmpty = solver.mkTerm(NOT, isEmpty3);
# (Tuple Person)
tupleArity1 = solver.mkTupleSort(personSort)
- # (Set (Tuple Person))
+ # (Relation Person)
relationArity1 = solver.mkSetSort(tupleArity1)
# (Tuple Person Person)
tupleArity2 = solver.mkTupleSort(personSort, personSort)
- # (Set (Tuple Person Person))
+ # (Relation Person Person)
relationArity2 = solver.mkSetSort(tupleArity2)
# empty set
isEmpty1 = solver.mkTerm(Kind.EQUAL, males, emptySetTerm)
isEmpty2 = solver.mkTerm(Kind.EQUAL, females, emptySetTerm)
- # (assert (= people (as set.universe (Set (Tuple Person)))))
+ # (assert (= people (as set.universe (Relation Person))))
peopleAreTheUniverse = solver.mkTerm(Kind.EQUAL, people, universeSet)
- # (assert (not (= males (as set.empty (Set (Tuple Person))))))
+ # (assert (not (= males (as set.empty (Relation Person)))))
maleSetIsNotEmpty = solver.mkTerm(Kind.NOT, isEmpty1)
- # (assert (not (= females (as set.empty (Set (Tuple Person))))))
+ # (assert (not (= females (as set.empty (Relation Person)))))
femaleSetIsNotEmpty = solver.mkTerm(Kind.NOT, isEmpty2)
# (assert (= (set.inter males females)
- # (as set.empty (Set (Tuple Person)))))
+ # (as set.empty (Relation Person))))
malesFemalesIntersection = solver.mkTerm(Kind.SET_INTER, males, females)
malesAndFemalesAreDisjoint = \
solver.mkTerm(Kind.EQUAL, malesFemalesIntersection, emptySetTerm)
- # (assert (not (= father (as set.empty (Set (Tuple Person Person))))))
- # (assert (not (= mother (as set.empty (Set (Tuple Person Person))))))
+ # (assert (not (= father (as set.empty (Relation Person Person)))))
+ # (assert (not (= mother (as set.empty (Relation Person Person)))))
isEmpty3 = solver.mkTerm(Kind.EQUAL, father, emptyRelationTerm)
isEmpty4 = solver.mkTerm(Kind.EQUAL, mother, emptyRelationTerm)
fatherIsNotEmpty = solver.mkTerm(Kind.NOT, isEmpty3)
(declare-sort Person 0)
-(declare-fun people () (Set (Tuple Person)))
-(declare-fun males () (Set (Tuple Person)))
-(declare-fun females () (Set (Tuple Person)))
-(declare-fun father () (Set (Tuple Person Person)))
-(declare-fun mother () (Set (Tuple Person Person)))
-(declare-fun parent () (Set (Tuple Person Person)))
-(declare-fun ancestor () (Set (Tuple Person Person)))
-(declare-fun descendant () (Set (Tuple Person Person)))
+(declare-fun people () (Relation Person))
+(declare-fun males () (Relation Person))
+(declare-fun females () (Relation Person))
+(declare-fun father () (Relation Person Person))
+(declare-fun mother () (Relation Person Person))
+(declare-fun parent () (Relation Person Person))
+(declare-fun ancestor () (Relation Person Person))
+(declare-fun descendant () (Relation Person Person))
-(assert (= people (as set.universe (Set (Tuple Person)))))
-(assert (not (= males (as set.empty (Set (Tuple Person))))))
-(assert (not (= females (as set.empty (Set (Tuple Person))))))
-(assert (= (set.inter males females) (as set.empty (Set (Tuple Person)))))
+(assert (= people (as set.universe (Relation Person))))
+(assert (not (= males (as set.empty (Relation Person)))))
+(assert (not (= females (as set.empty (Relation Person)))))
+(assert (= (set.inter males females) (as set.empty (Relation Person))))
; father relation is not empty
-(assert (not (= father (as set.empty (Set (Tuple Person Person))))))
+(assert (not (= father (as set.empty (Relation Person Person)))))
; mother relation is not empty
-(assert (not (= mother (as set.empty (Set (Tuple Person Person))))))
+(assert (not (= mother (as set.empty (Relation Person Person)))))
; fathers are males
(assert (set.subset (rel.join father people) males))
; mothers are females
t = SOLVER->mkSequenceSort( args[0] );
} else if (name == "Tuple" && !PARSER_STATE->strictModeEnabled()) {
t = SOLVER->mkTupleSort(args);
+ } else if (name == "Relation" && !PARSER_STATE->strictModeEnabled()) {
+ cvc5::Sort tupleSort = SOLVER->mkTupleSort(args);
+ t = SOLVER->mkSetSort(tupleSort);
+ } else if (name == "Table" && !PARSER_STATE->strictModeEnabled()) {
+ cvc5::Sort tupleSort = SOLVER->mkTupleSort(args);
+ t = SOLVER->mkBagSort(tupleSort);
} else {
t = PARSER_STATE->getSort(name, args);
}
* compute the transitive closure of a binary relation
* @param members constant nodes of type (Tuple E E) that are known to in the
* relation rel
- * @param rel a binary relation of type (Set (Tuple E E))
+ * @param rel a binary relation of type (Relation E E)
* @pre all members need to be constants
* @return the transitive closure of the relation
*/
/**
* add all pairs (a, c) to the transitive closures where c is reachable from b
* in the transitive relation in a depth first search manner.
- * @param rel a binary relation of type (Set (Tuple E E))
+ * @param rel a binary relation of type (Relation E E)
* @param members constant nodes of type (Tuple E E) that are known to be in
* the relation rel
* @param a a node of type E where (a,b) is an element in the transitive
/**
* construct a pair from two elements
- * @param rel a node of type (Set (Tuple E E))
+ * @param rel a node of type (Relation E E)
* @param a a node of type E
* @param b a node of type E
* @return a tuple (tuple a b)
/**
* Type rule for binary operators (rel.join, rel.product) to check
* if the two arguments are relations (set of tuples).
- * For arguments A of type (Set (Tuple A1 ... Am)) and B of type
- * (Set (Tuple B1 ... Bn)):
- * - (rel.product A B): it computes the type (Set (Tuple (A1 ... Am B1 ... Bn)).
+ * For arguments A of type (Relation A1 ... Am) and B of type
+ * (Relation B1 ... Bn):
+ * - (rel.product A B): it computes the type (Relation (A1 ... Am B1 ... Bn).
* - (rel.join A B) it checks that m, n > 1 and Am = B1 and computes the type
- * (Set (Tuple (A1 ... Am-1 B2 ... Bn)).
+ * (Relation (A1 ... Am-1 B2 ... Bn).
*/
struct RelBinaryOperatorTypeRule
{
/**
* Type rule for unary operator (rel.transpose A) to check that A is a relation
- * (set of Tuples). For an argument A of type (Set (Tuple A1 ... An))
- * it reveres A1 ... An and computes the type (Set (Tuple An ... A1)).
+ * (set of Tuples). For an argument A of type (Relation A1 ... An)
+ * it reveres A1 ... An and computes the type (Relation An ... A1).
*/
struct RelTransposeTypeRule
{
/**
* Type rule for unary operator (rel.tclosure A) to check that A is a binary
- * relation of type (Set (Tuple T T)), where T is a type
+ * relation of type (Relation T T), where T is a type
*/
struct RelTransClosureTypeRule
{
/**
* Type rule for operator (rel.join_image A c) that checks A is a binary
- * relation of type (Set (Tuple T T)), where T is a type, and c is an integer
+ * relation of type (Relation T T), where T is a type, and c is an integer
* term (in fact c should be a non-negative constant, otherwise a logic
* exception is thrown TheorySetsPrivate::preRegisterTerm).
*/
/**
* Type rule for unary operator (rel.iden A) to check that A is a unary relation
- * of type (Set (Tuple T)) and computes the type (Set (Tuple T T)) for the
+ * of type (Relation T) and computes the type (Relation T T) for the
* identity
*/
struct RelIdenTypeRule
-; EXPECT: sat\r
+; EXPECT: sat
(set-logic ALL)
(set-option :incremental false)
(set-option :fmf-bound true)
(set-option :sets-ext true)
(declare-sort Atom 0)
-(declare-fun REAL_UNIVERSE () (Set (Tuple Real)))
-(declare-fun ATOM_UNIVERSE () (Set (Tuple Atom)))
-(assert (= REAL_UNIVERSE (as set.universe (Set (Tuple Real)))))
-(assert (= ATOM_UNIVERSE (as set.universe (Set (Tuple Atom)))))
-(declare-fun levelVal () (Set (Tuple Atom Real)))
+(declare-fun REAL_UNIVERSE () (Relation Real))
+(declare-fun ATOM_UNIVERSE () (Relation Atom))
+(assert (= REAL_UNIVERSE (as set.universe (Relation Real))))
+(assert (= ATOM_UNIVERSE (as set.universe (Relation Atom))))
+(declare-fun levelVal () (Relation Atom Real))
(assert (forall ((s Atom) (v1 Real) (v2 Real)) (=> (and (and (set.member (tuple s) ATOM_UNIVERSE) (set.member (tuple v1) REAL_UNIVERSE)) (set.member (tuple v2) REAL_UNIVERSE)) (=> (and (set.member (tuple s v1) levelVal) (set.member (tuple s v2) levelVal)) (= v1 v2)))))
(check-sat)
-(declare-fun Target () (Set (Tuple Atom)))
-(declare-fun Name () (Set (Tuple Atom)))
-(declare-fun Addr () (Set (Tuple Atom)))
-(declare-fun Book () (Set (Tuple Atom)))
-(declare-fun names () (Set (Tuple Atom Atom)))
-(declare-fun addr () (Set (Tuple Atom Atom Atom)))
+(declare-fun Target () (Relation Atom))
+(declare-fun Name () (Relation Atom))
+(declare-fun Addr () (Relation Atom))
+(declare-fun Book () (Relation Atom))
+(declare-fun names () (Relation Atom Atom))
+(declare-fun addr () (Relation Atom Atom Atom))
(declare-fun b1 () Atom)
(declare-fun b1_tup () (Tuple Atom))
(assert (= b1_tup (tuple b1)))
(assert (set.member t_tup Target))
(assert (set.subset (rel.join (rel.join Book addr) Target) Name))
(assert (set.subset (rel.join Book names) Name))
-(assert (= (set.inter Name Addr) (as set.empty (Set (Tuple Atom)))))
-(assert (= (rel.join (set.singleton n_tup) (rel.join (set.singleton b1_tup) addr)) (as set.empty (Set (Tuple Atom)))))
+(assert (= (set.inter Name Addr) (as set.empty (Relation Atom))))
+(assert (= (rel.join (set.singleton n_tup) (rel.join (set.singleton b1_tup) addr)) (as set.empty (Relation Atom))))
(assert (let ((_let_1 (set.singleton n_tup))) (= (rel.join _let_1 (rel.join (set.singleton b2_tup) addr)) (set.union (rel.join _let_1 (rel.join (set.singleton b1_tup) addr)) (set.singleton t_tup)))))
(assert (let ((_let_1 (set.singleton n_tup))) (= (rel.join _let_1 (rel.join (set.singleton b3_tup) addr)) (set.minus (rel.join _let_1 (rel.join (set.singleton b2_tup) addr)) (set.singleton t_tup)))))
(assert (let ((_let_1 (set.singleton n_tup))) (not (= (rel.join _let_1 (rel.join (set.singleton b1_tup) addr)) (rel.join _let_1 (rel.join (set.singleton b3_tup) addr))))))
-; EXPECT: unsat\r
+; EXPECT: unsat
(set-option :incremental false)
(set-option :sets-ext true)
(set-logic ALL)
(declare-sort Atom 0)
-(declare-fun a () (Set (Tuple Atom)))
-(declare-fun b () (Set (Tuple Atom Atom)))
+(declare-fun a () (Relation Atom))
+(declare-fun b () (Relation Atom Atom))
(declare-fun x () Atom)
(declare-fun y () Atom)
(assert (not (= x y)))
(assert (set.member (tuple y) a))
(assert (set.member (tuple x y) b))
-(assert (= (as set.universe (Set (Tuple Atom Atom))) (rel.product (as set.universe (Set (Tuple Atom))) (as set.universe (Set (Tuple Atom))))))
-(declare-fun u () (Set (Tuple Atom Atom)))
-(assert (= u (as set.universe (Set (Tuple Atom Atom)))))
+(assert (= (as set.universe (Relation Atom Atom)) (rel.product (as set.universe (Relation Atom)) (as set.universe (Relation Atom)))))
+(declare-fun u () (Relation Atom Atom))
+(assert (= u (as set.universe (Relation Atom Atom))))
(assert (not (set.member (tuple x y) u)))
(check-sat)
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
(assert (> (set.card (rel.transpose x)) 0))
(check-sat)
(set-logic ALL)
(declare-sort Atom 0)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun id () (Set (Tuple Int Int)))
-(declare-fun t () (Set (Tuple Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun id () (Relation Int Int))
+(declare-fun t () (Relation Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-logic ALL)
(declare-sort Atom 0)
-(declare-fun x () (Set (Tuple Atom Atom)))
-(declare-fun t () (Set (Tuple Atom)))
-(declare-fun univ () (Set (Tuple Atom)))
+(declare-fun x () (Relation Atom Atom))
+(declare-fun t () (Relation Atom))
+(declare-fun univ () (Relation Atom))
(declare-fun a () Atom)
(declare-fun b () Atom)
(declare-fun c () Atom)
(declare-fun d () Atom)
-(assert (= univ (as set.universe (Set (Tuple Atom)))))
+(assert (= univ (as set.universe (Relation Atom))))
(assert (set.member (tuple a b) x))
(assert (set.member (tuple c d) x))
(assert (not (= a b)))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(declare-datatypes ((unit 0)) (((u))))
-(declare-fun w () (Set (Tuple Int unit)))
-(declare-fun z () (Set (Tuple unit Int)))
+(declare-fun w () (Relation Int unit))
+(declare-fun z () (Relation unit Int))
(assert (= (rel.join x y) (rel.join w z)))
(assert (set.member (tuple 0 1) (rel.join x y)))
(assert (set.member (tuple 0 u) w))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(declare-datatypes ((unit 0)) (((u))))
-(declare-fun w () (Set (Tuple Int unit)))
-(declare-fun z () (Set (Tuple unit Int)))
+(declare-fun w () (Relation Int unit))
+(declare-fun z () (Relation unit Int))
(assert (= (rel.join x y) (rel.join w z)))
(assert (set.member (tuple 0 1) (rel.join x y)))
(assert (set.member (tuple 0 u) w))
(set-logic ALL)
(set-option :sets-ext true)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
-(declare-fun t () (Set (Tuple Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
+(declare-fun t () (Relation Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-option :incremental false)
(set-logic QF_UFDTFS)
(declare-datatypes ((Atom 0)) (((atom))))
-(declare-fun t () (Set (Tuple Atom Atom)))
+(declare-fun t () (Relation Atom Atom))
(declare-fun b () Atom)
(declare-fun a () Atom)
(declare-fun c () Atom)
-(declare-fun J ((Set (Tuple Atom)) (Set (Tuple Atom Atom))) (Set (Tuple Atom)))
-(declare-fun T ((Set (Tuple Atom Atom))) (Set (Tuple Atom Atom)))
+(declare-fun J ((Relation Atom) (Relation Atom Atom)) (Relation Atom))
+(declare-fun T ((Relation Atom Atom)) (Relation Atom Atom))
(assert (let ((_let_1 (set.singleton (tuple a)))) (= (rel.join _let_1 t) (J _let_1 t))))
(assert (let ((_let_1 (set.singleton (tuple c)))) (not (= (rel.join _let_1 (rel.tclosure t)) _let_1))))
(check-sat)
(set-logic ALL)
(set-info :status sat)
(declare-fun d () (Tuple Int Int))
-(assert (= (as set.empty (Set (Tuple Int Int))) (rel.join (set.singleton (tuple 1 0)) (set.singleton d))))
+(assert (= (as set.empty (Relation Int Int)) (rel.join (set.singleton (tuple 1 0)) (set.singleton d))))
(check-sat)
(set-logic ALL)
(set-info :status sat)
-(declare-fun a () (Set (Tuple Int Int)))
-(declare-fun b () (Set (Tuple Int Int)))
+(declare-fun a () (Relation Int Int))
+(declare-fun b () (Relation Int Int))
(declare-fun c () Int)
(declare-fun d () (Tuple Int Int))
(assert (and (= b (set.singleton (tuple 1 0))) (= a (rel.join b (rel.transpose a))) (= a (rel.join b (rel.tclosure a))) (= a (rel.join b (set.singleton d)))))
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int)))
-(declare-fun z () (Set (Tuple Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int))
+(declare-fun z () (Relation Int))
(declare-fun b () (Tuple Int Int))
(assert (= b (tuple 2 1)))
(assert (set.member b x))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun z () (Set Int))
(declare-fun f () Int)
(declare-fun g () Int)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
-(declare-fun w () (Set (Tuple Int)))
-(declare-fun z () (Set (Tuple Int)))
-(declare-fun r2 () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
+(declare-fun w () (Relation Int))
+(declare-fun z () (Relation Int))
+(declare-fun r2 () (Relation Int Int))
(declare-fun a () (Tuple Int Int))
(assert (= a (tuple 3 1)))
(assert (set.member a x))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
(declare-fun e () (Tuple Int Int))
(assert (= e (tuple 4 4)))
(assert (set.member e x))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int Int))
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int Int))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(assert (set.member (tuple 7 1) x))
(assert (set.member (tuple 2 3) x))
(assert (set.member (tuple 7 3) y))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(assert (= x (set.union (set.singleton (tuple 1 2)) (set.singleton (tuple 3 4)))))
(assert (= y (rel.join x (set.union (set.singleton (tuple 2 1)) (set.singleton (tuple 4 3))))))
(assert (not (set.member (tuple 1 1) y)))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
-(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
+(declare-fun w () (Relation Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int Int)))
-(declare-fun y () (Set (Tuple Int Int Int)))
-(declare-fun r () (Set (Tuple Int Int Int)))
+(declare-fun x () (Relation Int Int Int))
+(declare-fun y () (Relation Int Int Int))
+(declare-fun r () (Relation Int Int Int))
(declare-fun z () (Tuple Int Int Int))
(assert (= z (tuple 1 2 3)))
(declare-fun zt () (Tuple Int Int Int))
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int Int)))
-(declare-fun y () (Set (Tuple Int Int Int)))
-(declare-fun r () (Set (Tuple Int Int Int Int Int Int)))
+(declare-fun x () (Relation Int Int Int))
+(declare-fun y () (Relation Int Int Int))
+(declare-fun r () (Relation Int Int Int Int Int Int))
(declare-fun z () (Tuple Int Int Int))
(assert (= z (tuple 1 2 3)))
(declare-fun zt () (Tuple Int Int Int))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun f () Int)
(declare-fun d () (Tuple Int Int))
(assert (= d (tuple f 3)))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun d () (Tuple Int Int))
(assert (set.member d y))
(declare-fun a () (Tuple Int Int))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun d () (Tuple Int Int))
(assert (= d (tuple 1 3)))
(assert (set.member (tuple 1 3) y))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun f () Int)
(declare-fun d () (Tuple Int Int))
(assert (set.member d y))
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int Int Int))
(assert (set.member (tuple 2 3) x))
(assert (set.member (tuple 5 3) x))
(assert (set.member (tuple 3 9) x))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(declare-fun e () Int)
(declare-fun a () (Tuple Int Int))
(assert (= a (tuple 1 e)))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(declare-fun a () Int)
(declare-fun b () Int)
(declare-fun c () Int)
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(declare-fun a () Int)
(declare-fun b () Int)
(declare-fun c () Int)
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(assert (= y (rel.join (rel.tclosure x) x)))
(assert (set.member (tuple 1 2) (rel.join (rel.join x x) x)))
(assert (not (set.subset y (rel.tclosure x))))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(assert (set.member (tuple 2 2) (rel.tclosure x)))
-(assert (= x (as set.empty (Set (Tuple Int Int)))))
+(assert (= x (as set.empty (Relation Int Int))))
(check-sat)
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
(assert (set.member (tuple 1 3) x))
(assert (or (set.member (tuple 2 3) z) (set.member (tuple 2 1) z)))
(assert (= y (rel.transpose x)))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun b () (Tuple Int Int))
(assert (= b (tuple 1 7)))
(declare-fun c () (Tuple Int Int))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(assert (set.member (tuple 7 1) x))
(assert (set.member (tuple 2 3) x))
(assert (set.member (tuple 7 3) y))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun w () (Set (Tuple Int Int)))
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun w () (Relation Int Int))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(assert (set.member (tuple 7 1) x))
(assert (set.member (tuple 2 3) x))
(assert (set.member (tuple 7 3) y))
(declare-fun a () (Tuple Int Int))
(assert (= a (tuple 4 1)))
(assert (not (set.member a (rel.transpose r))))
-(declare-fun zz () (Set (Tuple Int Int)))
+(declare-fun zz () (Relation Int Int))
(assert (= zz (rel.join (rel.transpose x) y)))
(assert (not (set.member (tuple 1 3) w)))
(assert (not (set.member (tuple 1 3) (set.union w zz))))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(assert (= x (set.union (set.singleton (tuple 1 7)) (set.singleton (tuple 2 3)))))
(declare-fun d () (Tuple Int Int))
(assert (= d (tuple 7 3)))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun w () (Set (Tuple Int Int)))
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun w () (Relation Int Int))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun t () Int)
(declare-fun u () Int)
(assert (and (< 4 t) (< t 6)))
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
+(declare-fun r () (Relation Int Int Int Int))
(assert (set.member (tuple 2 1) x))
(assert (set.member (tuple 2 3) x))
(assert (set.member (tuple 2 2) y))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun w () (Set (Tuple Int Int)))
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun w () (Relation Int Int))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun t () Int)
(declare-fun u () Int)
(assert (and (< 4 t) (< t 6)))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(declare-fun a () Int)
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int Int)))
-(declare-fun y () (Set (Tuple Int Int Int)))
+(declare-fun x () (Relation Int Int Int))
+(declare-fun y () (Relation Int Int Int))
(declare-fun z () (Tuple Int Int Int))
(assert (= z (tuple 1 2 3)))
(declare-fun zt () (Tuple Int Int Int))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int Int)))
-(declare-fun y () (Set (Tuple Int Int Int)))
+(declare-fun x () (Relation Int Int Int))
+(declare-fun y () (Relation Int Int Int))
(declare-fun z () (Tuple Int Int Int))
(declare-fun a () Int)
(assert (= z (tuple 1 2 a)))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(assert (set.member z x))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(assert (= x y))
(assert (not (= (rel.transpose x) (rel.transpose y))))
(check-sat)
(set-logic ALL)
(set-info :status sat)
-(declare-fun r1 () (Set (Tuple String Int)))
-(declare-fun r2 () (Set (Tuple Int String)))
-(declare-fun r () (Set (Tuple String String)))
-(declare-fun s () (Set (Tuple String String)))
-(declare-fun t () (Set (Tuple String Int Int String)))
-(declare-fun lt1 () (Set (Tuple Int Int)))
-(declare-fun lt2 () (Set (Tuple Int Int)))
+(declare-fun r1 () (Relation String Int))
+(declare-fun r2 () (Relation Int String))
+(declare-fun r () (Relation String String))
+(declare-fun s () (Relation String String))
+(declare-fun t () (Relation String Int Int String))
+(declare-fun lt1 () (Relation Int Int))
+(declare-fun lt2 () (Relation Int Int))
(declare-fun i () Int)
(assert (= r1 (set.insert (tuple "a" 1) (tuple "b" 2) (tuple "c" 3) (set.singleton (tuple "d" 4)))))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun w () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun w () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
(declare-fun x () Int)
(declare-fun y () Int)
(assert (set.member (tuple 1 x) w))
(set-option :sets-ext true)
(set-logic ALL)
(declare-sort Atom 0)
-(declare-fun a () (Set (Tuple Atom)))
-(declare-fun b () (Set (Tuple Atom)))
+(declare-fun a () (Relation Atom))
+(declare-fun b () (Relation Atom))
(assert (= a (set.complement b)))
(check-sat)
(set-option :sets-ext true)
(set-logic ALL)
(declare-sort Atom 0)
-(declare-fun C32 () (Set (Tuple Atom)))
-(declare-fun C2 () (Set (Tuple Atom)))
-(declare-fun C4 () (Set (Tuple Atom)))
-(declare-fun ATOM_UNIV () (Set (Tuple Atom)))
+(declare-fun C32 () (Relation Atom))
+(declare-fun C2 () (Relation Atom))
+(declare-fun C4 () (Relation Atom))
+(declare-fun ATOM_UNIV () (Relation Atom))
(declare-fun V1 () Atom)
(assert (= C32 (set.inter (set.complement C2) (set.complement C4))))
(assert (set.member (tuple V1) (set.complement C32)))
-(assert (= ATOM_UNIV (as set.universe (Set (Tuple Atom)))))
+(assert (= ATOM_UNIV (as set.universe (Relation Atom))))
(assert (set.member (tuple V1) ATOM_UNIV))
(assert (set.member (tuple V1) (set.complement C2)))
(check-sat)
(set-logic ALL)
(set-info :status unsat)
(set-option :fmf-bound true)
-(declare-fun B () (Bag (Tuple Int Int)))
+(declare-fun B () (Table Int Int))
(declare-fun x () (Tuple Int Int))
(assert
- (and (= (as bag.empty (Bag (Tuple Int Int))) (bag x (bag.card B)))
- (not (= (as bag.empty (Bag (Tuple Int Int))) B))))
+ (and (= (as bag.empty (Table Int Int)) (bag x (bag.card B)))
+ (not (= (as bag.empty (Table Int Int)) B))))
(check-sat)
(set-logic ALL)
(set-info :status sat)
-(declare-fun a () (Bag (Tuple Int Int)))
-(declare-fun b () (Bag (Tuple Int Int)))
+(declare-fun a () (Table Int Int))
+(declare-fun b () (Table Int Int))
(declare-fun c () Int) ; c here is zero
(assert
(and
(set-logic ALL)
(set-info :status sat)
-(declare-fun a () (Bag (Tuple Int Int)))
-(declare-fun b () (Bag (Tuple Int Int)))
+(declare-fun a () (Table Int Int))
+(declare-fun b () (Table Int Int))
(declare-fun c () Int)
(declare-fun d () (Tuple Int Int))
(assert
(set-logic ALL)
(set-info :status sat)
(set-option :produce-models true)
-(declare-fun A () (Bag (Tuple Int Int)))
-(declare-fun B () (Bag (Tuple Int Int)))
+(declare-fun A () (Table Int Int))
+(declare-fun B () (Table Int Int))
(declare-fun c () Int)
(declare-fun d () (Tuple Int Int))
(assert
(set-logic ALL)
(set-info :status sat)
(set-option :produce-models true)
-(declare-fun A () (Bag (Tuple Int Int)))
+(declare-fun A () (Table Int Int))
(declare-fun d () (Tuple Int Int))
(assert (= A (bag.difference_remove A (bag d 1))))
(check-sat)
(set-logic ALL)
(set-option :produce-models true)
(set-info :status sat)
-(declare-fun A () (Bag (Tuple Int Int)))
+(declare-fun A () (Table Int Int))
(declare-fun c () Int)
(declare-fun d () (Tuple Int Int))
(assert
(set-logic ALL)
(set-option :produce-models true)
(set-info :status sat)
-(declare-fun A () (Bag (Tuple Int Int)))
+(declare-fun A () (Table Int Int))
(declare-fun c () Int)
(declare-fun d () (Tuple Int Int))
(set-logic ALL)
(set-info :status sat)
(set-option :produce-models true)
-(declare-fun A () (Bag (Tuple Int Int)))
+(declare-fun A () (Table Int Int))
(declare-fun c () Int)
(declare-fun d () (Tuple Int Int))
(assert
(set-logic ALL)
(set-info :status sat)
-(declare-fun A () (Bag (Tuple String)))
-(declare-fun B () (Bag (Tuple Bool)))
-(declare-fun C () (Bag (Tuple String Bool)))
+(declare-fun A () (Table String))
+(declare-fun B () (Table Bool))
+(declare-fun C () (Table String Bool))
(declare-fun x () (Tuple String))
(declare-fun y () (Tuple Bool))
(assert (= (bag.count x A) 5))
(set-logic ALL)
(set-info :status unsat)
-(declare-fun A () (Bag (Tuple Int Int Int)))
-(declare-fun B () (Bag (Tuple Int Int Int)))
+(declare-fun A () (Table Int Int Int))
+(declare-fun B () (Table Int Int Int))
(declare-fun x () (Tuple Int Int Int))
(assert (= x (tuple 1 2 3)))
(declare-fun y () (Tuple Int Int Int))
(set-info :status sat)
-(declare-fun A () (Bag (Tuple Int Int Int)))
-(declare-fun B () (Bag (Tuple Int Int Int)))
-(declare-fun C () (Bag (Tuple Int Int Int Int Int Int)))
+(declare-fun A () (Table Int Int Int))
+(declare-fun B () (Table Int Int Int))
+(declare-fun C () (Table Int Int Int Int Int Int))
(assert (= C (table.product A B)))
(declare-datatypes ((|__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE| 0)) (((|__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_ctor| (O MOPERATION) (T TEAR_TYPE) (RR ORDER) (A ATOM) (B SDBLOCK_TYPE) (M (Set BINT)) (V VALUE_TYPE)))))
-(declare-datatypes ((|__cvc5_record_E_(Set ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_)_PO_(Set (Tuple ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_ ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_))| 0)) (((|__cvc5_record_E_(Set ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_)_PO_(Set (Tuple ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_ ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_))_ctor| (E (Set |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|)) (PO (Set (Tuple |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE| |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|)))))))
+(declare-datatypes ((|__cvc5_record_E_(Set ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_)_PO_(Relation ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_ ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_)| 0)) (((|__cvc5_record_E_(Set ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_)_PO_(Relation ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_ ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_)_ctor| (E (Set |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|)) (PO (Relation |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE| |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|))))))
(declare-fun m1 () SDBLOCK_TYPE)
(declare-fun ow1 () |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|)
(assert (and (and (and (and (and (and (= (O or2) R) (= (T or2) TEAR_FALSE)) (= (RR or2) U)) (= (A or2) NA)) (= (B or2) m1)) (= (M or2) (set.singleton I0))) (= (V or2) v2)))
(declare-fun ev_set () (Set |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|))
(assert (= ev_set (set.union (set.singleton ow1) (set.singleton or2))))
-(declare-fun RF () (Set (Tuple |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE| |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|)))
+(declare-fun RF () (Relation |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE| |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|))
(assert (forall ((r |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|) (w |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|)) (=> (and (set.member r ev_set) (set.member w ev_set)) (= (set.member (tuple r w) RF) (and (= (O r) R) (= (O w) W))))))
(check-sat)
-(declare-fun Target () (Set (Tuple Atom)))
-(declare-fun Name () (Set (Tuple Atom)))
-(declare-fun Addr () (Set (Tuple Atom)))
-(declare-fun Book () (Set (Tuple Atom)))
-(declare-fun names () (Set (Tuple Atom Atom)))
-(declare-fun addr () (Set (Tuple Atom Atom Atom)))
+(declare-fun Target () (Relation Atom))
+(declare-fun Name () (Relation Atom))
+(declare-fun Addr () (Relation Atom))
+(declare-fun Book () (Relation Atom))
+(declare-fun names () (Relation Atom Atom))
+(declare-fun addr () (Relation Atom Atom Atom))
(declare-fun b1 () Atom)
(declare-fun b1_tup () (Tuple Atom))
(assert (= b1_tup (tuple b1)))
(declare-fun t_tup () (Tuple Atom))
(assert (= t_tup (tuple t)))
(assert (set.member t_tup Target))
-(assert (= (rel.join (set.singleton m_tup) (rel.join (set.singleton b1_tup) addr)) (as set.empty (Set (Tuple Atom)))))
+(assert (= (rel.join (set.singleton m_tup) (rel.join (set.singleton b1_tup) addr)) (as set.empty (Relation Atom))))
(assert (= (rel.join (set.singleton b2_tup) addr) (set.union (rel.join (set.singleton b1_tup) addr) (set.singleton (tuple m t)))))
(assert (= (rel.join (set.singleton b3_tup) addr) (set.minus (rel.join (set.singleton b2_tup) addr) (set.singleton (tuple m t)))))
(assert (not (= (rel.join (set.singleton b1_tup) addr) (rel.join (set.singleton b3_tup) addr))))
-(declare-fun Target () (Set (Tuple Atom)))
-(declare-fun Name () (Set (Tuple Atom)))
-(declare-fun Addr () (Set (Tuple Atom)))
-(declare-fun Book () (Set (Tuple Atom)))
-(declare-fun names () (Set (Tuple Atom Atom)))
-(declare-fun addr () (Set (Tuple Atom Atom Atom)))
+(declare-fun Target () (Relation Atom))
+(declare-fun Name () (Relation Atom))
+(declare-fun Addr () (Relation Atom))
+(declare-fun Book () (Relation Atom))
+(declare-fun names () (Relation Atom Atom))
+(declare-fun addr () (Relation Atom Atom Atom))
(declare-fun b1 () Atom)
(declare-fun b1_tup () (Tuple Atom))
(assert (= b1_tup (tuple b1)))
(declare-fun t_tup () (Tuple Atom))
(assert (= t_tup (tuple t)))
(assert (set.member t_tup Target))
-(assert (= (rel.join (set.singleton m_tup) (rel.join (set.singleton b1_tup) addr)) (as set.empty (Set (Tuple Atom)))))
+(assert (= (rel.join (set.singleton m_tup) (rel.join (set.singleton b1_tup) addr)) (as set.empty (Relation Atom))))
(assert (= (rel.join (set.singleton b2_tup) addr) (set.union (rel.join (set.singleton b1_tup) addr) (set.singleton (tuple m t)))))
(assert (= (rel.join (set.singleton b3_tup) addr) (set.minus (rel.join (set.singleton b2_tup) addr) (set.singleton (tuple m t)))))
(assert (= (rel.join (set.singleton b1_tup) addr) (rel.join (set.singleton b3_tup) addr)))
(set-logic ALL)
(declare-datatypes ((unit 0)) (((u))))
-(declare-fun x () (Set (Tuple (_ BitVec 1) unit (_ BitVec 1))))
-(declare-fun y () (Set (Tuple (_ BitVec 1) unit (_ BitVec 1))))
+(declare-fun x () (Relation (_ BitVec 1) unit (_ BitVec 1)))
+(declare-fun y () (Relation (_ BitVec 1) unit (_ BitVec 1)))
(declare-fun a () (_ BitVec 1))
(declare-fun b () (_ BitVec 1))
(declare-fun c () (_ BitVec 1))
(set-logic ALL)
(declare-datatypes ((unitb 0)) (((ub (data (_ BitVec 1))))))
-(declare-fun x () (Set (Tuple (_ BitVec 1) unitb (_ BitVec 1))))
-(declare-fun y () (Set (Tuple (_ BitVec 1) unitb (_ BitVec 1))))
+(declare-fun x () (Relation (_ BitVec 1) unitb (_ BitVec 1)))
+(declare-fun y () (Relation (_ BitVec 1) unitb (_ BitVec 1)))
(declare-fun a () (_ BitVec 1))
(declare-fun b () (_ BitVec 1))
(declare-fun c () (_ BitVec 1))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple (_ BitVec 1) (_ BitVec 1))))
-(declare-fun y () (Set (Tuple (_ BitVec 1) (_ BitVec 1))))
+(declare-fun x () (Relation (_ BitVec 1) (_ BitVec 1)))
+(declare-fun y () (Relation (_ BitVec 1) (_ BitVec 1)))
(declare-fun a () (_ BitVec 1))
(declare-fun b () (_ BitVec 1))
(declare-fun c () (_ BitVec 1))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple (_ BitVec 1) (_ BitVec 1))))
-(declare-fun y () (Set (Tuple (_ BitVec 1) (_ BitVec 1))))
+(declare-fun x () (Relation (_ BitVec 1) (_ BitVec 1)))
+(declare-fun y () (Relation (_ BitVec 1) (_ BitVec 1)))
(declare-fun a () (Tuple (_ BitVec 1) (_ BitVec 1)))
(declare-fun b () (Tuple (_ BitVec 1) (_ BitVec 1)))
(declare-fun c () (Tuple (_ BitVec 1) (_ BitVec 1)))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple (_ BitVec 1) (_ BitVec 1))))
-(declare-fun y () (Set (Tuple (_ BitVec 1) (_ BitVec 1))))
+(declare-fun x () (Relation (_ BitVec 1) (_ BitVec 1)))
+(declare-fun y () (Relation (_ BitVec 1) (_ BitVec 1)))
(declare-fun a () (Tuple (_ BitVec 1) (_ BitVec 1)))
(declare-fun b () (Tuple (_ BitVec 1) (_ BitVec 1)))
(declare-fun c () (Tuple (_ BitVec 1) (_ BitVec 1)))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple (_ BitVec 2) (_ BitVec 2))))
-(declare-fun y () (Set (Tuple (_ BitVec 2) (_ BitVec 2))))
+(declare-fun x () (Relation (_ BitVec 2) (_ BitVec 2)))
+(declare-fun y () (Relation (_ BitVec 2) (_ BitVec 2)))
(declare-fun a () (_ BitVec 2))
(declare-fun b () (_ BitVec 2))
(declare-fun c () (_ BitVec 2))
-(declare-fun h0 () (Set (Tuple H_TYPE)))
-(declare-fun h1 () (Set (Tuple H_TYPE)))
-(declare-fun h2 () (Set (Tuple H_TYPE)))
-(declare-fun h3 () (Set (Tuple H_TYPE)))
+(declare-fun h0 () (Relation H_TYPE))
+(declare-fun h1 () (Relation H_TYPE))
+(declare-fun h2 () (Relation H_TYPE))
+(declare-fun h3 () (Relation H_TYPE))
(declare-fun s0 () H_TYPE)
(declare-fun s1 () H_TYPE)
(declare-fun s2 () H_TYPE)
(assert (= h1 (set.singleton (tuple s1))))
(assert (= h2 (set.singleton (tuple s2))))
(assert (= h3 (set.singleton (tuple s3))))
-(declare-fun ref () (Set (Tuple H_TYPE Obj Obj)))
-(declare-fun mark () (Set (Tuple H_TYPE Obj)))
-(declare-fun empty_obj_set () (Set (Tuple Obj)))
-(assert (= empty_obj_set (as set.empty (Set (Tuple Obj)))))
+(declare-fun ref () (Relation H_TYPE Obj Obj))
+(declare-fun mark () (Relation H_TYPE Obj))
+(declare-fun empty_obj_set () (Relation Obj))
+(assert (= empty_obj_set (as set.empty (Relation Obj))))
(declare-fun root () Obj)
(declare-fun live () Obj)
(assert (= (rel.join h1 mark) empty_obj_set))
(set-logic ALL)
(declare-sort Atom 0)
-(declare-fun x () (Set (Tuple Atom Atom)))
-(declare-fun t () (Set (Tuple Atom)))
-(declare-fun univ () (Set (Tuple Atom)))
-(declare-fun univ2 () (Set (Tuple Atom Atom)))
+(declare-fun x () (Relation Atom Atom))
+(declare-fun t () (Relation Atom))
+(declare-fun univ () (Relation Atom))
+(declare-fun univ2 () (Relation Atom Atom))
(declare-fun a () Atom)
(declare-fun b () Atom)
(declare-fun c () Atom)
(declare-fun d () Atom)
-(assert (= univ (as set.universe (Set (Tuple Atom)))))
-(assert (= univ2 (as set.universe (Set (Tuple Atom Atom)))))
+(assert (= univ (as set.universe (Relation Atom))))
+(assert (= univ2 (as set.universe (Relation Atom Atom))))
(assert (= univ2 (rel.product univ univ)))
(assert (set.member (tuple a b) x))
(assert (set.member (tuple c d) x))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(declare-datatypes ((unit 0)) (((u))))
-(declare-fun w () (Set (Tuple Int unit)))
-(declare-fun z () (Set (Tuple unit Int)))
+(declare-fun w () (Relation Int unit))
+(declare-fun z () (Relation unit Int))
(assert (let ((_let_1 (rel.join w z))) (let ((_let_2 (rel.join x y))) (and (= _let_2 _let_1) (= _let_2 (rel.transpose _let_1))))))
(assert (set.member (tuple 0 1) (rel.join x y)))
(declare-fun t () Int)
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(declare-datatypes ((unit 0)) (((u))))
-(declare-fun w () (Set (Tuple Int unit)))
-(declare-fun z () (Set (Tuple unit Int)))
+(declare-fun w () (Relation Int unit))
+(declare-fun z () (Relation unit Int))
(assert (let ((_let_1 (rel.join w z))) (let ((_let_2 (rel.join x y))) (or (= _let_2 _let_1) (= _let_2 (rel.transpose _let_1))))))
(assert (set.member (tuple 0 1) (rel.join x y)))
(declare-fun t () Int)
(set-logic ALL)
(set-option :sets-ext true)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
-(declare-fun t () (Set (Tuple Int)))
-(declare-fun u () (Set (Tuple Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
+(declare-fun t () (Relation Int))
+(declare-fun u () (Relation Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-option :sets-ext true)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
-(declare-fun t () (Set (Tuple Int)))
-(declare-fun u () (Set (Tuple Int)))
-(declare-fun univ () (Set (Tuple Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
+(declare-fun t () (Relation Int))
+(declare-fun u () (Relation Int))
+(declare-fun univ () (Relation Int))
(declare-fun z () (Tuple Int Int))
(assert (= z (tuple 1 2)))
(declare-fun zt () (Tuple Int Int))
(set-logic ALL)
(set-option :sets-ext true)
(declare-sort Atom 0)
-(declare-fun x () (Set (Tuple Atom Atom)))
-(declare-fun y () (Set (Tuple Atom Atom)))
-(declare-fun r () (Set (Tuple Atom Atom)))
-(declare-fun t () (Set (Tuple Atom)))
+(declare-fun x () (Relation Atom Atom))
+(declare-fun y () (Relation Atom Atom))
+(declare-fun r () (Relation Atom Atom))
+(declare-fun t () (Relation Atom))
(declare-fun a () Atom)
(declare-fun b () Atom)
(declare-fun c () Atom)
(set-logic ALL)
(set-option :sets-ext true)
(declare-sort Atom 0)
-(declare-fun x () (Set (Tuple Atom Atom)))
-(declare-fun y () (Set (Tuple Atom Atom)))
-(declare-fun r () (Set (Tuple Atom Atom)))
-(declare-fun t () (Set (Tuple Atom)))
+(declare-fun x () (Relation Atom Atom))
+(declare-fun y () (Relation Atom Atom))
+(declare-fun r () (Relation Atom Atom))
+(declare-fun t () (Relation Atom))
(declare-fun a () Atom)
(declare-fun b () Atom)
(declare-fun c () Atom)
(set-logic ALL)
(set-option :sets-ext true)
(declare-sort Atom 0)
-(declare-fun x () (Set (Tuple Atom Atom)))
-(declare-fun y () (Set (Tuple Atom Atom)))
-(declare-fun r () (Set (Tuple Atom Atom)))
-(declare-fun t () (Set (Tuple Atom)))
+(declare-fun x () (Relation Atom Atom))
+(declare-fun y () (Relation Atom Atom))
+(declare-fun r () (Relation Atom Atom))
+(declare-fun t () (Relation Atom))
(declare-fun a () Atom)
(declare-fun b () Atom)
(declare-fun c () Atom)
(set-logic ALL)
(set-option :sets-ext true)
(declare-sort Atom 0)
-(declare-fun x () (Set (Tuple Atom Atom)))
-(declare-fun y () (Set (Tuple Atom Atom)))
-(declare-fun r () (Set (Tuple Atom Atom)))
-(declare-fun t () (Set (Tuple Atom)))
+(declare-fun x () (Relation Atom Atom))
+(declare-fun y () (Relation Atom Atom))
+(declare-fun r () (Relation Atom Atom))
+(declare-fun t () (Relation Atom))
(declare-fun a () Atom)
(declare-fun b () Atom)
(declare-fun c () Atom)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int Int Int)))
-(declare-fun z1 () (Set (Tuple Int Int)))
-(declare-fun w1 () (Set (Tuple Int Int)))
-(declare-fun z2 () (Set (Tuple Int Int)))
-(declare-fun w2 () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int Int Int))
+(declare-fun z1 () (Relation Int Int))
+(declare-fun w1 () (Relation Int Int))
+(declare-fun z2 () (Relation Int Int))
+(declare-fun w2 () (Relation Int Int))
(assert (not (= z (rel.product x y))))
(assert (set.member (tuple 0 1 2 3) z))
(assert (set.member (tuple 0 1) z1))
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int Int Int)))
-(declare-fun z1 () (Set (Tuple Int Int)))
-(declare-fun w1 () (Set (Tuple Int Int)))
-(declare-fun z2 () (Set (Tuple Int Int)))
-(declare-fun w2 () (Set (Tuple Int Int)))
-(declare-fun P ((Set (Tuple Int Int Int Int))) Bool)
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int Int Int))
+(declare-fun z1 () (Relation Int Int))
+(declare-fun w1 () (Relation Int Int))
+(declare-fun z2 () (Relation Int Int))
+(declare-fun w2 () (Relation Int Int))
+(declare-fun P ((Relation Int Int Int Int)) Bool)
(assert (= z (rel.product x y)))
(assert (P z))
(assert (not (P (set.singleton (tuple 0 1 2 3)))))
(set-logic ALL)
(set-info :status sat)
-(declare-fun a () (Set (Tuple Int Int)))
-(declare-fun b () (Set (Tuple Int Int)))
+(declare-fun a () (Relation Int Int))
+(declare-fun b () (Relation Int Int))
(declare-fun c () Int)
(declare-fun d () (Tuple Int Int))
(assert (and (= a (set.singleton (tuple (+ c 1) 1))) (= (rel.tclosure b) (rel.join a a))))
(set-logic ALL)
(set-info :status sat)
-(declare-fun b () (Set (Tuple Int Int)))
+(declare-fun b () (Relation Int Int))
(assert
-(= (rel.join b (rel.tclosure (rel.join b b))) (as set.empty (Set (Tuple Int Int))))
+(= (rel.join b (rel.tclosure (rel.join b b))) (as set.empty (Relation Int Int)))
)
(assert
-(distinct b (as set.empty (Set (Tuple Int Int))))
+(distinct b (as set.empty (Relation Int Int)))
)
-(assert (= (rel.join b b) (as set.empty (Set (Tuple Int Int)))))
+(assert (= (rel.join b b) (as set.empty (Relation Int Int))))
(check-sat)
(set-option :incremental true)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
-(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
+(declare-fun w () (Relation Int Int))
(declare-fun f () (Tuple Int Int))
(assert (= f (tuple 3 1)))
(assert (set.member f x))
(set-option :incremental true)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
-(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
+(declare-fun w () (Relation Int Int))
(declare-fun f () (Tuple Int Int))
(assert (= f (tuple 3 1)))
(assert (set.member f x))
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
-(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
+(declare-fun w () (Relation Int Int))
(declare-fun f () (Tuple Int Int))
(assert (= f (tuple 3 1)))
(assert (set.member f x))
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
-(declare-fun w () (Set (Tuple Int)))
-(declare-fun z () (Set (Tuple Int)))
-(declare-fun r2 () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
+(declare-fun w () (Relation Int))
+(declare-fun z () (Relation Int))
+(declare-fun r2 () (Relation Int Int))
(declare-fun d () (Tuple Int Int))
(assert (= d (tuple 1 3)))
(assert (set.member (tuple 1 3) y))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(declare-fun a11 () (Tuple Int Int))
(assert (= a11 (tuple 1 1)))
(assert (set.member a11 x))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(declare-fun a () Int)
(declare-fun b () Int)
(declare-fun c () Int)
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(declare-fun a () Int)
(declare-fun b () Int)
(declare-fun c () Int)
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
(assert (= y (rel.join (rel.tclosure x) x)))
(assert (not (= y (rel.tclosure x))))
(check-sat)
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(assert (= y (rel.tclosure x)))
(assert (not (= y (rel.join (rel.join x x) x))))
(check-sat)
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
(assert (= y (rel.tclosure x)))
(assert (not (set.subset (rel.join (rel.join x x) x) y)))
(check-sat)
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
-(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
+(declare-fun w () (Relation Int Int))
(assert (= z (rel.tclosure x)))
(assert (= w (rel.join x y)))
(assert (set.member (tuple 2 2) z))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
(assert (or (= z (rel.transpose y)) (= z (rel.transpose x))))
(assert (not (= (rel.transpose z) y)))
(assert (not (= (rel.transpose z) x)))
(set-option :incremental false)
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple Int Int)))
-(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun z () (Relation Int Int))
+(declare-fun r () (Relation Int Int))
(assert (set.member (tuple 7 1) x))
(assert (set.member (tuple 2 3) x))
(assert (set.member (tuple 7 3) y))
(set-logic ALL)
-(declare-fun x () (Set (Tuple Int Int)))
-(declare-fun y () (Set (Tuple Int Int)))
-(declare-fun w () (Set (Tuple Int Int)))
-(declare-fun z () (Set (Tuple (Set (Tuple Int Int)) (Set (Tuple Int Int)))))
+(declare-fun x () (Relation Int Int))
+(declare-fun y () (Relation Int Int))
+(declare-fun w () (Relation Int Int))
+(declare-fun z () (Relation (Relation Int Int) (Relation Int Int)))
(declare-fun a () (Tuple Int Int))
(declare-fun b () (Tuple Int Int))
(assert (not (= a b)))
(set-logic ALL)
-(declare-fun x () (Set (Tuple (Tuple Int Int) (Tuple Int Int))))
-(declare-fun y () (Set (Tuple (Tuple Int Int) (Tuple Int Int))))
-(declare-fun z () (Set (Tuple Int Int)))
-(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun x () (Relation (Tuple Int Int) (Tuple Int Int)))
+(declare-fun y () (Relation (Tuple Int Int) (Tuple Int Int)))
+(declare-fun z () (Relation Int Int))
+(declare-fun w () (Relation Int Int))
(declare-fun a () (Tuple Int Int))
(declare-fun b () (Tuple Int Int))
(declare-fun c () (Tuple (Tuple Int Int) (Tuple Int Int)))
; COMMAND-LINE: --sets-infer-as-lemmas --simplification=none
; EXPECT: sat
(set-logic ALL)
-(declare-fun b () (Set (Tuple String Int)))
-(declare-fun c () (Set (Tuple Int String)))
-(declare-fun d () (Set (Tuple String String)))
+(declare-fun b () (Relation String Int))
+(declare-fun c () (Relation Int String))
+(declare-fun d () (Relation String String))
(declare-fun f () (Set Int))
(declare-fun e () Int)
(assert (= b (set.insert (tuple "" 1) (tuple "" 2) (set.singleton (tuple "" 4)))))
(set-logic ALL)
(set-info :status sat)
(declare-fun b () (Set String))
-(declare-fun c () (Set (Tuple Int Int)))
-(declare-fun d () (Set (Tuple Int Int)))
+(declare-fun c () (Relation Int Int))
+(declare-fun d () (Relation Int Int))
(declare-fun e () Int)
(assert (distinct c (set.insert (tuple 0 0) (set.singleton (tuple 1 1)))))
(assert (distinct d (rel.tclosure c)))
(set-option :incremental false)
(set-option :sets-ext true)
(set-logic ALL)
-(declare-fun a () (Set (Tuple Real Int)))
-(declare-fun b () (Set (Tuple Int Real)))
+(declare-fun a () (Relation Real Int))
+(declare-fun b () (Relation Int Real))
(declare-fun x () (Tuple Real Real))
(assert (let ((_let_1 0.0)) (not (= x (tuple _let_1 _let_1)))))
(assert (set.member (tuple ((_ tuple.select 0) x) (to_int ((_ tuple.select 1) x))) a))