src/HOL/Tools/Sledgehammer/sledgehammer_util.ML
changeset 50485 3c6ac2da2f45
parent 50267 1da2e67242d6
child 50557 31313171deb5
equal deleted inserted replaced
50484:8ec31bdb9d36 50485:3c6ac2da2f45
    15   val time_mult : real -> Time.time -> Time.time
    15   val time_mult : real -> Time.time -> Time.time
    16   val parse_bool_option : bool -> string -> string -> bool option
    16   val parse_bool_option : bool -> string -> string -> bool option
    17   val parse_time_option : string -> string -> Time.time option
    17   val parse_time_option : string -> string -> Time.time option
    18   val subgoal_count : Proof.state -> int
    18   val subgoal_count : Proof.state -> int
    19   val reserved_isar_keyword_table : unit -> unit Symtab.table
    19   val reserved_isar_keyword_table : unit -> unit Symtab.table
    20   val thms_in_proof : unit Symtab.table option -> thm -> string list
    20   val thms_in_proof : string Symtab.table option -> thm -> string list
    21   val thms_of_name : Proof.context -> string -> thm list
    21   val thms_of_name : Proof.context -> string -> thm list
    22   val with_vanilla_print_mode : ('a -> 'b) -> 'a -> 'b
    22   val with_vanilla_print_mode : ('a -> 'b) -> 'a -> 'b
    23 end;
    23 end;
    24 
    24 
    25 structure Sledgehammer_Util : SLEDGEHAMMER_UTIL =
    25 structure Sledgehammer_Util : SLEDGEHAMMER_UTIL =
    95 
    95 
    96 fun thms_in_proof all_names th =
    96 fun thms_in_proof all_names th =
    97   let
    97   let
    98     val collect =
    98     val collect =
    99       case all_names of
    99       case all_names of
   100         SOME names => (fn s => Symtab.defined names s ? insert (op =) s)
   100         SOME names =>
       
   101         (fn s => case Symtab.lookup names s of
       
   102                    SOME s' => insert (op =) s'
       
   103                  | NONE => I)
   101       | NONE => insert (op =)
   104       | NONE => insert (op =)
   102     val names =
   105     val names =
   103       [] |> fold_body_thms (Thm.get_name_hint th) collect [Thm.proof_body_of th]
   106       [] |> fold_body_thms (Thm.get_name_hint th) collect [Thm.proof_body_of th]
   104   in names end
   107   in names end
   105 
   108