src/Pure/conjunction.ML
changeset 60623 be39fe6c5620
parent 59621 291934bac95e
child 60642 48dd1cefb4ae
equal deleted inserted replaced
60622:57b5293bceac 60623:be39fe6c5620
    17   val conjunctionD2: thm
    17   val conjunctionD2: thm
    18   val conjunctionI: thm
    18   val conjunctionI: thm
    19   val intr: thm -> thm -> thm
    19   val intr: thm -> thm -> thm
    20   val intr_balanced: thm list -> thm
    20   val intr_balanced: thm list -> thm
    21   val elim: thm -> thm * thm
    21   val elim: thm -> thm * thm
       
    22   val elim_conjunctions: thm -> thm list
    22   val elim_balanced: int -> thm -> thm list
    23   val elim_balanced: int -> thm -> thm list
    23   val curry_balanced: int -> thm -> thm
    24   val curry_balanced: int -> thm -> thm
    24   val uncurry_balanced: int -> thm -> thm
    25   val uncurry_balanced: int -> thm -> thm
    25 end;
    26 end;
    26 
    27 
   116     Thm.implies_elim (inst conjunctionD2) th)
   117     Thm.implies_elim (inst conjunctionD2) th)
   117   end;
   118   end;
   118 
   119 
   119 end;
   120 end;
   120 
   121 
       
   122 fun elim_conjunctions th =
       
   123   (case try elim th of
       
   124     NONE => [th]
       
   125   | SOME (th1, th2) => elim_conjunctions th1 @ elim_conjunctions th2);
       
   126 
   121 
   127 
   122 (* balanced conjuncts *)
   128 (* balanced conjuncts *)
   123 
   129 
   124 fun intr_balanced [] = asm_rl
   130 fun intr_balanced [] = asm_rl
   125   | intr_balanced ths = Balanced_Tree.make (uncurry intr) ths;
   131   | intr_balanced ths = Balanced_Tree.make (uncurry intr) ths;