src/HOLCF/Fix.thy
author regensbu
Thu, 29 Jun 1995 16:28:40 +0200
changeset 1168 74be52691d62
parent 1150 66512c9e6bd6
child 1410 324aa8134639
permissions -rw-r--r--
The curried version of HOLCF is now just called HOLCF. The old uncurried version is no longer supported

(*  Title: 	HOLCF/fix.thy
    ID:         $Id$
    Author: 	Franz Regensburger
    Copyright   1993  Technische Universitaet Muenchen


definitions for fixed point operator and admissibility

*)

Fix = Cfun3 +

consts

iterate :: "nat=>('a->'a)=>'a=>'a"
Ifix    :: "('a->'a)=>'a"
fix     :: "('a->'a)->'a"
adm          :: "('a=>bool)=>bool"
admw         :: "('a=>bool)=>bool"
chain_finite :: "'a=>bool"
flat         :: "'a=>bool"

defs

iterate_def   "iterate n F c == nat_rec n c (%n x.F`x)"
Ifix_def      "Ifix F == lub(range(%i.iterate i F UU))"
fix_def       "fix == (LAM f. Ifix f)"

adm_def       "adm P == !Y. is_chain(Y) --> 
                        (!i.P(Y i)) --> P(lub(range Y))"

admw_def      "admw P == !F. (!n.P (iterate n F UU)) -->
			    P (lub(range (%i. iterate i F UU)))" 

chain_finite_def  "chain_finite (x::'a)==
                        !Y. is_chain (Y::nat=>'a) --> (? n.max_in_chain n Y)"

flat_def          "flat (x::'a) ==
                        ! x y. (x::'a) << y --> (x = UU) | (x=y)"

end