equal
deleted
inserted
replaced
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 |