author | urbanc |
Wed, 17 Aug 2011 17:36:19 +0000 | |
changeset 200 | 204856ef5573 |
parent 193 | 2a5ac68db24b |
child 203 | 5d724fe0e096 |
permissions | -rw-r--r-- |
170
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
1 |
(* Author: Christian Urban, Xingyuan Zhang, Chunhan Wu *) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
2 |
theory Closures |
200
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
3 |
imports Derivatives "~~/src/HOL/Library/Infinite_Set" |
170
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
4 |
begin |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
5 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
6 |
section {* Closure properties of regular languages *} |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
7 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
8 |
abbreviation |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
9 |
regular :: "'a lang \<Rightarrow> bool" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
10 |
where |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
11 |
"regular A \<equiv> \<exists>r. A = lang r" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
12 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
13 |
subsection {* Closure under set operations *} |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
14 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
15 |
lemma closure_union [intro]: |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
16 |
assumes "regular A" "regular B" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
17 |
shows "regular (A \<union> B)" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
18 |
proof - |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
19 |
from assms obtain r1 r2::"'a rexp" where "lang r1 = A" "lang r2 = B" by auto |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
20 |
then have "A \<union> B = lang (Plus r1 r2)" by simp |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
21 |
then show "regular (A \<union> B)" by blast |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
22 |
qed |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
23 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
24 |
lemma closure_seq [intro]: |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
25 |
assumes "regular A" "regular B" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
26 |
shows "regular (A \<cdot> B)" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
27 |
proof - |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
28 |
from assms obtain r1 r2::"'a rexp" where "lang r1 = A" "lang r2 = B" by auto |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
29 |
then have "A \<cdot> B = lang (Times r1 r2)" by simp |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
30 |
then show "regular (A \<cdot> B)" by blast |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
31 |
qed |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
32 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
33 |
lemma closure_star [intro]: |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
34 |
assumes "regular A" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
35 |
shows "regular (A\<star>)" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
36 |
proof - |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
37 |
from assms obtain r::"'a rexp" where "lang r = A" by auto |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
38 |
then have "A\<star> = lang (Star r)" by simp |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
39 |
then show "regular (A\<star>)" by blast |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
40 |
qed |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
41 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
42 |
text {* Closure under complementation is proved via the |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
43 |
Myhill-Nerode theorem *} |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
44 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
45 |
lemma closure_complement [intro]: |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
46 |
fixes A::"('a::finite) lang" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
47 |
assumes "regular A" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
48 |
shows "regular (- A)" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
49 |
proof - |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
50 |
from assms have "finite (UNIV // \<approx>A)" by (simp add: Myhill_Nerode) |
181 | 51 |
then have "finite (UNIV // \<approx>(-A))" by (simp add: str_eq_def) |
170
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
52 |
then show "regular (- A)" by (simp add: Myhill_Nerode) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
53 |
qed |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
54 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
55 |
lemma closure_difference [intro]: |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
56 |
fixes A::"('a::finite) lang" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
57 |
assumes "regular A" "regular B" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
58 |
shows "regular (A - B)" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
59 |
proof - |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
60 |
have "A - B = - (- A \<union> B)" by blast |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
61 |
moreover |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
62 |
have "regular (- (- A \<union> B))" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
63 |
using assms by blast |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
64 |
ultimately show "regular (A - B)" by simp |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
65 |
qed |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
66 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
67 |
lemma closure_intersection [intro]: |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
68 |
fixes A::"('a::finite) lang" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
69 |
assumes "regular A" "regular B" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
70 |
shows "regular (A \<inter> B)" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
71 |
proof - |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
72 |
have "A \<inter> B = - (- A \<union> - B)" by blast |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
73 |
moreover |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
74 |
have "regular (- (- A \<union> - B))" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
75 |
using assms by blast |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
76 |
ultimately show "regular (A \<inter> B)" by simp |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
77 |
qed |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
78 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
79 |
subsection {* Closure under string reversal *} |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
80 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
81 |
fun |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
82 |
Rev :: "'a rexp \<Rightarrow> 'a rexp" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
83 |
where |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
84 |
"Rev Zero = Zero" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
85 |
| "Rev One = One" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
86 |
| "Rev (Atom c) = Atom c" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
87 |
| "Rev (Plus r1 r2) = Plus (Rev r1) (Rev r2)" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
88 |
| "Rev (Times r1 r2) = Times (Rev r2) (Rev r1)" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
89 |
| "Rev (Star r) = Star (Rev r)" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
90 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
91 |
lemma rev_seq[simp]: |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
92 |
shows "rev ` (B \<cdot> A) = (rev ` A) \<cdot> (rev ` B)" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
93 |
unfolding conc_def image_def |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
94 |
by (auto) (metis rev_append)+ |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
95 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
96 |
lemma rev_star1: |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
97 |
assumes a: "s \<in> (rev ` A)\<star>" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
98 |
shows "s \<in> rev ` (A\<star>)" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
99 |
using a |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
100 |
proof(induct rule: star_induct) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
101 |
case (append s1 s2) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
102 |
have inj: "inj (rev::'a list \<Rightarrow> 'a list)" unfolding inj_on_def by auto |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
103 |
have "s1 \<in> rev ` A" "s2 \<in> rev ` (A\<star>)" by fact+ |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
104 |
then obtain x1 x2 where "x1 \<in> A" "x2 \<in> A\<star>" and eqs: "s1 = rev x1" "s2 = rev x2" by auto |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
105 |
then have "x1 \<in> A\<star>" "x2 \<in> A\<star>" by (auto) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
106 |
then have "x2 @ x1 \<in> A\<star>" by (auto) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
107 |
then have "rev (x2 @ x1) \<in> rev ` A\<star>" using inj by (simp only: inj_image_mem_iff) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
108 |
then show "s1 @ s2 \<in> rev ` A\<star>" using eqs by simp |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
109 |
qed (auto) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
110 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
111 |
lemma rev_star2: |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
112 |
assumes a: "s \<in> A\<star>" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
113 |
shows "rev s \<in> (rev ` A)\<star>" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
114 |
using a |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
115 |
proof(induct rule: star_induct) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
116 |
case (append s1 s2) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
117 |
have inj: "inj (rev::'a list \<Rightarrow> 'a list)" unfolding inj_on_def by auto |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
118 |
have "s1 \<in> A"by fact |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
119 |
then have "rev s1 \<in> rev ` A" using inj by (simp only: inj_image_mem_iff) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
120 |
then have "rev s1 \<in> (rev ` A)\<star>" by (auto) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
121 |
moreover |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
122 |
have "rev s2 \<in> (rev ` A)\<star>" by fact |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
123 |
ultimately show "rev (s1 @ s2) \<in> (rev ` A)\<star>" by (auto) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
124 |
qed (auto) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
125 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
126 |
lemma rev_star [simp]: |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
127 |
shows " rev ` (A\<star>) = (rev ` A)\<star>" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
128 |
using rev_star1 rev_star2 by auto |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
129 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
130 |
lemma rev_lang: |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
131 |
shows "rev ` (lang r) = lang (Rev r)" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
132 |
by (induct r) (simp_all add: image_Un) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
133 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
134 |
lemma closure_reversal [intro]: |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
135 |
assumes "regular A" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
136 |
shows "regular (rev ` A)" |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
137 |
proof - |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
138 |
from assms obtain r::"'a rexp" where "A = lang r" by auto |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
139 |
then have "lang (Rev r) = rev ` A" by (simp add: rev_lang) |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
140 |
then show "regular (rev` A)" by blast |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
141 |
qed |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
142 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
143 |
subsection {* Closure under left-quotients *} |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
144 |
|
187 | 145 |
abbreviation |
193
2a5ac68db24b
finished section about derivatives and closure properties
urbanc
parents:
191
diff
changeset
|
146 |
"Ders_lang A B \<equiv> \<Union>x \<in> A. Ders x B" |
187 | 147 |
|
170
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
148 |
lemma closure_left_quotient: |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
149 |
assumes "regular A" |
190 | 150 |
shows "regular (Ders_lang B A)" |
170
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
151 |
proof - |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
152 |
from assms obtain r::"'a rexp" where eq: "lang r = A" by auto |
190 | 153 |
have fin: "finite (pders_lang B r)" by (rule finite_pders_lang) |
170
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
154 |
|
190 | 155 |
have "Ders_lang B (lang r) = (\<Union> lang ` (pders_lang B r))" |
191 | 156 |
by (simp add: Ders_pders pders_lang_def) |
190 | 157 |
also have "\<dots> = lang (\<Uplus>(pders_lang B r))" using fin by simp |
158 |
finally have "Ders_lang B A = lang (\<Uplus>(pders_lang B r))" using eq |
|
170
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
159 |
by simp |
190 | 160 |
then show "regular (Ders_lang B A)" by auto |
170
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
161 |
qed |
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
162 |
|
200
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
163 |
subsection {* Finite and co-finite set are regular *} |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
164 |
|
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
165 |
lemma singleton_regular: |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
166 |
shows "regular {s}" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
167 |
proof (induct s) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
168 |
case Nil |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
169 |
have "{[]} = lang (One)" by simp |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
170 |
then show "regular {[]}" by blast |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
171 |
next |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
172 |
case (Cons c s) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
173 |
have "regular {s}" by fact |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
174 |
then obtain r where "{s} = lang r" by blast |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
175 |
then have "{c # s} = lang (Times (Atom c) r)" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
176 |
by (auto simp add: conc_def) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
177 |
then show "regular {c # s}" by blast |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
178 |
qed |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
179 |
|
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
180 |
lemma finite_regular: |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
181 |
assumes "finite A" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
182 |
shows "regular A" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
183 |
using assms |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
184 |
proof (induct) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
185 |
case empty |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
186 |
have "{} = lang (Zero)" by simp |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
187 |
then show "regular {}" by blast |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
188 |
next |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
189 |
case (insert s A) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
190 |
have "regular {s}" by (simp add: singleton_regular) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
191 |
moreover |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
192 |
have "regular A" by fact |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
193 |
ultimately have "regular ({s} \<union> A)" by (rule closure_union) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
194 |
then show "regular (insert s A)" by simp |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
195 |
qed |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
196 |
|
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
197 |
lemma cofinite_regular: |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
198 |
fixes A::"('a::finite list) set" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
199 |
assumes "finite (- A)" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
200 |
shows "regular A" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
201 |
proof - |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
202 |
from assms have "regular (- A)" by (simp add: finite_regular) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
203 |
then have "regular (-(- A))" by (rule closure_complement) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
204 |
then show "regular A" by simp |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
205 |
qed |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
206 |
|
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
207 |
|
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
208 |
subsection {* non-regularity of particular languages *} |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
209 |
|
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
210 |
lemma continuation_lemma: |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
211 |
fixes A B::"('a::finite list) set" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
212 |
assumes reg: "regular A" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
213 |
and inf: "infinite B" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
214 |
shows "\<exists>x \<in> B. \<exists>y \<in> B. x \<noteq> y \<and> x \<approx>A y" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
215 |
proof - |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
216 |
def eqfun \<equiv> "\<lambda>A x::('a::finite list). (\<approx>A) `` {x}" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
217 |
have "finite (UNIV // \<approx>A)" using reg by (simp add: Myhill_Nerode) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
218 |
moreover |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
219 |
have "(eqfun A) ` B \<subseteq> UNIV // (\<approx>A)" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
220 |
unfolding eqfun_def quotient_def by auto |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
221 |
ultimately have "finite ((eqfun A) ` B)" by (rule rev_finite_subset) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
222 |
with inf have "\<exists>a \<in> B. infinite {b \<in> B. eqfun A b = eqfun A a}" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
223 |
by (rule pigeonhole_infinite) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
224 |
then obtain a where in_a: "a \<in> B" and "infinite {b \<in> B. eqfun A b = eqfun A a}" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
225 |
by blast |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
226 |
moreover |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
227 |
have "{b \<in> B. eqfun A b = eqfun A a} = {b \<in> B. b \<approx>A a}" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
228 |
unfolding eqfun_def Image_def str_eq_def by auto |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
229 |
ultimately have "infinite {b \<in> B. b \<approx>A a}" by simp |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
230 |
then have "infinite ({b \<in> B. b \<approx>A a} - {a})" by simp |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
231 |
moreover |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
232 |
have "{b \<in> B. b \<approx>A a} - {a} = {b \<in> B. b \<approx>A a \<and> b \<noteq> a}" by auto |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
233 |
ultimately have "infinite {b \<in> B. b \<approx>A a \<and> b \<noteq> a}" by simp |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
234 |
then have "{b \<in> B. b \<approx>A a \<and> b \<noteq> a} \<noteq> {}" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
235 |
by (metis finite.emptyI) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
236 |
then obtain b where "b \<in> B" "b \<noteq> a" "b \<approx>A a" by blast |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
237 |
with in_a show "\<exists>x \<in> B. \<exists>y \<in> B. x \<noteq> y \<and> x \<approx>A y" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
238 |
by blast |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
239 |
qed |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
240 |
|
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
241 |
definition |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
242 |
"ex1 a b \<equiv> {replicate n a @ replicate n b | n. True}" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
243 |
|
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
244 |
(* |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
245 |
lemma |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
246 |
fixes a b::"'a::finite" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
247 |
assumes "a \<noteq> b" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
248 |
shows "\<not> regular (ex1 a b)" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
249 |
proof - |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
250 |
{ assume a: "regular (ex1 a b)" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
251 |
def fool \<equiv> "{replicate i a | i. True}" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
252 |
have b: "infinite fool" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
253 |
unfolding fool_def |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
254 |
unfolding infinite_iff_countable_subset |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
255 |
apply(rule_tac x="\<lambda>i. replicate i a" in exI) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
256 |
apply(auto simp add: inj_on_def) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
257 |
done |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
258 |
from a b have "\<exists>x \<in> fool. \<exists>y \<in> fool. x \<noteq> y \<and> x \<approx>(ex1 a b) y" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
259 |
using continuation_lemma by blast |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
260 |
moreover |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
261 |
have c: "\<forall>x \<in> fool. \<forall>y \<in> fool. x \<noteq> y \<longrightarrow> \<not>(x \<approx>(ex1 a b) y)" |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
262 |
apply(rule ballI) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
263 |
apply(rule ballI) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
264 |
apply(rule impI) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
265 |
unfolding fool_def |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
266 |
apply(simp) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
267 |
apply(erule exE)+ |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
268 |
unfolding str_eq_def |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
269 |
apply(simp) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
270 |
apply(rule_tac x="replicate i b" in exI) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
271 |
apply(simp add: ex1_def) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
272 |
apply(rule iffI) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
273 |
prefer 2 |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
274 |
apply(rule_tac x="i" in exI) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
275 |
apply(simp) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
276 |
apply(rule allI) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
277 |
apply(rotate_tac 3) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
278 |
apply(thin_tac "?X") |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
279 |
apply(auto) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
280 |
sorry |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
281 |
ultimately have "False" by auto |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
282 |
} |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
283 |
then show "\<not> regular (ex1 a b)" by auto |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
284 |
qed |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
285 |
*) |
204856ef5573
added an example for non-regularity and continuation lemma (the example does not yet work)
urbanc
parents:
193
diff
changeset
|
286 |
|
170
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
287 |
|
b1258b7d2789
made the theories compatible with the existing developments in the AFP; old theories are in the directory Attic
urbanc
parents:
diff
changeset
|
288 |
end |