src/HOL/Tools/hologic.ML
changeset 31736 926ebca5a145
parent 31463 c5681ed50eab
child 32264 0be31453f698
equal deleted inserted replaced
31735:a00292a5587d 31736:926ebca5a145
   601 
   601 
   602 (* typerep and term *)
   602 (* typerep and term *)
   603 
   603 
   604 val typerepT = Type ("Typerep.typerep", []);
   604 val typerepT = Type ("Typerep.typerep", []);
   605 
   605 
   606 fun mk_typerep T = Const ("Typerep.typerep_class.typerep",
   606 fun mk_typerep (Type (tyco, Ts)) = Const ("Typerep.typerep.Typerep",
   607   Term.itselfT T --> typerepT) $ Logic.mk_type T;
   607       literalT --> listT typerepT --> typerepT) $ mk_literal tyco
       
   608         $ mk_list typerepT (map mk_typerep Ts)
       
   609   | mk_typerep (T as TFree _) = Const ("Typerep.typerep_class.typerep",
       
   610       Term.itselfT T --> typerepT) $ Logic.mk_type T;
   608 
   611 
   609 val termT = Type ("Code_Eval.term", []);
   612 val termT = Type ("Code_Eval.term", []);
   610 
   613 
   611 fun mk_term_of T t = Const ("Code_Eval.term_of_class.term_of", T --> termT) $ t;
   614 fun mk_term_of T t = Const ("Code_Eval.term_of_class.term_of", T --> termT) $ t;
   612 
   615