src/HOL/Tools/Sledgehammer/sledgehammer_isar_proof.ML
changeset 58476 6ade4c7109a8
parent 58475 4508b6bff671
child 58928 23d0ffd48006
equal deleted inserted replaced
58475:4508b6bff671 58476:6ade4c7109a8
   238           val t' = subst_atomic subst' t
   238           val t' = subst_atomic subst' t
   239           val subs' = map (rationalize_proof false subst_ctxt') subs
   239           val subs' = map (rationalize_proof false subst_ctxt') subs
   240         in
   240         in
   241           (Prove (qs, xs', l, t', subs', facts, meths, comment), subst_ctxt')
   241           (Prove (qs, xs', l, t', subs', facts, meths, comment), subst_ctxt')
   242         end
   242         end
   243     and rationalize_proof outer subst_ctxt (Proof (fix, assms, steps)) =
   243     and rationalize_proof outer (subst_ctxt as (subst, ctxt)) (Proof (fix, assms, steps)) =
   244       let
   244       let
   245         val (fix', subst_ctxt' as (subst', _)) =
   245         val (fix', subst_ctxt' as (subst', _)) =
   246           if outer then (fix, subst_ctxt) else rename_obtains fix subst_ctxt
   246           if outer then
       
   247             (* last call: eliminate any remaining skolem names (from SMT proofs) *)
       
   248             (fix, (subst @ map (fn x => (Free (apfst Name.skolem x), Free x)) fix, ctxt))
       
   249           else
       
   250             rename_obtains fix subst_ctxt
   247       in
   251       in
   248         Proof (fix', map (apsnd (subst_atomic subst')) assms,
   252         Proof (fix', map (apsnd (subst_atomic subst')) assms,
   249           fst (fold_map rationalize_step steps subst_ctxt'))
   253           fst (fold_map rationalize_step steps subst_ctxt'))
   250       end
   254       end
   251   in
   255   in