simplify fixrec proofs for mutually-recursive definitions; generate better fixpoint induction rules
1 (* Title: HOLCF/holcf_logic.ML
3 Author: David von Oheimb
5 Abstract syntax operations for HOLCF.
10 signature HOLCF_LOGIC =
12 val mk_btyp: string -> typ * typ -> typ
15 val mk_TFree: string -> typ
16 val cfun_arrow: string
17 val ->> : typ * typ -> typ
18 val mk_ssumT: typ * typ -> typ
19 val mk_sprodT: typ * typ -> typ
25 structure HOLCFLogic: HOLCF_LOGIC =
30 val pcpoC = Sign.intern_class (the_context ()) "pcpo";
32 fun mk_TFree s = TFree ("'" ^ s, pcpoS);
37 fun mk_btyp t (S,T) = Type (t,[S,T]);
40 val intern_type = Sign.intern_type (the_context ());
41 val u = intern_type "u";
44 val cfun_arrow = intern_type "->";
45 val op ->> = mk_btyp cfun_arrow;
46 val mk_ssumT = mk_btyp (intern_type "++");
47 val mk_sprodT = mk_btyp (intern_type "**");
48 fun mk_uT T = Type (u, [T]);
49 val trT = Type (intern_type "tr" , []);
50 val oneT = Type (intern_type "one", []);