src/Pure/conjunction.ML
changeset 74282 c2ee8d993d6a
parent 67721 5348bea4accd
child 77879 dd222e2af01a
equal deleted inserted replaced
74281:7829d6435c60 74282:c2ee8d993d6a
   100 
   100 
   101 
   101 
   102 fun intr tha thb =
   102 fun intr tha thb =
   103   Thm.implies_elim
   103   Thm.implies_elim
   104     (Thm.implies_elim
   104     (Thm.implies_elim
   105       (Thm.instantiate ([], [(vA, Thm.cprop_of tha), (vB, Thm.cprop_of thb)]) conjunctionI)
   105       (Thm.instantiate (TVars.empty, Vars.make [(vA, Thm.cprop_of tha), (vB, Thm.cprop_of thb)])
       
   106         conjunctionI)
   106     tha)
   107     tha)
   107   thb;
   108   thb;
   108 
   109 
   109 fun elim th =
   110 fun elim th =
   110   let
   111   let
   111     val (A, B) = dest_conjunction (Thm.cprop_of th)
   112     val (A, B) = dest_conjunction (Thm.cprop_of th)
   112       handle TERM (msg, _) => raise THM (msg, 0, [th]);
   113       handle TERM (msg, _) => raise THM (msg, 0, [th]);
   113     val inst = Thm.instantiate ([], [(vA, A), (vB, B)]);
   114     val inst = Thm.instantiate (TVars.empty, Vars.make [(vA, A), (vB, B)]);
   114   in
   115   in
   115    (Thm.implies_elim (inst conjunctionD1) th,
   116    (Thm.implies_elim (inst conjunctionD1) th,
   116     Thm.implies_elim (inst conjunctionD2) th)
   117     Thm.implies_elim (inst conjunctionD2) th)
   117   end;
   118   end;
   118 
   119