src/HOL/Tools/datatype_realizer.ML
changeset 30280 eb98b49ef835
parent 30190 479806475f3c
child 30364 577edc39b501
equal deleted inserted replaced
30279:84097bba7bdc 30280:eb98b49ef835
   166     fun make_casedist_prem T (cname, cargs) =
   166     fun make_casedist_prem T (cname, cargs) =
   167       let
   167       let
   168         val Ts = map (typ_of_dtyp descr sorts) cargs;
   168         val Ts = map (typ_of_dtyp descr sorts) cargs;
   169         val frees = Name.variant_list ["P", "y"] (DatatypeProp.make_tnames Ts) ~~ Ts;
   169         val frees = Name.variant_list ["P", "y"] (DatatypeProp.make_tnames Ts) ~~ Ts;
   170         val free_ts = map Free frees;
   170         val free_ts = map Free frees;
   171         val r = Free ("r" ^ NameSpace.base cname, Ts ---> rT)
   171         val r = Free ("r" ^ NameSpace.base_name cname, Ts ---> rT)
   172       in (r, list_all_free (frees, Logic.mk_implies (HOLogic.mk_Trueprop
   172       in (r, list_all_free (frees, Logic.mk_implies (HOLogic.mk_Trueprop
   173         (HOLogic.mk_eq (Free ("y", T), list_comb (Const (cname, Ts ---> T), free_ts))),
   173         (HOLogic.mk_eq (Free ("y", T), list_comb (Const (cname, Ts ---> T), free_ts))),
   174           HOLogic.mk_Trueprop (Free ("P", rT --> HOLogic.boolT) $
   174           HOLogic.mk_Trueprop (Free ("P", rT --> HOLogic.boolT) $
   175             list_comb (r, free_ts)))))
   175             list_comb (r, free_ts)))))
   176       end;
   176       end;