src/Pure/thm.ML
changeset 12803 37131c76dff6
parent 12500 0a6667d65e9b
child 12923 9ba7c5358fa0
equal deleted inserted replaced
12802:c69bd9754473 12803:37131c76dff6
    48                                   prop: cterm}
    48                                   prop: cterm}
    49   exception THM of string * int * thm list
    49   exception THM of string * int * thm list
    50   type 'a attribute 	(* = 'a * thm -> 'a * thm *)
    50   type 'a attribute 	(* = 'a * thm -> 'a * thm *)
    51   val eq_thm		: thm * thm -> bool
    51   val eq_thm		: thm * thm -> bool
    52   val sign_of_thm       : thm -> Sign.sg
    52   val sign_of_thm       : thm -> Sign.sg
       
    53   val prop_of           : thm -> term
    53   val transfer_sg	: Sign.sg -> thm -> thm
    54   val transfer_sg	: Sign.sg -> thm -> thm
    54   val transfer		: theory -> thm -> thm
    55   val transfer		: theory -> thm -> thm
    55   val tpairs_of         : thm -> (term * term) list
    56   val tpairs_of         : thm -> (term * term) list
    56   val prems_of          : thm -> term list
    57   val prems_of          : thm -> term list
    57   val nprems_of         : thm -> int
    58   val nprems_of         : thm -> int
   322     aconvs (hyps1, hyps2) andalso
   323     aconvs (hyps1, hyps2) andalso
   323     prop1 aconv prop2
   324     prop1 aconv prop2
   324   end;
   325   end;
   325 
   326 
   326 fun sign_of_thm (Thm {sign_ref, ...}) = Sign.deref sign_ref;
   327 fun sign_of_thm (Thm {sign_ref, ...}) = Sign.deref sign_ref;
       
   328 fun prop_of (Thm {prop, ...}) = prop;
   327 
   329 
   328 (*merge signatures of two theorems; raise exception if incompatible*)
   330 (*merge signatures of two theorems; raise exception if incompatible*)
   329 fun merge_thm_sgs
   331 fun merge_thm_sgs
   330     (th1 as Thm {sign_ref = sgr1, ...}, th2 as Thm {sign_ref = sgr2, ...}) =
   332     (th1 as Thm {sign_ref = sgr1, ...}, th2 as Thm {sign_ref = sgr2, ...}) =
   331   Sign.merge_refs (sgr1, sgr2) handle TERM (msg, _) => raise THM (msg, 0, [th1, th2]);
   333   Sign.merge_refs (sgr1, sgr2) handle TERM (msg, _) => raise THM (msg, 0, [th1, th2]);