Better support for HOL parsing and set up (#6697)
authorHaniel Barbosa <hanielbbarbosa@gmail.com>
Fri, 11 Jun 2021 21:29:19 +0000 (18:29 -0300)
committerGitHub <noreply@github.com>
Fri, 11 Jun 2021 21:29:19 +0000 (21:29 +0000)
This commit adds a new parser option, --hol, which marks that HOL is being used. This option has the effect of prepending the problem's logic with "HO_", which teels the solver that the logic is higher order. The parser builder, base parser, and SMT2 and TPTP parsers are all updated to work with this new setting, as is the logic info class.

For now this parser option is enabling the --uf-ho option for internal use, since for now higher-order solving relies it. In a future PR this dependency will be removed (since this information is already given to the SMT solver via the logic).

80 files changed:
src/parser/parser.cpp
src/parser/parser.h
src/parser/parser_builder.cpp
src/parser/smt2/smt2.cpp
src/parser/tptp/Tptp.g
src/parser/tptp/tptp.cpp
src/parser/tptp/tptp.h
src/smt/set_defaults.cpp
src/theory/logic_info.cpp
src/theory/logic_info.h
test/regress/regress0/declare-fun-is-match.smt2
test/regress/regress0/fp/issue4277-assign-func.smt2
test/regress/regress0/ho/apply-collapse-sat.smt2
test/regress/regress0/ho/apply-collapse-unsat.smt2
test/regress/regress0/ho/bug_nodbuilding_interpreted_SYO042^1.p
test/regress/regress0/ho/cong-full-apply.smt2
test/regress/regress0/ho/cong.smt2
test/regress/regress0/ho/declare-fun-variants.smt2
test/regress/regress0/ho/def-fun-flatten.smt2
test/regress/regress0/ho/ext-finite-unsat.smt2
test/regress/regress0/ho/ext-ho-nested-lambda-model.smt2
test/regress/regress0/ho/ext-ho.smt2
test/regress/regress0/ho/ext-sat-partial-eval.smt2
test/regress/regress0/ho/ext-sat.smt2
test/regress/regress0/ho/finite-fun-ext.smt2
test/regress/regress0/ho/fta0144-alpha-eq.smt2
test/regress/regress0/ho/fta0210.smt2
test/regress/regress0/ho/fun-subtyping.smt2
test/regress/regress0/ho/ho-exponential-model.smt2
test/regress/regress0/ho/ho-match-fun-suffix.smt2
test/regress/regress0/ho/ho-matching-enum-2.smt2
test/regress/regress0/ho/ho-matching-enum.smt2
test/regress/regress0/ho/ho-matching-nested-app.smt2
test/regress/regress0/ho/ho-std-fmf.smt2
test/regress/regress0/ho/hoa0008.smt2
test/regress/regress0/ho/issue4990-care-graph.smt2
test/regress/regress0/ho/issue5233-part1-usort-owner.smt2
test/regress/regress0/ho/ite-apply-eq.smt2
test/regress/regress0/ho/lambda-equality-non-canon.smt2
test/regress/regress0/ho/match-middle.smt2
test/regress/regress0/ho/modulo-func-equality.smt2
test/regress/regress0/ho/shadowing-defs.smt2
test/regress/regress0/ho/simple-matching-partial.smt2
test/regress/regress0/ho/simple-matching.smt2
test/regress/regress0/ho/trans.smt2
test/regress/regress0/sygus/pLTL-sygus-syntax-err.sy
test/regress/regress0/sygus/sygus-uf.sy
test/regress/regress1/fmf/issue4225-univ-fun.smt2
test/regress/regress1/ho/NUM638^1.smt2
test/regress/regress1/ho/NUM925^1.p
test/regress/regress1/ho/SYO056^1.p
test/regress/regress1/ho/bound_var_bug.p
test/regress/regress1/ho/bug_freeVar_BDD_General_data_270.p
test/regress/regress1/ho/bug_freevar_PHI004^4-delta.smt2
test/regress/regress1/ho/fta0328.lfho.p
test/regress/regress1/ho/hoa0102.smt2
test/regress/regress1/ho/issue3136-fconst-bool-bool.smt2
test/regress/regress1/ho/issue4065-no-rep.smt2
test/regress/regress1/ho/issue4092-sinf.smt2
test/regress/regress1/ho/issue4134-sinf.smt2
test/regress/regress1/ho/nested_lambdas-AGT034^2.smt2
test/regress/regress1/ho/nested_lambdas-sat-SYO056^1-delta.smt2
test/regress/regress1/ho/soundness_fmf_SYO362^5-delta.p
test/regress/regress1/ho/store-ax-min.p
test/regress/regress1/quantifiers/issue3724-quant.smt2
test/regress/regress1/quantifiers/issue4021-ind-opts.smt2
test/regress/regress1/sygus/eval-uc.sy
test/regress/regress1/sygus/ho-sygus.sy
test/regress/regress1/sygus/issue3507.smt2
test/regress/regress1/sygus/issue3995-fmf-var-op.smt2
test/regress/regress1/sygus/list_recursor.sy
test/regress/regress1/sygus/sygus-uf-ex.sy
test/regress/regress1/sygus/uf-abduct.smt2
test/regress/regress2/ho/auth0068.smt2
test/regress/regress2/ho/bug_instfalse_SEU882^5.p
test/regress/regress2/ho/fta0409.smt2
test/regress/regress2/ho/involved_parsing_ALG248^3.p
test/regress/regress2/ho/partial_app_interpreted_SWW474^2.p
test/regress/regress3/ho/SYO362^5.p
test/regress/regress3/issue4170.smt2

index f6592a931e606419a2ab5895a14a4e6c78b005a8..d96e94d4375ff4f56cdbb582dbdcc315d312e6c7 100644 (file)
@@ -109,8 +109,8 @@ api::Term Parser::getExpressionForNameAndType(const std::string& name,
   if(expr.isNull()) {
     // the variable is overloaded, try with type if the type exists
     if(!t.isNull()) {
-      // if we decide later to support annotations for function types, this will update to 
-      // separate t into ( argument types, return type )
+      // if we decide later to support annotations for function types, this will
+      // update to separate t into ( argument types, return type )
       expr = getOverloadedConstantForType(name, t);
       if(expr.isNull()) {
         parseError("Cannot get overloaded constant for type ascription.");
index 8add1c6986f07b2bf9888fdf671057014abb44e6..4b04c77b77fa9e62355d7006f5bac119b0603d65 100644 (file)
@@ -303,9 +303,10 @@ public:
   virtual api::Term getExpressionForName(const std::string& name);
 
   /**
-   * Returns the expression that name should be interpreted as, based on the current binding.
+   * Returns the expression that name should be interpreted as, based on the
+   * current binding.
    *
-   * This is the same as above but where the name has been type cast to t. 
+   * This is the same as above but where the name has been type cast to t.
    */
   virtual api::Term getExpressionForNameAndType(const std::string& name,
                                                 api::Sort t);
@@ -331,9 +332,9 @@ public:
    * This is a generalization of ExprManager::operatorToKind that also
    * handles variables whose types are "function-like", i.e. where
    * checkFunctionLike(fun) returns true.
-   * 
+   *
    * For examples of the latter, this function returns
-   *   APPLY_UF if fun has function type, 
+   *   APPLY_UF if fun has function type,
    *   APPLY_CONSTRUCTOR if fun has constructor type.
    */
   api::Kind getKindForFunction(api::Term fun);
@@ -379,7 +380,7 @@ public:
 
   /**
    * Checks whether the given expression is function-like, i.e.
-   * it expects arguments. This is checked by looking at the type 
+   * it expects arguments. This is checked by looking at the type
    * of fun. Examples of function types are function, constructor,
    * selector, tester.
    * @param fun the expression to check
@@ -443,11 +444,12 @@ public:
   std::vector<api::Term> bindBoundVars(const std::vector<std::string> names,
                                        const api::Sort& type);
 
-  /** Create a new variable definition (e.g., from a let binding). 
+  /** Create a new variable definition (e.g., from a let binding).
    * levelZero is set if the binding must be done at level 0.
    * If a symbol with name already exists,
    *  then if doOverload is true, we create overloaded operators.
-   *  else if doOverload is false, the existing expression is shadowed by the new expression.
+   *  else if doOverload is false, the existing expression is shadowed by the
+   * new expression.
    */
   void defineVar(const std::string& name,
                  const api::Term& val,
@@ -648,9 +650,10 @@ public:
   /** Is the symbol bound to a boolean variable? */
   bool isBoolean(const std::string& name);
 
-  /** Is fun a function (or function-like thing)? 
-  * Currently this means its type is either a function, constructor, tester, or selector.
-  */
+  /** Is fun a function (or function-like thing)?
+   * Currently this means its type is either a function, constructor, tester, or
+   * selector.
+   */
   bool isFunctionLike(api::Term fun);
 
   /** Is the symbol bound to a predicate? */
index e4f46326fda8f1d1853da8de942d5097198bc624..1f25e00dd17c8be0edd9690c7ed661aff405472a 100644 (file)
@@ -143,7 +143,8 @@ ParserBuilder& ParserBuilder::withIncludeFile(bool flag) {
   return *this;
 }
 
-ParserBuilder& ParserBuilder::withForcedLogic(const std::string& logic) {
+ParserBuilder& ParserBuilder::withForcedLogic(const std::string& logic)
+{
   d_logicIsForced = true;
   d_forcedLogic = logic;
   return *this;
index 5961de58777d6dc2e1b7060e15f1d6bd431626dc..56aebdcf76ec0dc2ddd7a61cb4e85223dcc48e7e 100644 (file)
@@ -315,10 +315,7 @@ bool Smt2::isTheoryEnabled(theory::TheoryId theory) const
   return d_logic.isTheoryEnabled(theory);
 }
 
-bool Smt2::isHoEnabled() const
-{
-  return getLogic().isHigherOrder() && options::getUfHo(d_solver->getOptions());
-}
+bool Smt2::isHoEnabled() const { return d_logic.isHigherOrder(); }
 
 bool Smt2::logicIsSet() {
   return d_logicSet;
@@ -505,8 +502,7 @@ Command* Smt2::setLogic(std::string name, bool fromCommand)
   d_logicSet = true;
   d_logic = name;
 
-  // if sygus is enabled, we must enable UF, datatypes, integer arithmetic and
-  // higher-order
+  // if sygus is enabled, we must enable UF, datatypes, and integer arithmetic
   if(sygus()) {
     if (!d_logic.isQuantified())
     {
@@ -772,7 +768,7 @@ void Smt2::checkLogicAllowsFunctions()
     parseError(
         "Functions (of non-zero arity) cannot "
         "be declared in logic "
-        + d_logic.getLogicString() + " unless option --uf-ho is used");
+        + d_logic.getLogicString() + ". Try adding the prefix HO_.");
   }
 }
 
@@ -1012,8 +1008,6 @@ api::Term Smt2::applyParseOp(ParseOp& p, std::vector<api::Term>& args)
       }
     }
   }
-  // Second phase: apply the arguments to the parse op
-  const Options& opts = d_solver->getOptions();
   // handle special cases
   if (p.d_kind == api::CONST_ARRAY && !p.d_type.isNull())
   {
@@ -1102,17 +1096,17 @@ api::Term Smt2::applyParseOp(ParseOp& p, std::vector<api::Term>& args)
   }
   else if (isBuiltinOperator)
   {
-    if (!options::getUfHo(opts)
-        && (kind == api::EQUAL || kind == api::DISTINCT))
+    if (!isHoEnabled() && (kind == api::EQUAL || kind == api::DISTINCT))
     {
-      // need --uf-ho if these operators are applied over function args
+      // need hol if these operators are applied over function args
       for (std::vector<api::Term>::iterator i = args.begin(); i != args.end();
            ++i)
       {
         if ((*i).getSort().isFunction())
         {
           parseError(
-              "Cannot apply equalty to functions unless --uf-ho is set.");
+              "Cannot apply equalty to functions unless logic is prefixed by "
+              "HO_.");
         }
       }
     }
@@ -1155,9 +1149,11 @@ api::Term Smt2::applyParseOp(ParseOp& p, std::vector<api::Term>& args)
       unsigned arity = argt.getFunctionArity();
       if (args.size() - 1 < arity)
       {
-        if (!options::getUfHo(opts))
+        if (!isHoEnabled())
         {
-          parseError("Cannot partially apply functions unless --uf-ho is set.");
+          parseError(
+              "Cannot partially apply functions unless logic is prefixed by "
+              "HO_.");
         }
         Debug("parser") << "Partial application of " << args[0];
         Debug("parser") << " : #argTypes = " << arity;
index 5f078cab7159ac14be5a14c3df9d60f7feedacfc..c96fbf07db3c9367d33c9bdea610b550f8a7b714 100644 (file)
@@ -194,7 +194,11 @@ parseCommand returns [cvc5::Command* cmd = NULL]
         cmd = PARSER_STATE->makeAssertCommand(fr, aexpr, /* cnf == */ false, true);
       }
     ) RPAREN_TOK DOT_TOK
-  | THF_TOK LPAREN_TOK nameN[name] COMMA_TOK
+  | THF_TOK
+    {
+      PARSER_STATE->setHol();
+    }
+    LPAREN_TOK nameN[name] COMMA_TOK
     // Supported THF formulas: either a logic formula or a typing atom (i.e. we
     // ignore subtyping and logic sequents). Also, only TH0
     ( TYPE_TOK COMMA_TOK thfAtomTyping[cmd]
index 764e833619c4a3ccd1736dbf838432ca854baed6..91fcc7a12eaa2110ce731ff98d556626fdc8d858 100644 (file)
@@ -25,6 +25,7 @@
 #include "options/options_public.h"
 #include "parser/parser.h"
 #include "smt/command.h"
+#include "theory/logic_info.h"
 
 // ANTLR defines these, which is really bad!
 #undef true
@@ -37,7 +38,10 @@ Tptp::Tptp(api::Solver* solver,
            SymbolManager* sm,
            bool strictMode,
            bool parseOnly)
-    : Parser(solver, sm, strictMode, parseOnly), d_cnf(false), d_fof(false)
+    : Parser(solver, sm, strictMode, parseOnly),
+      d_cnf(false),
+      d_fof(false),
+      d_hol(false)
 {
   addTheory(Tptp::THEORY_CORE);
 
@@ -312,21 +316,18 @@ api::Term Tptp::applyParseOp(ParseOp& p, std::vector<api::Term>& args)
     isBuiltinKind = true;
   }
   Assert(kind != api::NULL_EXPR);
-  const Options& opts = d_solver->getOptions();
   // Second phase: apply parse op to the arguments
   if (isBuiltinKind)
   {
-    if (!options::getUfHo(opts)
-        && (kind == api::EQUAL || kind == api::DISTINCT))
+    if (!hol() && (kind == api::EQUAL || kind == api::DISTINCT))
     {
-      // need --uf-ho if these operators are applied over function args
+      // need hol if these operators are applied over function args
       for (std::vector<api::Term>::iterator i = args.begin(); i != args.end();
            ++i)
       {
         if ((*i).getSort().isFunction())
         {
-          parseError(
-              "Cannot apply equalty to functions unless --uf-ho is set.");
+          parseError("Cannot apply equalty to functions unless THF.");
         }
       }
     }
@@ -364,9 +365,9 @@ api::Term Tptp::applyParseOp(ParseOp& p, std::vector<api::Term>& args)
       unsigned arity = argt.getFunctionArity();
       if (args.size() - 1 < arity)
       {
-        if (!options::getUfHo(opts))
+        if (!hol())
         {
-          parseError("Cannot partially apply functions unless --uf-ho is set.");
+          parseError("Cannot partially apply functions unless THF.");
         }
         Debug("parser") << "Partial application of " << args[0];
         Debug("parser") << " : #argTypes = " << arity;
@@ -438,6 +439,17 @@ api::Term Tptp::mkDecimal(
   return d_solver->mkReal(ss.str());
 }
 
+bool Tptp::hol() const { return d_hol; }
+void Tptp::setHol()
+{
+  if (d_hol)
+  {
+    return;
+  }
+  d_hol = true;
+  d_solver->setLogic("HO_UF");
+}
+
 void Tptp::forceLogic(const std::string& logic)
 {
   Parser::forceLogic(logic);
index 964c0bdfb3e7af903a8b72286d7185814e52e727..258394486838fd0973137a8998bb7fe1e3f3b78b 100644 (file)
@@ -47,6 +47,9 @@ class Tptp : public Parser {
   bool fof() const { return d_fof; }
   void setFof(bool fof) { d_fof = fof; }
 
+  bool hol() const;
+  void setHol();
+
   void forceLogic(const std::string& logic) override;
 
   void addFreeVar(api::Term var);
@@ -209,6 +212,7 @@ class Tptp : public Parser {
 
   bool d_cnf; // in a cnf formula
   bool d_fof; // in an fof formula
+  bool d_hol;  // in a thf formula
 };/* class Tptp */
 
 
index 67c5c5647bf9475bd04e27634336ad0616bb1758..cd05b84c408e63bc61eac93f798f4b1b6398537f 100644 (file)
@@ -271,11 +271,15 @@ void setDefaults(LogicInfo& logic, bool isInternalSubsolver)
   // Set default options associated with strings-exp. We also set these options
   // if we are using eager string preprocessing, which may introduce quantified
   // formulas at preprocess time.
+  //
+  // We don't want to set this option when we are in logics that contain ALL.
   if (!logic.hasEverything() && logic.isTheoryEnabled(THEORY_STRINGS))
   {
     // If the user explicitly set a logic that includes strings, but is not
     // the generic "ALL" logic, then enable stringsExp.
     opts.strings.stringExp = true;
+    Trace("smt") << "Turning stringExp on since logic does not have everything "
+                    "and string theory is enabled\n";
   }
   if (options::stringExp() || !options::stringLazyPreproc())
   {
@@ -753,7 +757,7 @@ void setDefaults(LogicInfo& logic, bool isInternalSubsolver)
   }
 
   // If in arrays, set the UF handler to arrays
-  if (logic.isTheoryEnabled(THEORY_ARRAYS) && !options::ufHo()
+  if (logic.isTheoryEnabled(THEORY_ARRAYS) && !logic.isHigherOrder()
       && !options::finiteModelFind()
       && (!logic.isQuantified()
           || (logic.isQuantified() && !logic.isTheoryEnabled(THEORY_UF))))
@@ -890,7 +894,7 @@ void setDefaults(LogicInfo& logic, bool isInternalSubsolver)
     options::DecisionMode decMode =
         // anything that uses sygus uses internal
         usesSygus ? options::DecisionMode::INTERNAL :
-                  // ALL
+                  // ALL  or its supersets
             logic.hasEverything()
                 ? options::DecisionMode::JUSTIFICATION
                 : (  // QF_BV
@@ -922,7 +926,7 @@ void setDefaults(LogicInfo& logic, bool isInternalSubsolver)
                           : options::DecisionMode::INTERNAL);
 
     bool stoponly =
-        // ALL
+        // ALL or its supersets
         logic.hasEverything() || logic.isTheoryEnabled(THEORY_STRINGS)
             ? false
             : (  // QF_AUFLIA
@@ -986,8 +990,9 @@ void setDefaults(LogicInfo& logic, bool isInternalSubsolver)
       opts.quantifiers.prenexQuant = options::PrenexQuantMode::NONE;
     }
   }
-  if (options::ufHo())
+  if (logic.isHigherOrder())
   {
+    opts.uf.ufHo = true;
     // if higher-order, then current variants of model-based instantiation
     // cannot be used
     if (options::mbqiMode() != options::MbqiMode::NONE)
index ecebd27c9e90f3dfd1f2f887616f359833d752be..05f8c7a9f8ca4eca4deefefdbb8a4a19ca25f4f7 100644 (file)
@@ -39,7 +39,7 @@ LogicInfo::LogicInfo()
       d_linear(false),
       d_differenceLogic(false),
       d_cardinalityConstraints(false),
-      d_higherOrder(true),
+      d_higherOrder(false),
       d_locked(false)
 {
   for (TheoryId id = THEORY_FIRST; id < THEORY_LAST; ++id)
@@ -117,13 +117,25 @@ bool LogicInfo::isHigherOrder() const
   return d_higherOrder;
 }
 
-/** Is this the all-inclusive logic? */
-bool LogicInfo::hasEverything() const {
-  PrettyCheckArgument(d_locked, *this,
+bool LogicInfo::hasEverything() const
+{
+  PrettyCheckArgument(d_locked,
+                      *this,
                       "This LogicInfo isn't locked yet, and cannot be queried");
-  LogicInfo everything;
-  everything.lock();
-  return *this == everything;
+  // A logic has everything if all theories are enabled as well as quantifiers
+  bool doesNotHaveEverything = !isQuantified();
+  for (TheoryId id = THEORY_FIRST; !doesNotHaveEverything && id < THEORY_LAST;
+       ++id)
+  {
+    // if not configured with symfpu, we allow THEORY_FP to be disabled and
+    // still *this to contain the ALL logic
+    if (!this->d_theories[id]
+        && (id != THEORY_FP || Configuration::isBuiltWithSymFPU()))
+    {
+      doesNotHaveEverything = true;
+    }
+  }
+  return !doesNotHaveEverything;
 }
 
 /** Is this the all-exclusive logic?  (Here, that means propositional logic) */
@@ -275,17 +287,22 @@ std::string LogicInfo::getLogicString() const {
     LogicInfo qf_all_supported;
     qf_all_supported.disableQuantifiers();
     qf_all_supported.lock();
-    if(hasEverything()) {
-      d_logicString = "ALL";
-    } else if(*this == qf_all_supported) {
-      d_logicString = "QF_ALL";
-    } else {
+    stringstream ss;
+    if (isHigherOrder())
+    {
+      ss << "HO_";
+    }
+    if (!isQuantified())
+    {
+      ss << "QF_";
+    }
+    if (*this == qf_all_supported || hasEverything())
+    {
+      ss << "ALL";
+    }
+    else
+    {
       size_t seen = 0; // make sure we support all the active theories
-
-      stringstream ss;
-      if(!isQuantified()) {
-        ss << "QF_";
-      }
       if (d_theories[THEORY_SEP])
       {
         ss << "SEP_";
@@ -309,7 +326,7 @@ std::string LogicInfo::getLogicString() const {
       if(d_theories[THEORY_FP]) {
         ss << "FP";
         ++seen;
-      } 
+      }
       if(d_theories[THEORY_DATATYPES]) {
         ss << "DT";
         ++seen;
@@ -350,9 +367,8 @@ std::string LogicInfo::getLogicString() const {
       if(seen == 0) {
         ss << "SAT";
       }
-
-      d_logicString = ss.str();
     }
+    d_logicString = ss.str();
   }
   return d_logicString;
 }
@@ -374,6 +390,11 @@ void LogicInfo::setLogicString(std::string logicString)
   enableTheory(THEORY_BOOL);
 
   const char* p = logicString.c_str();
+  if (!strncmp(p, "HO_", 3))
+  {
+    enableHigherOrder();
+    p += 3;
+  }
   if(*p == '\0') {
     // propositional logic only; we're done.
   } else if(!strcmp(p, "QF_SAT")) {
@@ -384,14 +405,14 @@ void LogicInfo::setLogicString(std::string logicString)
     enableQuantifiers();
     p += 3;
   } else if(!strcmp(p, "QF_ALL")) {
-    // the "all theories included" logic, no quantifiers
-    enableEverything();
+    // the "all theories included" logic, no quantifiers.
+    enableEverything(d_higherOrder);
     disableQuantifiers();
     arithNonLinear();
     p += 6;
   } else if(!strcmp(p, "ALL")) {
-    // the "all theories included" logic, with quantifiers
-    enableEverything();
+    // the "all theories included" logic, with quantifiers.
+    enableEverything(d_higherOrder);
     enableQuantifiers();
     arithNonLinear();
     p += 3;
@@ -399,7 +420,7 @@ void LogicInfo::setLogicString(std::string logicString)
   else if (!strcmp(p, "HORN"))
   {
     // the HORN logic
-    enableEverything();
+    enableEverything(d_higherOrder);
     enableQuantifiers();
     arithNonLinear();
     p += 4;
@@ -541,9 +562,11 @@ void LogicInfo::setLogicString(std::string logicString)
   d_logicString = logicString;
 }
 
-void LogicInfo::enableEverything() {
+void LogicInfo::enableEverything(bool enableHigherOrder)
+{
   PrettyCheckArgument(!d_locked, *this, "This LogicInfo is locked, and cannot be modified");
   *this = LogicInfo();
+  this->d_higherOrder = enableHigherOrder;
 }
 
 void LogicInfo::disableEverything() {
@@ -584,7 +607,6 @@ void LogicInfo::enableSygus()
   enableTheory(THEORY_UF);
   enableTheory(THEORY_DATATYPES);
   enableIntegers();
-  enableHigherOrder();
 }
 
 void LogicInfo::enableSeparationLogic()
index 107093a5c5bbecf7113344d104af4d4d5a9f9c28..c6aa71ad05b152e9b70724970bfad15b6d5f29da 100644 (file)
@@ -120,7 +120,11 @@ public:
   /** Is this a quantified logic? */
   bool isQuantified() const;
 
-  /** Is this the all-inclusive logic? */
+  /** Is this a logic that includes the all-inclusive logic?
+   *
+   * @return Yields true if the logic corresponds to "ALL" or its super
+   * set including , such as "HO_ALL".
+   */
   bool hasEverything() const;
 
   /** Is this the all-exclusive logic?  (Here, that means propositional logic) */
@@ -168,8 +172,11 @@ public:
   /**
    * Enable all functionality.  All theories, plus quantifiers, will be
    * enabled.
+   *
+   * @param enableHigherOrder Whether HOL should be enable together with the
+   * above.
    */
-  void enableEverything();
+  void enableEverything(bool enableHigherOrder = false);
 
   /**
    * Disable all functionality.  The result will be a LogicInfo with
index f3877edca23a8410d993505ad93e7a113f95e037..0b69011c827fac6e151978ef381711fbdd8ef241 100644 (file)
@@ -1,7 +1,6 @@
 ; EXPECT: sat
-; COMMAND-LINE: --uf-ho
 (set-info :smt-lib-version 2.6)
-(set-logic UFIDL)
+(set-logic HO_UFIDL)
 (set-info :status sat)
 (declare-fun match (Int Int) Int)
 (declare-fun is (Int Int) Int)
index 6a516a3ca3e23bbdabcbba688fab929637befb45..c42bad2356eb1a7dbcf90e2badb36c6899d19802 100644 (file)
@@ -1,8 +1,7 @@
 ; COMMAND-LINE: -q
 ; EXPECT: sat
 ; REQUIRES: symfpu
-(set-logic ALL)
-(set-option :uf-ho true)
+(set-logic HO_ALL)
 (set-option :assign-function-values false)
 (set-info :status sat)
 (declare-fun b () (_ BitVec 1))
index 74a9df660c0b2038b26455fbafaa137aeb62f387..64aaa797d531e26ebafff7c3c776a466cef2c22c 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: sat
-(set-logic UF)
+(set-logic HO_UF)
 (set-info :status sat)
 (declare-sort U 0)
 (declare-fun f (U U) U)
index 101de9081f62ccacfe44ce0b0e1278ed4088a68d..45eeb23a70c5117391815f81085b51962e52f00a 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic UF)
+(set-logic HO_UF)
 (set-info :status unsat)
 (declare-sort U 0)
 (declare-fun f (U U) U)
index 0ed7fe44be54bb8196527470a928724b4c2ff149..c4b517e562c5ff74077581afc853d27ffa54d0a0 100644 (file)
@@ -1,4 +1,3 @@
-% COMMAND-LINE:  --uf-ho
 % EXPECT: % SZS status Unsatisfiable for bug_nodbuilding_interpreted_SYO042^1
 
 %------------------------------------------------------------------------------
index 0ff147b9777457811ff6ac1b991e7c4ba2d08086..493bbf140240e71c59bf9b5fe1aac17d944728d4 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic UFLIA)
+(set-logic HO_UFLIA)
 (set-info :status unsat)
 (declare-fun f (Int) Int)
 (declare-fun g (Int) Int)
index 531356568a8a279efbd3d1f3211dc101521eda1d..b1feafe3e6a0b72d1f875629a02b7f5457454e20 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic UF)
+(set-logic HO_UF)
 (set-info :status unsat)
 (declare-sort U 0)
 (declare-fun f (U) U)
index 990423fb3e5758715e0491ea0045dae0fb46ed87..de37f7044d9bdc23cde2c814db082beddb2b96ff 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: sat
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-info :status sat)
 (declare-fun f (Int Int) Int)
 (declare-fun g (Int) (-> Int Int))
index af33098f54659c7fe2a88bea3e134ef698d03606..81af169a7d6689ce7d409752162e9b4929f7a195 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-info :status unsat)
 (declare-fun f (Int Int) Int)
 (define-fun g ((x Int)) (-> Int Int) (f x))
index 1719d5ad1fb9bf5173894965039204fcac042e2c..282cc3bda032bcce075e105506f76c54614fafad 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic UF)
+(set-logic HO_UF)
 (set-info :status unsat)
 (declare-sort U 0)
 (declare-fun f (U) U)
index 7031829d4c7e15ae23a823bb456a0aa97d148c5b..175ced858a685fe96b0a5c8cfbfd92a071c7e946 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: sat
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-info :status sat)
 (declare-sort U 0)
 (declare-fun f ((-> U U)) U)
index 02e51654e7cf03ff9cce6d9aebc34109135551c5..613533ebd82fd30a91a5cb4aa24c94417c4ce012 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: sat
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-info :status sat)
 (declare-sort U 0)
 (declare-fun f ((-> U U)) U)
index f3392f1bac7f20f98b38198d2f2811d03fd0a17b..cc63c52eaaf1af072f98ce194e02c68cf1d3ff0f 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: sat
-(set-logic UF)
+(set-logic HO_UF)
 (set-info :status sat)
 (declare-sort U 0)
 (declare-fun f (U U) U)
index 772b6eaa0dc43ffe626b386e15d1eb4211b2f71d..f91fb824076e58cb149b921b7bcd021110b6cdd4 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: sat
-(set-logic UF)
+(set-logic HO_UF)
 (set-info :status sat)
 (declare-sort U 0)
 (declare-fun f (U U) U)
index 005a2109a8872b9b85965b3c2423f8ff80bb3873..63e25cb039f3a29b2dd7a7dcc750579c84346747 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic ALL)
+(set-logic HO_ALL)
 
 (declare-datatype Unit ((unit)))
 
index 0fc536bd9e90512b0610de4ecad1f80963cc472c..747bfd48e9c142cc31a3df785d711b4ca94debbd 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic ALL)
+(set-logic HO_ALL)
 (declare-sort Nat$ 0)
 (declare-sort Complex$ 0)
 (declare-sort Real_set$ 0)
index 9f0a39f256fbbc52dd4cbb3e692b01bebee5a001..864bb9859268077c3c935ccbf9499cd93bc16211 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic ALL)
+(set-logic HO_ALL)
 (declare-sort A$ 0)
 (declare-sort Nat$ 0)
 (declare-sort A_poly$ 0)
index 8eae3d0734f7eee27a2cb8a46763691f64d6a9b8..e7cc01772dbbdae58c8e1076830c517ab444e74d 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: sat
-(set-logic ALL)
+(set-logic HO_ALL)
 (declare-fun g (Int) Real)
 (declare-fun h (Int) Real)
 (assert (not (= g h)))
index 3f00118280c1271a8babdd1c23e262f42efb4610..964a45f7797f6a07a1112dce258a1e8747bc80b2 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: sat
-(set-logic UFLIA)
+(set-logic HO_UFLIA)
 (set-info :status sat)
 (declare-fun f1 (Int Int Int Int) Int)
 (declare-fun f2 (Int Int Int) Int)
index 1e4ad243c8501ccaba15de706aea0226c4e2d04b..4418b156f9f0d62a8aad66aa8e247914ac2faa05 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-info :status unsat)
 (declare-fun f (Int Int) Int)
 (declare-fun a () Int)
index 9581e4c4f6d9e3504732e71aa85de9b77e6f163b..e73afdce24169c3a79dd1391d87c9d5e68868ba5 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-info :status unsat)
 
 (declare-sort U 0)
index bd1d2837f18fb6927863f3754673d254b2b377ea..df3a920ec0e69fbc5cc587a1e07a9aface874078 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-info :status unsat)
 
 (declare-sort U 0)
index d6de559e6c1e7e2a1cb54a5cc9d04303f9c232be..506cd55cf12e2bbb0966c02079f1f848e24e925a 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-info :status unsat)
 
 (declare-sort U 0)
index 61d82d00cc1f00e9396f3f8040d6eedd17956a17..1b23fdb6fe86af0cfdf64481bdfcfd93ba2c8cff 100644 (file)
@@ -1,6 +1,6 @@
-; COMMAND-LINE: --uf-ho --finite-model-find
+; COMMAND-LINE: --finite-model-find
 ; EXPECT: sat
-(set-logic UF)
+(set-logic HO_UF)
 (set-info :status sat)
 (declare-sort U 0)
 (declare-fun P (U U) Bool)
index f4833aadfa56dacd4c627b6f2c3ea852ced35895..b43920c2175cbed83dc6278b1035f582be28e0af 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic ALL)
+(set-logic HO_ALL)
 (declare-sort A$ 0)
 (declare-sort Com$ 0)
 (declare-sort Loc$ 0)
index 6c44a94a872dcd92d9644452f45cd2df097e78ff..93c87d3c9c0ae663fcd204ab312e5dea5f905f35 100644 (file)
@@ -1,7 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: sat
-(set-logic QF_AUFBVLIA)
-(set-option :uf-ho true)
+(set-logic HO_QF_AUFBVLIA)
 (declare-fun a () Int)
 (declare-fun b () Int)
 (declare-fun c (Int) Int)
index e97b914a2b634eb955d974a57babf10cc1fe56d1..9091cf8bd3128d7639d2a3324393ffe2f99ac4bd 100644 (file)
@@ -1,7 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: sat
-(set-logic QF_AUFBVLIA)
-(set-option :uf-ho true)
+(set-logic HO_QF_AUFBVLIA)
 (declare-fun a (Int) Int)
 (declare-fun b (Int) Int)
 (assert (distinct a b))
index 474f6887eca3752f39e4164bd677b5977e79e0c8..2e21d3081069b5855ccb562b2841cc3bd48412ef 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: sat
-(set-logic UFLIA)
+(set-logic HO_UFLIA)
 (set-info :status sat)
 (declare-fun x () Int)
 (declare-fun f (Int) Int)
index 80f3db417cb1a6370d791ce50d4aefef5408615e..61753d90a75028fc51b455ce150c9f9f4b294666 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: sat
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-info :status sat)
 (declare-fun f (Int) Int)
 
index 0485f9a6f04a1a84575ccd907bb06b971adf07dc..225faa1a54213cf5dd28cc302a4182475f0e7021 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic UFLIA)
+(set-logic HO_UFLIA)
 (set-info :status unsat)
 (declare-fun f (Int Int Int) Int)
 (declare-fun h (Int Int Int) Int)
index 8e300ac72d07cb840963676d29585d0857d0ef15..984835be71dc82d649dba4862096a627eba79b61 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic UFLIA)
+(set-logic HO_UFLIA)
 (set-info :status unsat)
 (declare-fun P (Int) Bool)
 (declare-fun Q (Int) Bool)
index 722e970b6c27ae21b3a38d3cbe0dbadae0df949f..fb5ac3ec608cfb435fd297cef4bbd1f45664ef77 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unknown
-(set-logic ALL)
+(set-logic HO_ALL)
 (declare-sort $$unsorted 0)
 (declare-sort mu 0)
 
index 41b2a0bca02c8b76ea71de630b94404056d5bee2..18c578367e1509e26ae68fa03fa0cb997523ba2d 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-info :status unsat)
 (declare-sort U 0)
 (declare-fun f (U U) U)
index 8e2315b2f7fdc8e85c9a606bbbf6b32c06ff2904..cbd70f0726c32ae7c6dd6c3de32088b525ae3cb8 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-info :status unsat)
 (declare-sort U 0)
 (declare-fun f (U) U)
index 088abbab194a81b892d2d0cf7561480205d45bf6..b33644db326ad4bec628edcb030d4daee7b48454 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic UF)
+(set-logic HO_UF)
 (set-info :status unsat)
 (declare-sort U 0)
 (declare-fun f (U) U)
index 848ae03492788c0aa5a995f2cd322dfa5eecc58e..6a149cc7111af0b84c477df66cbc311a7ebbc17f 100644 (file)
@@ -1,16 +1,16 @@
 ; REQUIRES: no-competition
 ; COMMAND-LINE: --sygus-out=status --sygus-rec-fun --lang=sygus2
 ; EXPECT-ERROR: (error "Parse Error: pLTL-sygus-syntax-err.sy:80.19: number of arguments does not match the constructor type
-; EXPECT-ERROR: 
+; EXPECT-ERROR:
 ; EXPECT-ERROR: (Op2 <O2> <F>)
 ; EXPECT-ERROR: ^
 ; EXPECT-ERROR: ")
 ; EXIT: 1
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-option :lang sygus2)
 ;(set-option :sygus-out status)
 (set-option :sygus-rec-fun true)
-(set-option :uf-ho true)
+
 
 (define-sort Time () Int)
 
   (and (<= 0 t tn)
        (match f (
          ((P i) (val t i))
-      
-         ((Op1 op g) 
+
+         ((Op1 op g)
            (match op (
-             (NOT (not (holds g t))) 
+             (NOT (not (holds g t)))
 
-             (Y (and (< 0 t) (holds g (- t 1))))    
+             (Y (and (< 0 t) (holds g (- t 1))))
 
              (G (and (holds g t) (or (= t tn) (holds f (+ t 1)))))
 
              (H (and (holds g t) (or (= t 0) (holds f (- t 1)))))
           )))
 
-         ((Op2 op f g)     
+         ((Op2 op f g)
            (match op (
              (AND (and (holds f t) (holds g t)))
 
@@ -88,6 +88,3 @@
 (constraint (holds (Op1 G (phi X0 X1)) 0))
 
 (check-synth)
-
-
-
index b08aa892936ce29afb6cae218b4dc588aaf68212..2f59598ecbae739cfccf9fe2b0ceadc0c2d65db6 100644 (file)
@@ -1,6 +1,6 @@
-; COMMAND-LINE: --lang=sygus2 --sygus-out=status --uf-ho
+; COMMAND-LINE: --lang=sygus2 --sygus-out=status
 ; EXPECT: unsat
-(set-logic ALL)
+(set-logic HO_ALL)
 
 (declare-var uf (-> Int Int))
 
index 9946a4567a2895425e994be1dd666fa5e84405ff..af1f1e1a62cce1b5147ded076d2548f9ed21f3a2 100644 (file)
@@ -1,6 +1,6 @@
-; COMMAND-LINE: --finite-model-find --uf-ho
+; COMMAND-LINE: --finite-model-find
 ; EXPECT: unknown
-(set-logic ALL)
+(set-logic HO_ALL)
 ; this is not handled by fmf
 (assert (forall ((a (-> Int Int)) (b Int)) (not (= (a b) 0))))
 (check-sat)
index 59391ce8c2bc12920071ea0348a8fb44f8243108..11683b1a7e8756c5c8443fbf1ff57b1d7af33b4b 100644 (file)
@@ -1,8 +1,8 @@
-; COMMAND-LINE: --uf-ho --finite-model-find
+; COMMAND-LINE: --finite-model-find
 ; EXPECT: unsat
 
 (set-option :incremental false)
-(set-logic ALL)
+(set-logic HO_ALL)
 (declare-sort $$unsorted 0)
 (declare-sort nat 0)
 (declare-fun x () nat)
index e162a63a43de13911e573566af0f275adb895f83..e07ad784fcaed6160c94d70c8f4f89599cc57e15 100644 (file)
@@ -1,4 +1,4 @@
-% COMMAND-LINE:  --uf-ho --ho-elim
+% COMMAND-LINE:  --ho-elim
 % EXPECT: % SZS status Theorem for NUM925^1
 
 %------------------------------------------------------------------------------
index a8a6bafcaf6837afa0a0eb8852e10fbb2f444ef8..deda234da49ee714e7736fc3423d7d0c0c620e1a 100644 (file)
@@ -1,4 +1,4 @@
-% COMMAND-LINE:  --uf-ho --finite-model-find
+% COMMAND-LINE:  --finite-model-find
 % EXPECT: % SZS status CounterSatisfiable for SYO056^1
 
 %------------------------------------------------------------------------------
index 0dc946d6af0fe968017bb167615fea4807479dbd..23bda7fb22c941e7214a7539bd53deea5a64db4b 100644 (file)
@@ -1,4 +1,3 @@
-% COMMAND-LINE: --uf-ho
 % EXPECT: % SZS status GaveUp for bound_var_bug
 
 % TIMEFORMAT='%3R'; { time (exec 2>&1; /Users/blanchette/misc/leo --foatp e --atp e="$E_HOME"/eprover --atp epclextract="$E_HOME"/epclextract --proofoutput 1 --timeout 30 /Users/blanchette/hgs/afp_mining/tools/judgment_day_2017/data_afp/leo2-mepo/Call_Arity_SestoftGC_data/prob_308__3244432_1 ) ; }
index 6c35270fdafbe004ad5fec269815554ec0e8cd6c..22c1d1dd1ef0a068737317291b9372551beca0f9 100644 (file)
@@ -1,4 +1,4 @@
-% COMMAND-LINE: --uf-ho --finite-model-find
+% COMMAND-LINE: --finite-model-find
 % EXPECT: % SZS status Satisfiable for bug_freeVar_BDD_General_data_270
 
 thf(ty_n_t__Nat__Onat, type,
index 21405dfdbcd53f0809781678c0e7d86829c7443d..7c9de4c49cb47a0d1150b4605b0ef7fcb3be6bae 100644 (file)
@@ -1,7 +1,7 @@
-; COMMAND-LINE: --uf-ho --finite-model-find -q --decision=justification-old
+; COMMAND-LINE: --finite-model-find -q --decision=justification-old
 ; EXPECT: sat
 
-(set-logic ALL)
+(set-logic HO_ALL)
 (declare-sort $$unsorted 0)
 (declare-sort qML_mu 0)
 (declare-sort qML_i 0)
index c33b43ca58e8a088da901f4cb7bbc13d1a292bf9..f67c6db5867a243bebdb5b17f9d9f581a249100e 100644 (file)
@@ -1,4 +1,4 @@
-% COMMAND-LINE:  --uf-ho --uf-ho --finite-model-find
+% COMMAND-LINE:  --finite-model-find
 % EXPECT: % SZS status CounterSatisfiable for fta0328.lfho
 
 % TIMEFORMAT='%3R'; { time (exec 2>&1; /Users/blanchette/.isabelle/contrib/e-2.0-2/x86_64-darwin/eprover --auto-schedule --tstp-in --tstp-out --silent --cpu-limit=2 --proof-object=1 /Users/blanchette/hgs/matryoshka/papers/2019-TACAS-ehoh/eval/judgment_day/judgment_day_lifting_32/fta/prob_804__4064966_1 ) ; }
index 6be063783bc811ee23b6e498338c2d01f5c258f0..c5840e6a962956fa9ebdd7f9f115445e8d0f058b 100644 (file)
@@ -1,6 +1,6 @@
-; COMMAND-LINE: --uf-ho --full-saturate-quant
+; COMMAND-LINE:  --full-saturate-quant
 ; EXPECT: unsat
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-info :status unsat)
 (declare-sort Com$ 0)
 (declare-sort Glb$ 0)
index d536e51a1f0e51430c704afb8c5bf4e99593ad3d..d15095123efe03dc844aa7799e0d7552dc8fe4e1 100644 (file)
@@ -1,7 +1,7 @@
-; COMMAND-LINE:  --uf-ho --ho-elim
+; COMMAND-LINE:  --ho-elim
 ; EXPECT: unsat
 
-(set-logic ALL)
+(set-logic HO_ALL)
 (declare-sort $$unsorted 0)
 (declare-sort num 0)
 (declare-fun agent_THFTYPE_i () $$unsorted)
index 9852150d9749acba7ff632e1fc0fe825fa5aa829..a13aa2bae4cbf860f8f31464f293830b3bcdf4a2 100644 (file)
@@ -1,7 +1,6 @@
-(set-logic AUFBV)
+(set-logic HO_AUFBV)
 (set-info :status unsat)
 (set-option :fmf-bound-int true)
-(set-option :uf-ho true)
 (declare-fun _substvar_20_ () Bool)
 (declare-sort S4 0)
 (assert (forall ((q15 S4) (q16 (_ BitVec 20)) (q17 (_ BitVec 13))) (xor (= (_ bv0 13) (_ bv0 13) q17 (bvsrem (_ bv0 13) (_ bv0 13)) q17) _substvar_20_ true)))
index d3066c2824c289c8590f2f3f863e96e264968f92..83a3e08b98e8fe85b63d6c6db2757b392694842a 100644 (file)
@@ -1,10 +1,9 @@
-; COMMAND-LINE: --uf-ho --sort-inference
+; COMMAND-LINE: --sort-inference
 ; EXPECT: sat
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-option :sort-inference true)
-(set-option :uf-ho true)
 (set-info :status sat)
-(declare-fun a ( Int ) Int) 
-(declare-fun b ( Int ) Int)  
-(assert (and (distinct 0 (b 5)) (distinct a b ))) 
-(check-sat) 
+(declare-fun a ( Int ) Int)
+(declare-fun b ( Int ) Int)
+(assert (and (distinct 0 (b 5)) (distinct a b )))
+(check-sat)
index 60a754aadc8add9abd30fe65aaec2e9d3a80290b..0003bc91e3eaff4d709070b7ae3893af1f9b262d 100644 (file)
@@ -1,7 +1,6 @@
-; COMMAND-LINE: --uf-ho --sort-inference
+; COMMAND-LINE: --sort-inference
 ; EXPECT: sat
-(set-logic ALL)
-(set-option :uf-ho true)
+(set-logic HO_ALL)
 (set-option :sort-inference true)
 (set-info :status sat)
 (declare-fun a () Int)
index 313ff68a1e4df2712374c33980e54c1e7b03b3bc..6a8feba5c059cd28dba7f4bf1dbc44e40d26fa75 100644 (file)
@@ -1,7 +1,7 @@
-; COMMAND-LINE: --uf-ho --no-check-unsat-cores --no-produce-models --ho-elim
+; COMMAND-LINE: --no-check-unsat-cores --no-produce-models --ho-elim
 ; EXPECT: unsat
 
-(set-logic ALL)
+(set-logic HO_ALL)
 (declare-sort $$unsorted 0)
 (declare-sort mu 0)
 (declare-fun meq_ind (mu mu $$unsorted) Bool)
index 6743e00d47f173349acaf55c6c158b2a0cebff9f..3f02e56fd4b6af396b021236741b83d85a3f6c44 100644 (file)
@@ -1,8 +1,7 @@
-; COMMAND-LINE:  --uf-ho --finite-model-find --no-check-models
+; COMMAND-LINE:  --finite-model-find --no-check-models
 ; EXPECT: sat
 
-
-(set-logic ALL)
+(set-logic HO_ALL)
 (declare-sort $$unsorted 0)
 
 (declare-fun mvalid ((-> $$unsorted Bool)) Bool)
index baabd675a4fe2c72a5da1ba8cfedf486f41785d8..4068cc42eaa077b7d602a8afaf6136223e4f6fbe 100644 (file)
@@ -1,4 +1,4 @@
-% COMMAND-LINE:  --uf-ho --finite-model-find
+% COMMAND-LINE:   --finite-model-find
 % EXPECT: % SZS status GaveUp for soundness_fmf_SYO362^5-delta
 
 %------------------------------------------------------------------------------
index d67eb8dad249486e63e291225eaaf8c1ea8fbed4..d000a17d0c3e65c1c85d45853c7376447c3bd44f 100644 (file)
@@ -1,5 +1,5 @@
-% COMMAND-LINE: --uf-ho --full-saturate-quant --ho-elim-store-ax
-% COMMAND-LINE: --uf-ho --full-saturate-quant --ho-elim
+% COMMAND-LINE: --full-saturate-quant --ho-elim-store-ax
+% COMMAND-LINE: --full-saturate-quant --ho-elim
 % EXPECT: % SZS status Theorem for store-ax-min
 
 thf(a, type, (a: $i)).
index 6dd874fbf487a12349e10fcc38a9bcc521ac97a2..32e82a8b568cde71a2f60b039d7a99326bd97987 100644 (file)
@@ -1,6 +1,6 @@
-; COMMAND-LINE: --uf-ho
+; COMMAND-LINE:
 ; EXPECT: unknown
-(set-logic ALL)
+(set-logic HO_ALL)
 (assert
 (forall ((BOUND_VARIABLE_313 Bool) (BOUND_VARIABLE_314 (-> Int Bool)) (BOUND_VARIABLE_315 (-> Int Int)) (BOUND_VARIABLE_316 Int) (BOUND_VARIABLE_317 (-> Int Bool)) (BOUND_VARIABLE_318 Int)) (! (not (and (not (and (= (ite (and (not (= BOUND_VARIABLE_318 0)) (BOUND_VARIABLE_314 (BOUND_VARIABLE_315 (ite (not (BOUND_VARIABLE_314 0)) 0 (ite BOUND_VARIABLE_313 0 (ite (and (not (or (and BOUND_VARIABLE_313 BOUND_VARIABLE_313) BOUND_VARIABLE_313)) (BOUND_VARIABLE_314 0)) 0 (ite (and (not (or (and BOUND_VARIABLE_313 BOUND_VARIABLE_313) BOUND_VARIABLE_313)) (or (not BOUND_VARIABLE_313) BOUND_VARIABLE_313)) 0 (ite (not (or (and BOUND_VARIABLE_313 BOUND_VARIABLE_313) BOUND_VARIABLE_313)) 0 9)))))))) (ite (BOUND_VARIABLE_317 (BOUND_VARIABLE_315 (ite (not (BOUND_VARIABLE_314 0)) 0 (ite BOUND_VARIABLE_313 0 (ite (and (not (or (and BOUND_VARIABLE_313 BOUND_VARIABLE_313) BOUND_VARIABLE_313)) (BOUND_VARIABLE_314 0)) 0 (ite (and (not (or (and BOUND_VARIABLE_313 BOUND_VARIABLE_313) BOUND_VARIABLE_313)) (or (not BOUND_VARIABLE_313) BOUND_VARIABLE_313)) 0 (ite (not (or (and BOUND_VARIABLE_313 BOUND_VARIABLE_313) BOUND_VARIABLE_313)) 0 9))))))) BOUND_VARIABLE_316 0) 0) 0) (not (BOUND_VARIABLE_314 (BOUND_VARIABLE_315 (ite (not (BOUND_VARIABLE_314 0)) 0 (ite BOUND_VARIABLE_313 0 (ite (and (not (or (and BOUND_VARIABLE_313 BOUND_VARIABLE_313) BOUND_VARIABLE_313)) (BOUND_VARIABLE_314 0)) 0 (ite (and (not (or (and BOUND_VARIABLE_313 BOUND_VARIABLE_313) BOUND_VARIABLE_313)) (or (not BOUND_VARIABLE_313) BOUND_VARIABLE_313)) 0 (ite (not (or (and BOUND_VARIABLE_313 BOUND_VARIABLE_313) BOUND_VARIABLE_313)) 0 9)))))))))) true)) :pattern (true)))
 )
index 03bbd9469554eef3145e6d8424c5989f173dc533..9cb5cdac3f607605a9f90c8dcb74e86f3f43a68d 100644 (file)
@@ -1,9 +1,9 @@
-(set-logic ALL)
+; COMMAND-LINE:
+(set-logic HO_ALL)
 (set-option :ag-miniscope-quant true)
 (set-option :conjecture-gen true)
 (set-option :int-wf-ind true)
 (set-option :sygus-inference true)
-(set-option :uf-ho true)
 (set-info :status unsat)
 (declare-fun a () Real)
 (declare-fun b () Real)
index e2bf9d1440eb2556e877ec9261b1989f508bb2f3..e007eec51f0aac7e2193fba7481ca55435971afa 100644 (file)
@@ -1,6 +1,6 @@
 ; EXPECT: unsat
-; COMMAND-LINE: --lang=sygus2 --sygus-out=status --uf-ho
-(set-logic ALL)
+; COMMAND-LINE: --lang=sygus2 --sygus-out=status
+(set-logic HO_ALL)
 (declare-sort S 0)
 (declare-var f Bool)
 (declare-var u (-> S Bool))
@@ -9,7 +9,7 @@
 (define-fun init ((f Bool) (u (-> S Bool))) Bool (and f (forall ((x S)) (not (u x)))))
 (define-fun trans ((f Bool) (u (-> S Bool)) (new_f Bool) (new_u (-> S Bool))) Bool (and (not new_f) (exists ((x S)) (forall ((y S)) (= (new_u y) (or (u y) (= y x)))))))
 ;(define-fun trans ((f Bool) (u (-> S Bool)) (new_f Bool) (new_u (-> S Bool))) Bool (and new_f (exists ((x S)) (forall ((y S)) (= (new_u y) (or (u y) (= y x)))))))
-(synth-fun inv_matrix ((f Bool) (u (-> S Bool)) (x S)) Bool ((Start Bool)) ((Start Bool ( (or (not 
+(synth-fun inv_matrix ((f Bool) (u (-> S Bool)) (x S)) Bool ((Start Bool)) ((Start Bool ( (or (not
 (u x)) (not f))))))
 (define-fun inv ((f Bool) (u (-> S Bool))) Bool (forall ((x S)) (inv_matrix f u x)))
 (constraint (=> (and (inv f u) (trans f u new_f new_u)) (inv new_f new_u)))
index 893c2034e6443ba57e12f115a5c120d03b4acf04..d46d8ecde869a979b6aa5f42c6bcab6898bdbc63 100644 (file)
@@ -1,6 +1,6 @@
 ; EXPECT: unsat
-; COMMAND-LINE: --lang=sygus2 --sygus-out=status --uf-ho
-(set-logic ALL)
+; COMMAND-LINE: --lang=sygus2 --sygus-out=status
+(set-logic HO_ALL)
 (synth-fun f ((y (-> Int Int)) (z Int)) Int)
 (declare-var z (-> Int Int))
 (constraint (= (f z 0) (z 1)))
index c8700f37b75212c68c57de8887ca6848498f82fe..1bbcb29847f5363ff4d28393ec53c1a2c0005544 100644 (file)
@@ -1,6 +1,6 @@
 ; EXPECT: sat
-; COMMAND-LINE: --sygus-inference --uf-ho --quiet
-(set-logic ALL)
+; COMMAND-LINE: --sygus-inference --quiet
+(set-logic HO_ALL)
 (declare-fun f (Int) Bool)
 (declare-fun g (Int) Bool)
 (assert (and (distinct f g) (g 0)))
index bc882fc8aa721a9211c99958d32bc9a774e140b1..711afb2d8bb6cca1447b33b19a74299ee2b68da3 100644 (file)
@@ -1,6 +1,6 @@
 ; EXPECT: unsat
-; COMMAND-LINE: --sygus-inference --fmf-bound --uf-ho
-(set-logic ALL)
+; COMMAND-LINE: --sygus-inference --fmf-bound
+(set-logic HO_ALL)
 (declare-fun a () (_ BitVec 1))
 (assert (bvsgt (bvsmod a a) #b0))
 (check-sat)
index 2e10a0c71523f3508e190d88c23ac25d640957ae..cb1ae27219fc4d04c1c40af5047b13be90d75946 100644 (file)
@@ -1,23 +1,23 @@
 ; EXPECT: unsat
-; COMMAND-LINE: --sygus-out=status --lang=sygus2 --uf-ho
+; COMMAND-LINE: --sygus-out=status --lang=sygus2
 
-(set-logic ALL)
+(set-logic HO_ALL)
 
 (declare-datatype List ((cons (head Int) (tail List)) (nil)))
 
 (define-fun-rec List_rec ((x Int) (y (-> Int List Int Int)) (l List)) Int
-  (ite ((_ is nil) l) x 
+  (ite ((_ is nil) l) x
                       (y (head l) (tail l) (List_rec x y (tail l)))))
 
 (synth-fun f () Int
   ((I Int))
   ((I Int  (0 1 (+ I I)))))
-   
+
 (synth-fun g ((x Int) (y List) (z Int)) Int
   ((I Int) (L List))
   ((I Int  (x z (+ I I) (head L) 0 1))
    (L List (y (tail y)))))
-   
+
 
 (constraint (= (List_rec f g (cons 0 (cons 1 nil))) 2))
 (constraint (= (List_rec f g (cons 0 (cons 0 nil))) 2))
index 7e1cd80b30b901a8d3077b5d22c158a1efe2bdcb..c74ce79b7df9f0ef6a4e001c5291adac6cf5fc30 100644 (file)
@@ -1,6 +1,6 @@
 ; EXPECT: unsat
-; COMMAND-LINE: --lang=sygus2 --sygus-out=status --uf-ho
-(set-logic ALL)
+; COMMAND-LINE: --lang=sygus2 --sygus-out=status
+(set-logic HO_ALL)
 
 (declare-var uf (-> Int Int))
 
index 690e572906617bdaad50024bac32fcdeb0657d23..bfcfe39fd03e0094f06b6c1fdade01ca3930c381 100644 (file)
@@ -1,7 +1,7 @@
-; COMMAND-LINE: --produce-abducts --uf-ho
+; COMMAND-LINE: --produce-abducts
 ; SCRUBBER: grep -v -E '(\(define-fun)'
 ; EXIT: 0
-(set-logic UFLIA)
+(set-logic HO_UFLIA)
 (declare-fun f (Int) Int)
 (declare-fun a () Int)
 (assert (and (<= 0 a) (< a 4)))
index eb0bb5d36cc72aaf0ee1b9bda6032a9ea9bea06f..fc788a15cf365c22a96c2b87e436f00b195637c5 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-info :status unsat)
 (declare-sort Msg$ 0)
 (declare-sort Nat$ 0)
index a62a2080a1c7709c0911960a1081fd5320b9193f..bf58b95d809817963ef5b9c23a4c255f5dc734c5 100644 (file)
@@ -1,4 +1,4 @@
-% COMMAND-LINE:  --uf-ho --full-saturate-quant --ho-elim
+% COMMAND-LINE:  --full-saturate-quant --ho-elim
 % EXPECT: % SZS status Theorem for bug_instfalse_SEU882^5
 
 %------------------------------------------------------------------------------
index 51ac5f2da710e7c611d7eda6ff26fcd4e7238b20..5516c804aacf7e68e00982d064de8350d02d3f4a 100644 (file)
@@ -1,6 +1,5 @@
-; COMMAND-LINE: --uf-ho
 ; EXPECT: unsat
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-info :status unsat)
 (declare-sort Nat$ 0)
 (declare-sort Complex$ 0)
index d0577dd1f1008d511e43cacaf2c1230adc2e8e99..47a89143d7d846bdecefcd8ccdb2f0d668915c89 100644 (file)
@@ -1,4 +1,4 @@
-% COMMAND-LINE:  --uf-ho --ho-elim
+% COMMAND-LINE:  --ho-elim
 % EXPECT: % SZS status Theorem for involved_parsing_ALG248^3
 
 %------------------------------------------------------------------------------
index 37c7a02e883c37ee6a46b1bc70548219d35ca9b6..5f87519d1edc4ffbb9fa088eb80314d6007d42f6 100644 (file)
@@ -1,4 +1,4 @@
-% COMMAND-LINE: --uf-ho --full-saturate-quant --ho-elim
+% COMMAND-LINE: --full-saturate-quant --ho-elim
 % EXPECT: % SZS status Theorem for partial_app_interpreted_SWW474^2
 
 %------------------------------------------------------------------------------
index b9537fd0e13d585e5bc037da3da421dc09458e70..41fe3d54119e1d2dbdb2996581ba72141f27b03c 100644 (file)
@@ -1,4 +1,4 @@
-% COMMAND-LINE: --uf-ho --full-saturate-quant --ho-elim --decision=justification-old
+% COMMAND-LINE: --full-saturate-quant --ho-elim --decision=justification-old
 % EXPECT: % SZS status Theorem for SYO362^5
 
 thf(cK,type,(
index 0dee146c0bb0e0a805cc3829f0d4a9ee888df49c..25e0c7f8dfe7a7747e79f3d7b8b4da1c8ce2e29d 100644 (file)
@@ -1,6 +1,5 @@
-(set-logic ALL)
+(set-logic HO_ALL)
 (set-option :sygus-inference true)
-(set-option :uf-ho true)
 (set-option :sygus-ext-rew false)
 (set-info :status sat)
 (declare-fun a (Int) Int)