summaryrefslogtreecommitdiff
path: root/src/printer/cvc/cvc_printer.cpp
diff options
context:
space:
mode:
authorajreynol <andrew.j.reynolds@gmail.com>2017-07-10 14:06:52 -0500
committerajreynol <andrew.j.reynolds@gmail.com>2017-07-10 14:07:11 -0500
commitf3590092818d9eab9d961ea602093029ff472a85 (patch)
tree1401f00df0d9659ba2321ea2088fe0c3f4de9f52 /src/printer/cvc/cvc_printer.cpp
parentd598a9644862d176632071bca8448765d9cc3cc1 (diff)
Merge datatype shared selectors/sygus comp 2017 branch. Modify the datatypes decision procedure to share selectors of the same type across multiple constructors. Major rewrite of the SyGuS solver. Adds several new strategies for I/O example problems (PBE) and invariant synthesis. Major simplifications to sygus parsing and synthesis conjecture representation. Do not support check-synth in portfolio. Add sygus regressions.
Diffstat (limited to 'src/printer/cvc/cvc_printer.cpp')
-rw-r--r--src/printer/cvc/cvc_printer.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/printer/cvc/cvc_printer.cpp b/src/printer/cvc/cvc_printer.cpp
index 03029f27e..69ba63a47 100644
--- a/src/printer/cvc/cvc_printer.cpp
+++ b/src/printer/cvc/cvc_printer.cpp
@@ -392,18 +392,22 @@ void CvcPrinter::toStream(std::ostream& out, TNode n, int depth, bool types, boo
break;
case kind::APPLY_SELECTOR:
case kind::APPLY_SELECTOR_TOTAL: {
- TypeNode t = n.getType();
+ TypeNode t = n[0].getType();
+ Node opn = n.getOperator();
if( t.isTuple() ){
toStream(out, n[0], depth, types, true);
- out << '.' << Datatype::indexOf( n.getOperator().toExpr() );
+ const Datatype& dt = ((DatatypeType)t.toType()).getDatatype();
+ int sindex = dt[0].getSelectorIndexInternal( opn.toExpr() );
+ out << '.' << sindex;
}else if( t.isRecord() ){
toStream(out, n[0], depth, types, true);
const Record& rec = t.getRecord();
- unsigned index = Datatype::indexOf( n.getOperator().toExpr() );
- std::pair<std::string, Type> fld = rec[index];
+ const Datatype& dt = ((DatatypeType)t.toType()).getDatatype();
+ int sindex = dt[0].getSelectorIndexInternal( opn.toExpr() );
+ std::pair<std::string, Type> fld = rec[sindex];
out << '.' << fld.first;
}else{
- toStream(op, n.getOperator(), depth, types, false);
+ toStream(op, opn, depth, types, false);
}
}
break;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback