src/HOL/Tools/ATP/atp_proof.ML
changeset 59577 012c6165bbd2
parent 59058 a78612c67ec0
child 61030 aeb578badc1c
equal deleted inserted replaced
59576:913c4afb0388 59577:012c6165bbd2
    55   val e_sineN : string
    55   val e_sineN : string
    56   val e_tofofN : string
    56   val e_tofofN : string
    57   val iproverN : string
    57   val iproverN : string
    58   val iprover_eqN : string
    58   val iprover_eqN : string
    59   val leo2N : string
    59   val leo2N : string
       
    60   val pirateN : string
    60   val satallaxN : string
    61   val satallaxN : string
    61   val snarkN : string
    62   val snarkN : string
    62   val spassN : string
    63   val spassN : string
    63   val spass_pirateN : string
       
    64   val vampireN : string
    64   val vampireN : string
    65   val waldmeisterN : string
    65   val waldmeisterN : string
    66   val waldmeister_newN : string
    66   val waldmeister_newN : string
    67   val z3_tptpN : string
    67   val z3_tptpN : string
    68   val zipperpositionN : string
    68   val zipperpositionN : string
   124 val e_sineN = "e_sine"
   124 val e_sineN = "e_sine"
   125 val e_tofofN = "e_tofof"
   125 val e_tofofN = "e_tofof"
   126 val iproverN = "iprover"
   126 val iproverN = "iprover"
   127 val iprover_eqN = "iprover_eq"
   127 val iprover_eqN = "iprover_eq"
   128 val leo2N = "leo2"
   128 val leo2N = "leo2"
       
   129 val pirateN = "pirate"
   129 val satallaxN = "satallax"
   130 val satallaxN = "satallax"
   130 val snarkN = "snark"
   131 val snarkN = "snark"
   131 val spassN = "spass"
   132 val spassN = "spass"
   132 val spass_pirateN = "spass_pirate"
       
   133 val vampireN = "vampire"
   133 val vampireN = "vampire"
   134 val waldmeisterN = "waldmeister"
   134 val waldmeisterN = "waldmeister"
   135 val waldmeister_newN = "waldmeister_new"
   135 val waldmeister_newN = "waldmeister_new"
   136 val z3_tptpN = "z3_tptp"
   136 val z3_tptpN = "z3_tptp"
   137 val zipperpositionN = "zipperposition"
   137 val zipperpositionN = "zipperposition"
   652      -- Scan.option (Scan.this_string "derived from formulae "
   652      -- Scan.option (Scan.this_string "derived from formulae "
   653                      |-- Scan.repeat (scan_general_id --| Scan.option ($$ " ")))
   653                      |-- Scan.repeat (scan_general_id --| Scan.option ($$ " ")))
   654    >> (fn ((((num, rule), deps), u), names) =>
   654    >> (fn ((((num, rule), deps), u), names) =>
   655           [((num, these names), Unknown, u, rule, map (rpair []) deps)])) x
   655           [((num, these names), Unknown, u, rule, map (rpair []) deps)])) x
   656 
   656 
   657 fun parse_spass_pirate_dependency x = (Scan.option ($$ "-") |-- scan_general_id) x
   657 fun parse_pirate_dependency x = (Scan.option ($$ "-") |-- scan_general_id) x
   658 fun parse_spass_pirate_dependencies x =
   658 fun parse_pirate_dependencies x =
   659   Scan.repeat (parse_spass_pirate_dependency --| Scan.option ($$ "," || $$ " ")) x
   659   Scan.repeat (parse_pirate_dependency --| Scan.option ($$ "," || $$ " ")) x
   660 fun parse_spass_pirate_file_source x =
   660 fun parse_pirate_file_source x =
   661   ((Scan.this_string "Input" || Scan.this_string "Conj") |-- $$ "(" |-- scan_general_id
   661   ((Scan.this_string "Input" || Scan.this_string "Conj") |-- $$ "(" |-- scan_general_id
   662      --| $$ ")") x
   662      --| $$ ")") x
   663 fun parse_spass_pirate_inference_source x =
   663 fun parse_pirate_inference_source x =
   664   (scan_general_id -- ($$ "(" |-- parse_spass_pirate_dependencies --| $$ ")")) x
   664   (scan_general_id -- ($$ "(" |-- parse_pirate_dependencies --| $$ ")")) x
   665 fun parse_spass_pirate_source x =
   665 fun parse_pirate_source x =
   666   (parse_spass_pirate_file_source >> (fn s => File_Source ("", SOME s))
   666   (parse_pirate_file_source >> (fn s => File_Source ("", SOME s))
   667    || parse_spass_pirate_inference_source >> Inference_Source) x
   667    || parse_pirate_inference_source >> Inference_Source) x
   668 
   668 
   669 (* Syntax: <num> <stuff> || <atoms> -> <atoms> . origin\(<origin>\) *)
   669 (* Syntax: <num> <stuff> || <atoms> -> <atoms> . origin\(<origin>\) *)
   670 fun parse_spass_pirate_line x =
   670 fun parse_pirate_line x =
   671   (scan_general_id --| Scan.repeat (~$$ "|") -- parse_horn_clause --| $$ "."
   671   (scan_general_id --| Scan.repeat (~$$ "|") -- parse_horn_clause --| $$ "."
   672      --| Scan.this_string "origin" --| $$ "(" -- parse_spass_pirate_source --| $$ ")"
   672      --| Scan.this_string "origin" --| $$ "(" -- parse_pirate_source --| $$ ")"
   673    >> (fn ((((num, u), source))) =>
   673    >> (fn ((((num, u), source))) =>
   674      let
   674      let
   675        val (names, rule, deps) =
   675        val (names, rule, deps) =
   676          (case source of
   676          (case source of
   677            File_Source (_, SOME s) => ([s], spass_input_rule, [])
   677            File_Source (_, SOME s) => ([s], spass_input_rule, [])
   688    >> map (core_inference z3_tptp_core_rule)) x
   688    >> map (core_inference z3_tptp_core_rule)) x
   689 
   689 
   690 fun parse_line local_name problem =
   690 fun parse_line local_name problem =
   691   if local_name = leo2N then parse_tstp_thf0_line problem
   691   if local_name = leo2N then parse_tstp_thf0_line problem
   692   else if local_name = spassN then parse_spass_line
   692   else if local_name = spassN then parse_spass_line
   693   else if local_name = spass_pirateN then parse_spass_pirate_line
   693   else if local_name = pirateN then parse_pirate_line
   694   else if local_name = z3_tptpN then parse_z3_tptp_core_line
   694   else if local_name = z3_tptpN then parse_z3_tptp_core_line
   695   else parse_tstp_line problem
   695   else parse_tstp_line problem
   696 
   696 
   697 fun core_of_agsyhol_proof s =
   697 fun core_of_agsyhol_proof s =
   698   (case split_lines s of
   698   (case split_lines s of