src/HOLCF/ax_ops/holcflogic.ML
changeset 4008 2444085532c6
parent 2719 27167b432e7a
--- a/src/HOLCF/ax_ops/holcflogic.ML	Mon Oct 27 10:46:36 1997 +0100
+++ b/src/HOLCF/ax_ops/holcflogic.ML	Mon Oct 27 11:34:33 1997 +0100
@@ -20,6 +20,7 @@
  val mkNotEqUU : term -> term;            (* Trueprop(x ~= UU) *)
  val mkNotEqUU_in : term -> term -> term; (* "v~=UU ==> t" *)
  val ==>     : typ * typ -> typ;          (* Infix operation typ constructor *)
+ val cfun_arrow : string                  (* internalized "->" *)
  val mkOpApp : term -> term -> term;      (* Ops application (f ` x) *)
  val mkCPair : term -> term -> term;      (* cpair constructor *)
 end;
@@ -44,12 +45,16 @@
 fun mkNotEqUU_in vterm term = 
    mk_implies(mkNotEqUU vterm,term)
 
+val HOLCF_sg = sign_of HOLCF.thy;
+fun mk_typ t (S,T) = Sign.intern_typ HOLCF_sg (Type(t,[S,T]));
+fun rep_Type  (Type  x) = x| rep_Type _ = error "Internal error: rep_Type";
 
 infixr 6 ==>; (* the analogon to --> for operations *)
-fun a ==> b = Type("->",[a,b]);
+val op ==> = mk_typ "->";
+val cfun_arrow = fst (rep_Type (dummyT ==> dummyT));
 
 (* Ops application (f ` x) *)
-fun mkOpApp (f as Const(_,ft as Type("->",[xt,rt]))) x =
+fun mkOpApp (f as Const(_,ft as Type(_(*"->"*),[xt,rt]))) x =
      Const("fapp",ft --> xt --> rt) $ f $ x
   | mkOpApp f x = (error("Internal error: mkOpApp: wrong args"));