src/HOL/Tools/Sledgehammer/sledgehammer_proof_reconstruct.ML
changeset 35963 943e2582dc87
parent 35869 cac366550624
child 35966 f8c738abaed8
equal deleted inserted replaced
35962:0e2d57686b3c 35963:943e2582dc87
   538 fun metis_line [] = "apply metis"
   538 fun metis_line [] = "apply metis"
   539   | metis_line xs = "apply (metis " ^ space_implode " " xs ^ ")"
   539   | metis_line xs = "apply (metis " ^ space_implode " " xs ^ ")"
   540 
   540 
   541 (* atp_minimize [atp=<prover>] <lemmas> *)
   541 (* atp_minimize [atp=<prover>] <lemmas> *)
   542 fun minimize_line _ [] = ""
   542 fun minimize_line _ [] = ""
   543   | minimize_line name lemmas = "For minimizing the number of lemmas try this command:\n" ^
   543   | minimize_line name lemmas =
   544         Markup.markup Markup.sendback ("atp_minimize [atp = " ^ name ^ "] " ^
   544       "To minimize the number of lemmas, try this command:\n" ^
   545                                        space_implode " " (kill_chained lemmas))
   545       Markup.markup Markup.sendback ("atp_minimize [atp = " ^ name ^ "] " ^
       
   546                                      space_implode " " (kill_chained lemmas))
   546 
   547 
   547 fun metis_lemma_list dfg name result =
   548 fun metis_lemma_list dfg name result =
   548   let val (lemmas, used_conj) = extract_lemmas (get_step_nums dfg) result in
   549   let val (lemmas, used_conj) = extract_lemmas (get_step_nums dfg) result in
   549     (Markup.markup Markup.sendback (metis_line (kill_chained lemmas)) ^ "\n" ^
   550     (Markup.markup Markup.sendback (metis_line (kill_chained lemmas)) ^ "\n" ^
   550      minimize_line name lemmas ^
   551      minimize_line name lemmas ^
   568     val tokens = String.tokens (fn c => c = #" ") one_line_proof
   569     val tokens = String.tokens (fn c => c = #" ") one_line_proof
   569     val isar_proof =
   570     val isar_proof =
   570       if member (op =) tokens chained_hint then ""
   571       if member (op =) tokens chained_hint then ""
   571       else isar_proof_from_tstp_file cnfs ctxt goal subgoalno thm_names
   572       else isar_proof_from_tstp_file cnfs ctxt goal subgoalno thm_names
   572   in
   573   in
   573     (one_line_proof ^ "\n\n" ^ Markup.markup Markup.sendback isar_proof,
   574     (* Hack: The " \n" shouldn't be part of the markup. This is a workaround
   574      lemma_names)
   575        for a strange ProofGeneral bug, whereby the first two letters of the word
       
   576        "proof" are not highlighted. *)
       
   577     (one_line_proof ^ "\n\nStructured proof:" ^
       
   578      Markup.markup Markup.sendback (" \n" ^ isar_proof), lemma_names)
   575   end
   579   end
   576 
   580 
   577 end;
   581 end;