sendInfer(f2, reason, "product-split");
} else {
// ONLY need to explicitly compute joins if there are negative literals involving PRODUCT
- computeJoinOrProductRelations(product_term);
+ computeRels(product_term);
}
}
sendInfer(f2, reason, "join-split");
} else {
// ONLY need to explicitly compute joins if there are negative literals involving JOIN
- computeJoinOrProductRelations(join_term);
+ computeRels(join_term);
}
}
!= d_terms_cache[getRepresentative(fact[1])].end()) {
std::vector<Node> join_terms = d_terms_cache[getRepresentative(fact[1])][kind::JOIN];
for(unsigned int i = 0; i < join_terms.size(); i++) {
- computeJoinOrProductRelations(join_terms[i]);
+ computeRels(join_terms[i]);
}
}
if(d_terms_cache[getRepresentative(fact[1])].find(kind::PRODUCT)
!= d_terms_cache[getRepresentative(fact[1])].end()) {
std::vector<Node> product_terms = d_terms_cache[getRepresentative(fact[1])][kind::PRODUCT];
for(unsigned int i = 0; i < product_terms.size(); i++) {
- computeJoinOrProductRelations(product_terms[i]);
+ computeRels(product_terms[i]);
}
}
fact = fact.negate();
sendInfer(fact, exp, "transpose-rule");
}
- void TheorySetsRels::computeJoinOrProductRelations(Node n) {
+ void TheorySetsRels::computeRels(Node n) {
Trace("rels-debug") << "\n[sets-rels] computeJoinOrProductRelations for relation " << n << std::endl;
switch(n[0].getKind()) {
case kind::TRANSPOSE:
break;
case kind::JOIN:
case kind::PRODUCT:
- computeJoinOrProductRelations(n[0]);
+ computeRels(n[0]);
break;
default:
break;
break;
case kind::JOIN:
case kind::PRODUCT:
- computeJoinOrProductRelations(n[1]);
+ computeRels(n[1]);
break;
default:
break;
void TheorySetsRels::computeTransposeRelations(Node n) {
switch(n[0].getKind()) {
case kind::JOIN:
- computeJoinOrProductRelations(n[0]);
+ computeRels(n[0]);
break;
case kind::TRANSPOSE:
computeTransposeRelations(n[0]);
break;
case kind::PRODUCT:
- computeJoinOrProductRelations(n[0]);
+ computeRels(n[0]);
break;
default:
break;
void check();
void collectRelationalInfo();
void assertMembership( Node fact, Node reason, bool polarity );
- void composeProductRelations( Node );
- void composeJoinRelations( Node );
void composeTuplesForRels( Node );
void applyTransposeRule( Node, Node, Node );
void applyJoinRule( Node, Node, Node );
void applyProductRule( Node, Node, Node );
- void computeJoinOrProductRelations( Node );
+ void computeRels( Node );
void computeTransposeRelations( Node );
Node reverseTuple( Node );