src/HOL/Tools/ATP/atp_systems.ML
changeset 38997 78ac4468cf9d
parent 38817 bf27c24ba224
child 38999 8223d0f8f5cc
equal deleted inserted replaced
38996:6905ba37376c 38997:78ac4468cf9d
    18      arguments: bool -> Time.time -> string,
    18      arguments: bool -> Time.time -> string,
    19      has_incomplete_mode: bool,
    19      has_incomplete_mode: bool,
    20      proof_delims: (string * string) list,
    20      proof_delims: (string * string) list,
    21      known_failures: (failure * string) list,
    21      known_failures: (failure * string) list,
    22      default_max_relevant: int,
    22      default_max_relevant: int,
    23      default_theory_relevant: bool,
       
    24      explicit_forall: bool,
    23      explicit_forall: bool,
    25      use_conjecture_for_hypotheses: bool}
    24      use_conjecture_for_hypotheses: bool}
    26 
    25 
    27   val string_for_failure : failure -> string
    26   val string_for_failure : failure -> string
    28   val known_failure_in_output :
    27   val known_failure_in_output :
    51    arguments: bool -> Time.time -> string,
    50    arguments: bool -> Time.time -> string,
    52    has_incomplete_mode: bool,
    51    has_incomplete_mode: bool,
    53    proof_delims: (string * string) list,
    52    proof_delims: (string * string) list,
    54    known_failures: (failure * string) list,
    53    known_failures: (failure * string) list,
    55    default_max_relevant: int,
    54    default_max_relevant: int,
    56    default_theory_relevant: bool,
       
    57    explicit_forall: bool,
    55    explicit_forall: bool,
    58    use_conjecture_for_hypotheses: bool}
    56    use_conjecture_for_hypotheses: bool}
    59 
    57 
    60 val missing_message_tail =
    58 val missing_message_tail =
    61   " appears to be missing. You will need to install it if you want to run \
    59   " appears to be missing. You will need to install it if you want to run \
   158       (OutOfResources,
   156       (OutOfResources,
   159        "# Cannot determine problem status within resource limit"),
   157        "# Cannot determine problem status within resource limit"),
   160       (OutOfResources, "SZS status: ResourceOut"),
   158       (OutOfResources, "SZS status: ResourceOut"),
   161       (OutOfResources, "SZS status ResourceOut")],
   159       (OutOfResources, "SZS status ResourceOut")],
   162    default_max_relevant = 500 (* FUDGE *),
   160    default_max_relevant = 500 (* FUDGE *),
   163    default_theory_relevant = false,
       
   164    explicit_forall = false,
   161    explicit_forall = false,
   165    use_conjecture_for_hypotheses = true}
   162    use_conjecture_for_hypotheses = true}
   166 
   163 
   167 val e = ("e", e_config)
   164 val e = ("e", e_config)
   168 
   165 
   185       (OutOfResources, "SPASS beiseite: Maximal number of loops exceeded"),
   182       (OutOfResources, "SPASS beiseite: Maximal number of loops exceeded"),
   186       (MalformedInput, "Undefined symbol"),
   183       (MalformedInput, "Undefined symbol"),
   187       (MalformedInput, "Free Variable"),
   184       (MalformedInput, "Free Variable"),
   188       (SpassTooOld, "tptp2dfg")],
   185       (SpassTooOld, "tptp2dfg")],
   189    default_max_relevant = 350 (* FUDGE *),
   186    default_max_relevant = 350 (* FUDGE *),
   190    default_theory_relevant = true,
       
   191    explicit_forall = true,
   187    explicit_forall = true,
   192    use_conjecture_for_hypotheses = true}
   188    use_conjecture_for_hypotheses = true}
   193 
   189 
   194 val spass = ("spass", spass_config)
   190 val spass = ("spass", spass_config)
   195 
   191 
   215       (TimedOut, "SZS status Timeout"),
   211       (TimedOut, "SZS status Timeout"),
   216       (Unprovable, "Satisfiability detected"),
   212       (Unprovable, "Satisfiability detected"),
   217       (Unprovable, "Termination reason: Satisfiable"),
   213       (Unprovable, "Termination reason: Satisfiable"),
   218       (VampireTooOld, "not a valid option")],
   214       (VampireTooOld, "not a valid option")],
   219    default_max_relevant = 400 (* FUDGE *),
   215    default_max_relevant = 400 (* FUDGE *),
   220    default_theory_relevant = false,
       
   221    explicit_forall = false,
   216    explicit_forall = false,
   222    use_conjecture_for_hypotheses = true}
   217    use_conjecture_for_hypotheses = true}
   223 
   218 
   224 val vampire = ("vampire", vampire_config)
   219 val vampire = ("vampire", vampire_config)
   225 
   220 
   254   case get_system name versions of
   249   case get_system name versions of
   255     NONE => error ("System " ^ quote name ^ " not available at SystemOnTPTP.")
   250     NONE => error ("System " ^ quote name ^ " not available at SystemOnTPTP.")
   256   | SOME sys => sys
   251   | SOME sys => sys
   257 
   252 
   258 fun remote_config system_name system_versions proof_delims known_failures
   253 fun remote_config system_name system_versions proof_delims known_failures
   259                   default_max_relevant default_theory_relevant
   254                   default_max_relevant use_conjecture_for_hypotheses
   260                   use_conjecture_for_hypotheses : prover_config =
   255                   : prover_config =
   261   {exec = ("ISABELLE_ATP", "scripts/remote_atp"),
   256   {exec = ("ISABELLE_ATP", "scripts/remote_atp"),
   262    required_execs = [],
   257    required_execs = [],
   263    arguments = fn _ => fn timeout =>
   258    arguments = fn _ => fn timeout =>
   264      " -t " ^ string_of_int (to_secs 0 timeout) ^ " -s " ^
   259      " -t " ^ string_of_int (to_secs 0 timeout) ^ " -s " ^
   265      the_system system_name system_versions,
   260      the_system system_name system_versions,
   267    proof_delims = insert (op =) tstp_proof_delims proof_delims,
   262    proof_delims = insert (op =) tstp_proof_delims proof_delims,
   268    known_failures =
   263    known_failures =
   269      known_failures @ known_perl_failures @
   264      known_failures @ known_perl_failures @
   270      [(TimedOut, "says Timeout")],
   265      [(TimedOut, "says Timeout")],
   271    default_max_relevant = default_max_relevant,
   266    default_max_relevant = default_max_relevant,
   272    default_theory_relevant = default_theory_relevant,
       
   273    explicit_forall = true,
   267    explicit_forall = true,
   274    use_conjecture_for_hypotheses = use_conjecture_for_hypotheses}
   268    use_conjecture_for_hypotheses = use_conjecture_for_hypotheses}
   275 
   269 
   276 fun remotify_config system_name system_versions
   270 fun remotify_config system_name system_versions
   277         ({proof_delims, known_failures, default_max_relevant,
   271         ({proof_delims, known_failures, default_max_relevant,
   278           default_theory_relevant, use_conjecture_for_hypotheses, ...}
   272           use_conjecture_for_hypotheses, ...} : prover_config) : prover_config =
   279          : prover_config) : prover_config =
       
   280   remote_config system_name system_versions proof_delims known_failures
   273   remote_config system_name system_versions proof_delims known_failures
   281                 default_max_relevant default_theory_relevant
   274                 default_max_relevant use_conjecture_for_hypotheses
   282                 use_conjecture_for_hypotheses
       
   283 
   275 
   284 val remotify_name = prefix "remote_"
   276 val remotify_name = prefix "remote_"
   285 fun remote_prover name system_name system_versions proof_delims known_failures
   277 fun remote_prover name system_name system_versions proof_delims known_failures
   286                   default_max_relevant default_theory_relevant
   278                   default_max_relevant use_conjecture_for_hypotheses =
   287                   use_conjecture_for_hypotheses =
       
   288   (remotify_name name,
   279   (remotify_name name,
   289    remote_config system_name system_versions proof_delims known_failures
   280    remote_config system_name system_versions proof_delims known_failures
   290                  default_max_relevant default_theory_relevant
   281                  default_max_relevant use_conjecture_for_hypotheses)
   291                  use_conjecture_for_hypotheses)
       
   292 fun remotify_prover (name, config) system_name system_versions =
   282 fun remotify_prover (name, config) system_name system_versions =
   293   (remotify_name name, remotify_config system_name system_versions config)
   283   (remotify_name name, remotify_config system_name system_versions config)
   294 
   284 
   295 val remote_e = remotify_prover e "EP" ["1.0", "1.1", "1.2"]
   285 val remote_e = remotify_prover e "EP" ["1.0", "1.1", "1.2"]
   296 val remote_vampire = remotify_prover vampire "Vampire" ["9.0", "1.0", "0.6"]
   286 val remote_vampire = remotify_prover vampire "Vampire" ["9.0", "1.0", "0.6"]
   297 val remote_sine_e =
   287 val remote_sine_e =
   298   remote_prover "sine_e" "SInE" [] [] [(Unprovable, "says Unknown")]
   288   remote_prover "sine_e" "SInE" [] [] [(Unprovable, "says Unknown")]
   299                 1000 (* FUDGE *) false true
   289                 1000 (* FUDGE *) true
   300 val remote_snark =
   290 val remote_snark =
   301   remote_prover "snark" "SNARK---" [] [("refutation.", "end_refutation.")] []
   291   remote_prover "snark" "SNARK---" [] [("refutation.", "end_refutation.")] []
   302                 350 (* FUDGE *) false true
   292                 350 (* FUDGE *) true
   303 
   293 
   304 (* Setup *)
   294 (* Setup *)
   305 
   295 
   306 fun is_installed ({exec, required_execs, ...} : prover_config) =
   296 fun is_installed ({exec, required_execs, ...} : prover_config) =
   307   forall (curry (op <>) "" o getenv o fst) (exec :: required_execs)
   297   forall (curry (op <>) "" o getenv o fst) (exec :: required_execs)