src/Pure/Isar/proof_context.ML
changeset 11918 dfdf0798d7b8
parent 11915 df030220a2a8
child 11925 4747b4b84093
equal deleted inserted replaced
11917:9a0a736d820b 11918:dfdf0798d7b8
    75   val put_thmss: (string * thm list) list -> context -> context
    75   val put_thmss: (string * thm list) list -> context -> context
    76   val reset_thms: string -> context -> context
    76   val reset_thms: string -> context -> context
    77   val have_thmss:
    77   val have_thmss:
    78     ((string * context attribute list) * (thm list * context attribute list) list) list ->
    78     ((string * context attribute list) * (thm list * context attribute list) list) list ->
    79       context -> context * (string * thm list) list
    79       context -> context * (string * thm list) list
       
    80   val export_assume: exporter
       
    81   val export_presume: exporter
       
    82   val export_def: exporter
    80   val assume: exporter
    83   val assume: exporter
    81     -> ((string * context attribute list) * (string * (string list * string list)) list) list
    84     -> ((string * context attribute list) * (string * (string list * string list)) list) list
    82     -> context -> context * ((string * thm list) list * thm list)
    85     -> context -> context * ((string * thm list) list * thm list)
    83   val assume_i: exporter
    86   val assume_i: exporter
    84     -> ((string * context attribute list) * (term * (term list * term list)) list) list
    87     -> ((string * context attribute list) * (term * (term list * term list)) list) list
   830 
   833 
   831 
   834 
   832 
   835 
   833 (** assumptions **)
   836 (** assumptions **)
   834 
   837 
       
   838 (* basic exporters *)
       
   839 
       
   840 fun export_assume true = Seq.single oo Drule.implies_intr_goals
       
   841   | export_assume false = Seq.single oo Drule.implies_intr_list;
       
   842 
       
   843 fun export_presume _ = export_assume false;
       
   844 
       
   845 
       
   846 fun dest_lhs cprop =
       
   847   let val x = #1 (Logic.dest_equals (Thm.term_of cprop))
       
   848   in Term.dest_Free x; Thm.cterm_of (Thm.sign_of_cterm cprop) x end
       
   849   handle TERM _ => raise TERM ("Malformed definitional assumption encountered:\n" ^
       
   850       quote (Display.string_of_cterm cprop), []);
       
   851 
       
   852 fun export_def _ cprops thm =
       
   853   thm
       
   854   |> Drule.implies_intr_list cprops
       
   855   |> Drule.forall_intr_list (map dest_lhs cprops)
       
   856   |> Drule.forall_elim_vars 0
       
   857   |> RANGE (replicate (length cprops) (Tactic.rtac Drule.reflexive_thm)) 1;
       
   858 
       
   859 
   835 (* assume *)
   860 (* assume *)
   836 
   861 
   837 local
   862 local
   838 
   863 
   839 fun add_assm (ctxt, ((name, attrs), props)) =
   864 fun add_assm (ctxt, ((name, attrs), props)) =