src/HOL/Tools/SMT/z3_isar.ML
changeset 72355 1f959abe99d5
parent 69593 3dda49e08b9d
child 74525 c960bfcb91db
equal deleted inserted replaced
72354:2d36c214f7fd 72355:1f959abe99d5
    74   #-> fold_rev (Logic.all o Free);
    74   #-> fold_rev (Logic.all o Free);
    75 
    75 
    76 fun atp_proof_of_z3_proof ctxt ll_defs rewrite_rules hyp_ts concl_t fact_helper_ts prem_ids
    76 fun atp_proof_of_z3_proof ctxt ll_defs rewrite_rules hyp_ts concl_t fact_helper_ts prem_ids
    77     conjecture_id fact_helper_ids proof =
    77     conjecture_id fact_helper_ids proof =
    78   let
    78   let
    79     fun steps_of (Z3_Proof.Z3_Step {id, rule, prems, concl, ...}) =
    79     fun steps_of (Z3_Proof.Z3_Step {id, rule, prems, concl, ...}) : (term, string) ATP_Proof.atp_step list =
    80       let
    80       let
    81         val sid = string_of_int id
    81         val sid = string_of_int id
    82 
    82 
    83         val concl' = concl
    83         val concl' = concl
    84           |> reorder_foralls (* crucial for skolemization steps *)
    84           |> reorder_foralls (* crucial for skolemization steps *)
    90         (case rule of
    90         (case rule of
    91           Z3_Proof.Asserted =>
    91           Z3_Proof.Asserted =>
    92           let val ss = the_list (AList.lookup (op =) fact_helper_ids id) in
    92           let val ss = the_list (AList.lookup (op =) fact_helper_ids id) in
    93             (case distinguish_conjecture_and_hypothesis ss id conjecture_id prem_ids fact_helper_ts
    93             (case distinguish_conjecture_and_hypothesis ss id conjecture_id prem_ids fact_helper_ts
    94                 hyp_ts concl_t of
    94                 hyp_ts concl_t of
    95               NONE => []
    95               NONE => [] (* useless nontheory tautology *)
    96             | SOME (role0, concl00) =>
    96             | SOME (role0, concl00) =>
    97               let
    97               let
    98                 val name0 = (sid ^ "a", ss)
    98                 val name0 = (sid ^ "a", ss)
    99                 val concl0 = unskolemize_names ctxt concl00
    99                 val concl0 = unskolemize_names ctxt concl00
   100               in
   100               in