src/HOL/Tools/SMT/smt_systems.ML
changeset 82204 c819ee4cdea9
parent 82090 023845c29d48
equal deleted inserted replaced
82203:c535cfba16db 82204:c819ee4cdea9
   102   command = make_command "CVC4",
   102   command = make_command "CVC4",
   103   options = cvc4_options,
   103   options = cvc4_options,
   104   smt_options = [(":produce-unsat-cores", "true")],
   104   smt_options = [(":produce-unsat-cores", "true")],
   105   good_slices =
   105   good_slices =
   106     (* FUDGE *)
   106     (* FUDGE *)
       
   107     [((4, false, false, 512, meshN), ["--full-saturate-quant", "--inst-when=full-last-call", "--inst-no-entail", "--term-db-mode=relevant", "--multi-trigger-linear"]),
       
   108      ((4, false, false, 64, meshN), ["--decision=internal", "--simplification=none", "--full-saturate-quant"]),
       
   109      ((4, false, true, 256, mepoN), ["--trigger-sel=max", "--full-saturate-quant"]),
       
   110      ((4, false, false, 1024, meshN), ["--relevant-triggers", "--full-saturate-quant"]),
       
   111      ((4, false, false, 32, meshN), ["--term-db-mode=relevant", "--full-saturate-quant"]),
       
   112      ((4, false, false, 128, meshN), ["--no-e-matching", "--full-saturate-quant"]),
       
   113      ((4, false, false, 256, meshN), ["--finite-model-find", "--fmf-inst-engine"])],
       
   114   outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"),
       
   115   parse_proof = SOME (K CVC_Proof_Parse.parse_proof),
       
   116   replay = NONE }
       
   117 
       
   118 val cvc5: SMT_Solver.solver_config = {
       
   119   name = "cvc5",
       
   120   class = select_class,
       
   121   avail = make_avail "CVC5",
       
   122   command = make_command "CVC5",
       
   123   options = cvc5_options,
       
   124   smt_options = [(":produce-unsat-cores", "true")],
       
   125   good_slices =
       
   126     (* FUDGE *)
   107     [((2, false, false, 512, meshN), ["--full-saturate-quant", "--inst-when=full-last-call", "--inst-no-entail", "--term-db-mode=relevant", "--multi-trigger-linear"]),
   127     [((2, false, false, 512, meshN), ["--full-saturate-quant", "--inst-when=full-last-call", "--inst-no-entail", "--term-db-mode=relevant", "--multi-trigger-linear"]),
   108      ((2, false, false, 64, meshN), ["--decision=internal", "--simplification=none", "--full-saturate-quant"]),
   128      ((2, false, false, 64, meshN), ["--decision=internal", "--simplification=none", "--full-saturate-quant"]),
   109      ((2, false, true, 256, mepoN), ["--trigger-sel=max", "--full-saturate-quant"]),
   129      ((2, false, true, 256, mepoN), ["--trigger-sel=max", "--full-saturate-quant"]),
   110      ((2, false, false, 1024, meshN), ["--relevant-triggers", "--full-saturate-quant"]),
   130      ((2, false, false, 1024, meshN), ["--relevant-triggers", "--full-saturate-quant"]),
   111      ((2, false, false, 32, meshN), ["--term-db-mode=relevant", "--full-saturate-quant"]),
   131      ((2, false, false, 32, meshN), ["--term-db-mode=relevant", "--full-saturate-quant"]),
   113      ((2, false, false, 256, meshN), ["--finite-model-find", "--fmf-inst-engine"])],
   133      ((2, false, false, 256, meshN), ["--finite-model-find", "--fmf-inst-engine"])],
   114   outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"),
   134   outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"),
   115   parse_proof = SOME (K CVC_Proof_Parse.parse_proof),
   135   parse_proof = SOME (K CVC_Proof_Parse.parse_proof),
   116   replay = NONE }
   136   replay = NONE }
   117 
   137 
   118 val cvc5: SMT_Solver.solver_config = {
       
   119   name = "cvc5",
       
   120   class = select_class,
       
   121   avail = make_avail "CVC5",
       
   122   command = make_command "CVC5",
       
   123   options = cvc5_options,
       
   124   smt_options = [(":produce-unsat-cores", "true")],
       
   125   good_slices =
       
   126     (* FUDGE *)
       
   127     [((2, false, false, 512, meshN), ["--full-saturate-quant", "--inst-when=full-last-call", "--inst-no-entail", "--term-db-mode=relevant", "--multi-trigger-linear"]),
       
   128      ((2, false, false, 64, meshN), ["--decision=internal", "--simplification=none", "--full-saturate-quant"]),
       
   129      ((2, false, true, 256, mepoN), ["--trigger-sel=max", "--full-saturate-quant"]),
       
   130      ((2, false, false, 1024, meshN), ["--relevant-triggers", "--full-saturate-quant"]),
       
   131      ((2, false, false, 32, meshN), ["--term-db-mode=relevant", "--full-saturate-quant"]),
       
   132      ((2, false, false, 128, meshN), ["--no-e-matching", "--full-saturate-quant"]),
       
   133      ((2, false, false, 256, meshN), ["--finite-model-find", "--fmf-inst-engine"])],
       
   134   outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"),
       
   135   parse_proof = SOME (K CVC_Proof_Parse.parse_proof),
       
   136   replay = NONE }
       
   137 
       
   138 (*
   138 (*
   139 We need different options for alethe proof production by cvc5 and the smt_options
   139 We need different options for alethe proof production by cvc5 and the smt_options
   140 cannot be changed, so different configuration.
   140 cannot be changed, so different configuration.
   141 *)
   141 *)
   142 val cvc5_proof: SMT_Solver.solver_config = {
   142 val cvc5_proof: SMT_Solver.solver_config = {
   146   command = make_command "CVC5",
   146   command = make_command "CVC5",
   147   options = cvc5_options,
   147   options = cvc5_options,
   148   smt_options = [(":produce-proofs", "true")],
   148   smt_options = [(":produce-proofs", "true")],
   149   good_slices =
   149   good_slices =
   150     (* FUDGE *)
   150     (* FUDGE *)
   151     [((2, false, false, 512, meshN), ["--full-saturate-quant", "--inst-when=full-last-call", "--inst-no-entail", "--term-db-mode=relevant", "--multi-trigger-linear"]),
   151     [((4, false, false, 512, meshN), ["--full-saturate-quant", "--inst-when=full-last-call", "--inst-no-entail", "--term-db-mode=relevant", "--multi-trigger-linear"]),
   152      ((2, false, false, 64, meshN), ["--decision=internal", "--simplification=none", "--full-saturate-quant"]),
   152      ((4, false, false, 64, meshN), ["--decision=internal", "--simplification=none", "--full-saturate-quant"]),
   153      ((2, false, true, 256, mepoN), ["--trigger-sel=max", "--full-saturate-quant"]),
   153      ((4, false, true, 256, mepoN), ["--trigger-sel=max", "--full-saturate-quant"]),
   154      ((2, false, false, 1024, meshN), ["--relevant-triggers", "--full-saturate-quant"]),
   154      ((4, false, false, 1024, meshN), ["--relevant-triggers", "--full-saturate-quant"]),
   155      ((2, false, false, 32, meshN), ["--term-db-mode=relevant", "--full-saturate-quant"]),
   155      ((4, false, false, 32, meshN), ["--term-db-mode=relevant", "--full-saturate-quant"]),
   156      ((2, false, false, 128, meshN), ["--no-e-matching", "--full-saturate-quant"]),
   156      ((4, false, false, 128, meshN), ["--no-e-matching", "--full-saturate-quant"]),
   157      ((2, false, false, 256, meshN), ["--finite-model-find", "--fmf-inst-engine"])],
   157      ((4, false, false, 256, meshN), ["--finite-model-find", "--fmf-inst-engine"])],
   158   outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"),
   158   outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"),
   159   parse_proof = SOME (K CVC_Proof_Parse.parse_proof),
   159   parse_proof = SOME (K CVC_Proof_Parse.parse_proof),
   160   replay = SOME CVC5_Replay.replay }
   160   replay = SOME CVC5_Replay.replay }
   161 
   161 
   162 end
   162 end
   191   command = the o check_tool "ISABELLE_VERIT",
   191   command = the o check_tool "ISABELLE_VERIT",
   192   options = veriT_options,
   192   options = veriT_options,
   193   smt_options = [(":produce-proofs", "true")],
   193   smt_options = [(":produce-proofs", "true")],
   194   good_slices =
   194   good_slices =
   195     (* FUDGE *)
   195     (* FUDGE *)
   196     [((2, false, false, 1024, meshN), []),
   196     [((4, false, false, 1024, meshN), []),
   197      ((2, false, false, 512, mashN), []),
   197      ((4, false, false, 512, mashN), []),
   198      ((2, false, true, 128, meshN), []),
   198      ((4, false, true, 128, meshN), []),
   199      ((2, false, false, 64, meshN), []),
   199      ((4, false, false, 64, meshN), []),
   200      ((2, false, false, 256, mepoN), []),
   200      ((4, false, false, 256, mepoN), []),
   201      ((2, false, false, 32, meshN), [])],
   201      ((4, false, false, 32, meshN), [])],
   202   outcome = on_first_non_unsupported_line (outcome_of "unsat" "sat" "unknown" "Time limit exceeded"),
   202   outcome = on_first_non_unsupported_line (outcome_of "unsat" "sat" "unknown" "Time limit exceeded"),
   203   parse_proof = SOME (K Lethe_Proof_Parse.parse_proof),
   203   parse_proof = SOME (K Lethe_Proof_Parse.parse_proof),
   204   replay = SOME Verit_Replay.replay }
   204   replay = SOME Verit_Replay.replay }
   205 
   205 
   206 end
   206 end
   232   command = fn () => [getenv "Z3_SOLVER", "-in"],
   232   command = fn () => [getenv "Z3_SOLVER", "-in"],
   233   options = z3_options,
   233   options = z3_options,
   234   smt_options = [(":produce-proofs", "true")],
   234   smt_options = [(":produce-proofs", "true")],
   235   good_slices =
   235   good_slices =
   236     (* FUDGE *)
   236     (* FUDGE *)
   237     [((2, false, false, 1024, meshN), []),
   237     [((4, false, false, 1024, meshN), []),
   238      ((2, false, false, 512, mepoN), []),
   238      ((4, false, false, 512, mepoN), []),
   239      ((2, false, false, 64, meshN), []),
   239      ((4, false, false, 64, meshN), []),
   240      ((2, false, true, 256, meshN), []),
   240      ((4, false, true, 256, meshN), []),
   241      ((2, false, false, 128, mashN), []),
   241      ((4, false, false, 128, mashN), []),
   242      ((2, false, false, 32, meshN), [])],
   242      ((4, false, false, 32, meshN), [])],
   243   outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"),
   243   outcome = on_first_line (outcome_of "unsat" "sat" "unknown" "timeout"),
   244   parse_proof = SOME Z3_Replay.parse_proof,
   244   parse_proof = SOME Z3_Replay.parse_proof,
   245   replay = SOME Z3_Replay.replay }
   245   replay = SOME Z3_Replay.replay }
   246 
   246 
   247 end
   247 end