src/HOL/hologic.ML
changeset 21550 7cc49399929a
parent 21473 02054bf31c0e
child 21621 f9fd69d96c4e
equal deleted inserted replaced
21549:12eff58b56a0 21550:7cc49399929a
    16   val mk_setT: typ -> typ
    16   val mk_setT: typ -> typ
    17   val dest_setT: typ -> typ
    17   val dest_setT: typ -> typ
    18   val Trueprop: term
    18   val Trueprop: term
    19   val mk_Trueprop: term -> term
    19   val mk_Trueprop: term -> term
    20   val dest_Trueprop: term -> term
    20   val dest_Trueprop: term -> term
       
    21   val Trueprop_conv: (cterm -> thm) -> cterm -> thm
    21   val conj: term
    22   val conj: term
    22   val disj: term
    23   val disj: term
    23   val imp: term
    24   val imp: term
    24   val Not: term
    25   val Not: term
    25   val mk_conj: term * term -> term
    26   val mk_conj: term * term -> term
   129 fun mk_Trueprop P = Trueprop $ P;
   130 fun mk_Trueprop P = Trueprop $ P;
   130 
   131 
   131 fun dest_Trueprop (Const ("Trueprop", _) $ P) = P
   132 fun dest_Trueprop (Const ("Trueprop", _) $ P) = P
   132   | dest_Trueprop t = raise TERM ("dest_Trueprop", [t]);
   133   | dest_Trueprop t = raise TERM ("dest_Trueprop", [t]);
   133 
   134 
       
   135 fun Trueprop_conv conv ct = (case term_of ct of
       
   136     Const ("Trueprop", _) $ _ =>
       
   137       let val (ct1, ct2) = Thm.dest_comb ct
       
   138       in Thm.combination (Thm.reflexive ct1) (conv ct2) end
       
   139   | _ => raise TERM ("Trueprop_conv", []));
   134 
   140 
   135 val conj = Const ("op &", [boolT, boolT] ---> boolT)
   141 val conj = Const ("op &", [boolT, boolT] ---> boolT)
   136 and disj = Const ("op |", [boolT, boolT] ---> boolT)
   142 and disj = Const ("op |", [boolT, boolT] ---> boolT)
   137 and imp = Const ("op -->", [boolT, boolT] ---> boolT)
   143 and imp = Const ("op -->", [boolT, boolT] ---> boolT)
   138 and Not = Const ("Not", boolT --> boolT);
   144 and Not = Const ("Not", boolT --> boolT);