src/HOLCF/ex/Fix2.thy
author wenzelm
Sun, 28 May 2006 20:53:03 +0200
changeset 19742 86f21beabafc
parent 17291 94f6113fe9ed
child 25135 4f8176c940cf
permissions -rw-r--r--
removed legacy ML scripts;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1479
21eb5e156d91 expanded tabs
clasohm
parents: 1274
diff changeset
     1
(*  Title:      HOLCF/ex/Fix2.thy
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
     2
    ID:         $Id$
1479
21eb5e156d91 expanded tabs
clasohm
parents: 1274
diff changeset
     3
    Author:     Franz Regensburger
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
     4
17291
94f6113fe9ed converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
     5
Show that fix is the unique least fixed-point operator.
12036
wenzelm
parents: 10835
diff changeset
     6
From axioms gix1_def,gix2_def it follows that fix = gix
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
     7
*)
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
     8
17291
94f6113fe9ed converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
     9
theory Fix2
94f6113fe9ed converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    10
imports HOLCF
94f6113fe9ed converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    11
begin
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    12
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    13
consts
17291
94f6113fe9ed converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    14
  gix     :: "('a->'a)->'a"
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    15
17291
94f6113fe9ed converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    16
axioms
94f6113fe9ed converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    17
  gix1_def: "F$(gix$F) = gix$F"
94f6113fe9ed converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    18
  gix2_def: "F$y=y ==> gix$F << y"
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    19
19742
86f21beabafc removed legacy ML scripts;
wenzelm
parents: 17291
diff changeset
    20
86f21beabafc removed legacy ML scripts;
wenzelm
parents: 17291
diff changeset
    21
lemma lemma1: "fix = gix"
86f21beabafc removed legacy ML scripts;
wenzelm
parents: 17291
diff changeset
    22
apply (rule ext_cfun)
86f21beabafc removed legacy ML scripts;
wenzelm
parents: 17291
diff changeset
    23
apply (rule antisym_less)
86f21beabafc removed legacy ML scripts;
wenzelm
parents: 17291
diff changeset
    24
apply (rule fix_least)
86f21beabafc removed legacy ML scripts;
wenzelm
parents: 17291
diff changeset
    25
apply (rule gix1_def)
86f21beabafc removed legacy ML scripts;
wenzelm
parents: 17291
diff changeset
    26
apply (rule gix2_def)
86f21beabafc removed legacy ML scripts;
wenzelm
parents: 17291
diff changeset
    27
apply (rule fix_eq [symmetric])
86f21beabafc removed legacy ML scripts;
wenzelm
parents: 17291
diff changeset
    28
done
86f21beabafc removed legacy ML scripts;
wenzelm
parents: 17291
diff changeset
    29
86f21beabafc removed legacy ML scripts;
wenzelm
parents: 17291
diff changeset
    30
lemma lemma2: "gix$F=lub(range(%i. iterate i$F$UU))"
86f21beabafc removed legacy ML scripts;
wenzelm
parents: 17291
diff changeset
    31
apply (rule lemma1 [THEN subst])
86f21beabafc removed legacy ML scripts;
wenzelm
parents: 17291
diff changeset
    32
apply (rule fix_def2)
86f21beabafc removed legacy ML scripts;
wenzelm
parents: 17291
diff changeset
    33
done
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    34
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    35
end