src/CCL/Fix.thy
changeset 17456 bcf7544875b2
parent 3837 d7f033c74b38
child 20140 98acc6d0fab6
equal deleted inserted replaced
17455:151e76f0e3c7 17456:bcf7544875b2
     1 (*  Title:      CCL/Lazy/fix.thy
     1 (*  Title:      CCL/Fix.thy
     2     ID:         $Id$
     2     ID:         $Id$
     3     Author:     Martin Coen
     3     Author:     Martin Coen
     4     Copyright   1993  University of Cambridge
     4     Copyright   1993  University of Cambridge
     5 
       
     6 Tentative attempt at including fixed point induction.
       
     7 Justified by Smith.
       
     8 *)
     5 *)
     9 
     6 
    10 Fix = Type + 
     7 header {* Tentative attempt at including fixed point induction; justified by Smith *}
       
     8 
       
     9 theory Fix
       
    10 imports Type
       
    11 begin
    11 
    12 
    12 consts
    13 consts
    13 
       
    14   idgen      ::       "[i]=>i"
    14   idgen      ::       "[i]=>i"
    15   INCL      :: "[i=>o]=>o"
    15   INCL      :: "[i=>o]=>o"
    16 
    16 
    17 rules
    17 axioms
    18 
    18   idgen_def:
    19   idgen_def
       
    20   "idgen(f) == lam t. case(t,true,false,%x y.<f`x, f`y>,%u. lam x. f ` u(x))"
    19   "idgen(f) == lam t. case(t,true,false,%x y.<f`x, f`y>,%u. lam x. f ` u(x))"
    21 
    20 
    22   INCL_def   "INCL(%x. P(x)) == (ALL f.(ALL n:Nat. P(f^n`bot)) --> P(fix(f)))"
    21   INCL_def:   "INCL(%x. P(x)) == (ALL f.(ALL n:Nat. P(f^n`bot)) --> P(fix(f)))"
    23   po_INCL    "INCL(%x. a(x) [= b(x))"
    22   po_INCL:    "INCL(%x. a(x) [= b(x))"
    24   INCL_subst "INCL(P) ==> INCL(%x. P((g::i=>i)(x)))"
    23   INCL_subst: "INCL(P) ==> INCL(%x. P((g::i=>i)(x)))"
       
    24 
       
    25 ML {* use_legacy_bindings (the_context ()) *}
    25 
    26 
    26 end
    27 end