(*  Title:      HOLCF/ccc1.thy
    ID:         $Id$
    Author:     Franz Regensburger
    Copyright   1993 Technische Universitaet Muenchen
Merge Theories Cprof, Sprod, Ssum, Up, Fix and
define constants for categorical reasoning
*)
ccc1 = Cprod3 + Sprod3 + Ssum3 + Up3 + Fix + 
instance flat<chfin (flat_subclass_chfin)
consts
        ID      :: "('a::cpo) -> 'a"
        cfcomp  :: "('b->'c)->(('a::cpo)->('b::cpo))->'a->('c::cpo)"
syntax  "@oo"   :: "('b->'c)=>('a->'b)=>'a->'c" ("_ oo _" [101,100] 100)
     
translations    "f1 oo f2" == "cfcomp`f1`f2"
defs
  ID_def        "ID ==(LAM x.x)"
  oo_def        "cfcomp == (LAM f g x.f`(g`x))" 
end