equal
deleted
inserted
replaced
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)) = |