src/Pure/conjunction.ML
changeset 30823 eb99b9134f2e
parent 29606 fedb8be05f24
child 32765 3032c0308019
equal deleted inserted replaced
30822:8aac4b974280 30823:eb99b9134f2e
     8 sig
     8 sig
     9   val conjunction: cterm
     9   val conjunction: cterm
    10   val mk_conjunction: cterm * cterm -> cterm
    10   val mk_conjunction: cterm * cterm -> cterm
    11   val mk_conjunction_balanced: cterm list -> cterm
    11   val mk_conjunction_balanced: cterm list -> cterm
    12   val dest_conjunction: cterm -> cterm * cterm
    12   val dest_conjunction: cterm -> cterm * cterm
       
    13   val dest_conjunctions: cterm -> cterm list
    13   val cong: thm -> thm -> thm
    14   val cong: thm -> thm -> thm
    14   val convs: (cterm -> thm) -> cterm -> thm
    15   val convs: (cterm -> thm) -> cterm -> thm
    15   val conjunctionD1: thm
    16   val conjunctionD1: thm
    16   val conjunctionD2: thm
    17   val conjunctionD2: thm
    17   val conjunctionI: thm
    18   val conjunctionI: thm
    41 
    42 
    42 fun dest_conjunction ct =
    43 fun dest_conjunction ct =
    43   (case Thm.term_of ct of
    44   (case Thm.term_of ct of
    44     (Const ("Pure.conjunction", _) $ _ $ _) => Thm.dest_binop ct
    45     (Const ("Pure.conjunction", _) $ _ $ _) => Thm.dest_binop ct
    45   | _ => raise TERM ("dest_conjunction", [Thm.term_of ct]));
    46   | _ => raise TERM ("dest_conjunction", [Thm.term_of ct]));
       
    47 
       
    48 fun dest_conjunctions ct =
       
    49   (case try dest_conjunction ct of
       
    50     NONE => [ct]
       
    51   | SOME (A, B) => dest_conjunctions A @ dest_conjunctions B);
    46 
    52 
    47 
    53 
    48 
    54 
    49 (** derived rules **)
    55 (** derived rules **)
    50 
    56