src/HOL/Tools/Ctr_Sugar/ctr_sugar_util.ML
changeset 63856 0db1481c1ec1
parent 63223 bcf4828bb125
child 69593 3dda49e08b9d
equal deleted inserted replaced
63855:40f34614bd06 63856:0db1481c1ec1
    44   val mk_predT: typ list -> typ
    44   val mk_predT: typ list -> typ
    45   val mk_pred1T: typ -> typ
    45   val mk_pred1T: typ -> typ
    46 
    46 
    47   val mk_disjIN: int -> int -> thm
    47   val mk_disjIN: int -> int -> thm
    48 
    48 
       
    49   val mk_abs_def: thm -> thm
    49   val mk_unabs_def: int -> thm -> thm
    50   val mk_unabs_def: int -> thm -> thm
    50 
    51 
    51   val mk_IfN: typ -> term list -> term list -> term
    52   val mk_IfN: typ -> term list -> term list -> term
    52   val mk_Trueprop_eq: term * term -> term
    53   val mk_Trueprop_eq: term * term -> term
    53   val mk_Trueprop_mem: term * term -> term
    54   val mk_Trueprop_mem: term * term -> term
   191 fun mk_disjIN 1 1 = @{thm TrueE[OF TrueI]}
   192 fun mk_disjIN 1 1 = @{thm TrueE[OF TrueI]}
   192   | mk_disjIN _ 1 = disjI1
   193   | mk_disjIN _ 1 = disjI1
   193   | mk_disjIN 2 2 = disjI2
   194   | mk_disjIN 2 2 = disjI2
   194   | mk_disjIN n m = (mk_disjIN (n - 1) (m - 1)) RS disjI2;
   195   | mk_disjIN n m = (mk_disjIN (n - 1) (m - 1)) RS disjI2;
   195 
   196 
       
   197 fun mk_abs_def thm = Drule.abs_def (thm RS eq_reflection handle THM _ => thm);
   196 fun mk_unabs_def n = funpow n (fn thm => thm RS fun_cong);
   198 fun mk_unabs_def n = funpow n (fn thm => thm RS fun_cong);
   197 
   199 
   198 fun mk_IfN _ _ [t] = t
   200 fun mk_IfN _ _ [t] = t
   199   | mk_IfN T (c :: cs) (t :: ts) =
   201   | mk_IfN T (c :: cs) (t :: ts) =
   200     Const (@{const_name If}, HOLogic.boolT --> T --> T --> T) $ c $ t $ mk_IfN T cs ts;
   202     Const (@{const_name If}, HOLogic.boolT --> T --> T --> T) $ c $ t $ mk_IfN T cs ts;