src/LCF/ex/Ex2.thy
author blanchet
Mon, 15 Sep 2014 10:49:07 +0200
changeset 58335 a5a3b576fcfb
parent 47025 b2b8ae61d6ad
child 58889 5b7a9633cfa8
permissions -rw-r--r--
generate 'code' attribute only if 'code' plugin is enabled
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17248
81bf91654e73 converted to Isar theory format;
wenzelm
parents: 4905
diff changeset
     1
header {* Example 3.8 *}
4905
be73ddff6c5a proper thy files;
wenzelm
parents:
diff changeset
     2
17248
81bf91654e73 converted to Isar theory format;
wenzelm
parents: 4905
diff changeset
     3
theory Ex2
81bf91654e73 converted to Isar theory format;
wenzelm
parents: 4905
diff changeset
     4
imports LCF
81bf91654e73 converted to Isar theory format;
wenzelm
parents: 4905
diff changeset
     5
begin
4905
be73ddff6c5a proper thy files;
wenzelm
parents:
diff changeset
     6
47025
b2b8ae61d6ad modernized axiomatizations;
wenzelm
parents: 35762
diff changeset
     7
axiomatization
b2b8ae61d6ad modernized axiomatizations;
wenzelm
parents: 35762
diff changeset
     8
  P     :: "'a => tr" and
b2b8ae61d6ad modernized axiomatizations;
wenzelm
parents: 35762
diff changeset
     9
  F     :: "'b => 'b" and
b2b8ae61d6ad modernized axiomatizations;
wenzelm
parents: 35762
diff changeset
    10
  G     :: "'a => 'a" and
b2b8ae61d6ad modernized axiomatizations;
wenzelm
parents: 35762
diff changeset
    11
  H     :: "'a => 'b => 'b" and
17248
81bf91654e73 converted to Isar theory format;
wenzelm
parents: 4905
diff changeset
    12
  K     :: "('a => 'b => 'b) => ('a => 'b => 'b)"
47025
b2b8ae61d6ad modernized axiomatizations;
wenzelm
parents: 35762
diff changeset
    13
where
b2b8ae61d6ad modernized axiomatizations;
wenzelm
parents: 35762
diff changeset
    14
  F_strict:     "F(UU) = UU" and
b2b8ae61d6ad modernized axiomatizations;
wenzelm
parents: 35762
diff changeset
    15
  K:            "K = (%h x y. P(x) => y | F(h(G(x),y)))" and
17248
81bf91654e73 converted to Isar theory format;
wenzelm
parents: 4905
diff changeset
    16
  H:            "H = FIX(K)"
81bf91654e73 converted to Isar theory format;
wenzelm
parents: 4905
diff changeset
    17
19755
90f80de04c46 removed obsolete ML files;
wenzelm
parents: 17248
diff changeset
    18
declare F_strict [simp] K [simp]
90f80de04c46 removed obsolete ML files;
wenzelm
parents: 17248
diff changeset
    19
90f80de04c46 removed obsolete ML files;
wenzelm
parents: 17248
diff changeset
    20
lemma example: "ALL x. F(H(x::'a,y::'b)) = H(x,F(y))"
90f80de04c46 removed obsolete ML files;
wenzelm
parents: 17248
diff changeset
    21
  apply (simplesubst H)
27208
5fe899199f85 proper context for tactics derived from res_inst_tac;
wenzelm
parents: 19755
diff changeset
    22
  apply (tactic {* induct_tac @{context} "K:: ('a=>'b=>'b) => ('a=>'b=>'b)" 1 *})
47025
b2b8ae61d6ad modernized axiomatizations;
wenzelm
parents: 35762
diff changeset
    23
  apply simp
b2b8ae61d6ad modernized axiomatizations;
wenzelm
parents: 35762
diff changeset
    24
  apply (simp split: COND_cases_iff)
19755
90f80de04c46 removed obsolete ML files;
wenzelm
parents: 17248
diff changeset
    25
  done
4905
be73ddff6c5a proper thy files;
wenzelm
parents:
diff changeset
    26
be73ddff6c5a proper thy files;
wenzelm
parents:
diff changeset
    27
end