diff options
author | ajreynol <andrew.j.reynolds@gmail.com> | 2017-07-10 14:06:52 -0500 |
---|---|---|
committer | ajreynol <andrew.j.reynolds@gmail.com> | 2017-07-10 14:07:11 -0500 |
commit | f3590092818d9eab9d961ea602093029ff472a85 (patch) | |
tree | 1401f00df0d9659ba2321ea2088fe0c3f4de9f52 /src/printer | |
parent | d598a9644862d176632071bca8448765d9cc3cc1 (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')
-rw-r--r-- | src/printer/cvc/cvc_printer.cpp | 14 | ||||
-rw-r--r-- | src/printer/smt2/smt2_printer.cpp | 4 |
2 files changed, 11 insertions, 7 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; diff --git a/src/printer/smt2/smt2_printer.cpp b/src/printer/smt2/smt2_printer.cpp index 923574fae..074041262 100644 --- a/src/printer/smt2/smt2_printer.cpp +++ b/src/printer/smt2/smt2_printer.cpp @@ -825,10 +825,10 @@ static string smtKindString(Kind k) throw() { case kind::GEQ: return ">="; case kind::DIVISION: case kind::DIVISION_TOTAL: return "/"; + case kind::INTS_DIVISION_TOTAL: case kind::INTS_DIVISION: return "div"; - case kind::INTS_DIVISION_TOTAL: return "INTS_DIVISION_TOTAL"; + case kind::INTS_MODULUS_TOTAL: case kind::INTS_MODULUS: return "mod"; - case kind::INTS_MODULUS_TOTAL: return "INTS_MODULUS_TOTAL"; case kind::ABS: return "abs"; case kind::IS_INTEGER: return "is_int"; case kind::TO_INTEGER: return "to_int"; |