| author | blanchet | 
| Sun, 01 May 2011 18:37:24 +0200 | |
| changeset 42558 | 3d9930cb6770 | 
| parent 41893 | dde7df1176b7 | 
| child 44193 | 013f7b14f6ff | 
| permissions | -rw-r--r-- | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1 | theory Class2 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2 | imports Class1 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3 | begin | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5 | text {* Reduction *}
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 7 | lemma fin_not_Cut: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 8 | assumes a: "fin M x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 9 | shows "\<not>(\<exists>a M' x N'. M = Cut <a>.M' (x).N')" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 10 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 11 | by (induct) (auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 12 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 13 | lemma fresh_not_fin: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 14 | assumes a: "x\<sharp>M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 15 | shows "\<not>fin M x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 16 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 17 | have "fin M x \<Longrightarrow> x\<sharp>M \<Longrightarrow> False" by (induct rule: fin.induct) (auto simp add: abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 18 | with a show "\<not>fin M x" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 19 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 20 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 21 | lemma fresh_not_fic: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 22 | assumes a: "a\<sharp>M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 23 | shows "\<not>fic M a" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 24 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 25 | have "fic M a \<Longrightarrow> a\<sharp>M \<Longrightarrow> False" by (induct rule: fic.induct) (auto simp add: abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 26 | with a show "\<not>fic M a" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 27 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 28 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 29 | lemma c_redu_subst1: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 30 | assumes a: "M \<longrightarrow>\<^isub>c M'" "c\<sharp>M" "y\<sharp>P" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 31 |   shows "M{y:=<c>.P} \<longrightarrow>\<^isub>c M'{y:=<c>.P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 32 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 33 | proof(nominal_induct avoiding: y c P rule: c_redu.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 34 | case (left M a N x) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 35 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 36 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 37 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 38 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 39 | apply(force) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 40 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 41 |     apply(subgoal_tac "M{a:=(x).N}{y:=<c>.P} = M{y:=<c>.P}{a:=(x).(N{y:=<c>.P})}")(*A*)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 42 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 43 | apply(rule c_redu.intros) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 44 | apply(rule not_fic_subst1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 45 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 46 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 47 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 48 | apply(simp add: abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 49 | apply(rule subst_subst2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 50 | apply(simp add: fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 51 | apply(simp add: fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 52 | apply(simp add: fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 53 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 54 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 55 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 56 | case (right N x a M) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 57 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 58 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 59 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 60 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 61 | (* case M = Ax y a *) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 62 | apply(rule impI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 63 |     apply(subgoal_tac "N{x:=<a>.Ax y a}{y:=<c>.P} = N{y:=<c>.P}{x:=<c>.P}")
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 64 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 65 | apply(rule c_redu.right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 66 | apply(rule not_fin_subst2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 67 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 68 | apply(rule subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 69 | apply(simp add: abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 70 | apply(simp add: abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 71 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 72 | apply(rule interesting_subst1') | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 73 | apply(simp add: fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 74 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 75 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 76 | (* case M \<noteq> Ax y a*) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 77 | apply(rule impI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 78 |     apply(subgoal_tac "N{x:=<a>.M}{y:=<c>.P} = N{y:=<c>.P}{x:=<a>.(M{y:=<c>.P})}")
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 79 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 80 | apply(rule c_redu.right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 81 | apply(rule not_fin_subst2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 82 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 83 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 84 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 85 | apply(simp add: abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 86 | apply(rule subst_subst3) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 87 | apply(simp_all add: fresh_atm fresh_prod) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 88 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 89 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 90 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 91 | lemma c_redu_subst2: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 92 | assumes a: "M \<longrightarrow>\<^isub>c M'" "c\<sharp>P" "y\<sharp>M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 93 |   shows "M{c:=(y).P} \<longrightarrow>\<^isub>c M'{c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 94 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 95 | proof(nominal_induct avoiding: y c P rule: c_redu.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 96 | case (right N x a M) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 97 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 98 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 99 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 100 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 101 | apply(force) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 102 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 103 |     apply(subgoal_tac "N{x:=<a>.M}{c:=(y).P} = N{c:=(y).P}{x:=<a>.(M{c:=(y).P})}")(*A*)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 104 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 105 | apply(rule c_redu.intros) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 106 | apply(rule not_fin_subst1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 107 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 108 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 109 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 110 | apply(simp add: abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 111 | apply(rule subst_subst1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 112 | apply(simp add: fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 113 | apply(simp add: fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 114 | apply(simp add: fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 115 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 116 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 117 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 118 | case (left M a N x) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 119 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 120 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 121 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 122 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 123 | (* case N = Ax x c *) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 124 | apply(rule impI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 125 |     apply(subgoal_tac "M{a:=(x).Ax x c}{c:=(y).P} = M{c:=(y).P}{a:=(y).P}")
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 126 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 127 | apply(rule c_redu.left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 128 | apply(rule not_fic_subst2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 129 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 130 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 131 | apply(rule subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 132 | apply(simp add: abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 133 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 134 | apply(rule interesting_subst2') | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 135 | apply(simp add: fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 136 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 137 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 138 | (* case M \<noteq> Ax y a*) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 139 | apply(rule impI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 140 |     apply(subgoal_tac "M{a:=(x).N}{c:=(y).P} = M{c:=(y).P}{a:=(x).(N{c:=(y).P})}")
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 141 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 142 | apply(rule c_redu.left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 143 | apply(rule not_fic_subst2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 144 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 145 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 146 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 147 | apply(simp add: abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 148 | apply(rule subst_subst4) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 149 | apply(simp add: fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 150 | apply(simp add: fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 151 | apply(simp add: fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 152 | apply(simp add: fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 153 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 154 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 155 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 156 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 157 | lemma c_redu_subst1': | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 158 | assumes a: "M \<longrightarrow>\<^isub>c M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 159 |   shows "M{y:=<c>.P} \<longrightarrow>\<^isub>c M'{y:=<c>.P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 160 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 161 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 162 | obtain y'::"name" where fs1: "y'\<sharp>(M,M',P,P,y)" by (rule exists_fresh(1), rule fin_supp, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 163 | obtain c'::"coname" where fs2: "c'\<sharp>(M,M',P,P,c)" by (rule exists_fresh(2), rule fin_supp, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 164 |   have "M{y:=<c>.P} = ([(y',y)]\<bullet>M){y':=<c'>.([(c',c)]\<bullet>P)}" using fs1 fs2
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 165 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 166 | apply(rule trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 167 | apply(rule_tac y="y'" in subst_rename(3)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 168 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 169 | apply(rule subst_rename(4)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 170 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 171 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 172 |   also have "\<dots> \<longrightarrow>\<^isub>c ([(y',y)]\<bullet>M'){y':=<c'>.([(c',c)]\<bullet>P)}" using fs1 fs2
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 173 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 174 | apply(rule c_redu_subst1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 175 | apply(simp add: c_redu.eqvt a) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 176 | apply(simp_all add: fresh_left calc_atm fresh_prod) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 177 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 178 |   also have "\<dots> = M'{y:=<c>.P}" using fs1 fs2
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 179 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 180 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 181 | apply(rule trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 182 | apply(rule_tac y="y'" in subst_rename(3)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 183 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 184 | apply(rule subst_rename(4)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 185 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 186 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 187 | finally show ?thesis by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 188 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 189 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 190 | lemma c_redu_subst2': | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 191 | assumes a: "M \<longrightarrow>\<^isub>c M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 192 |   shows "M{c:=(y).P} \<longrightarrow>\<^isub>c M'{c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 193 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 194 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 195 | obtain y'::"name" where fs1: "y'\<sharp>(M,M',P,P,y)" by (rule exists_fresh(1), rule fin_supp, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 196 | obtain c'::"coname" where fs2: "c'\<sharp>(M,M',P,P,c)" by (rule exists_fresh(2), rule fin_supp, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 197 |   have "M{c:=(y).P} = ([(c',c)]\<bullet>M){c':=(y').([(y',y)]\<bullet>P)}" using fs1 fs2
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 198 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 199 | apply(rule trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 200 | apply(rule_tac c="c'" in subst_rename(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 201 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 202 | apply(rule subst_rename(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 203 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 204 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 205 |   also have "\<dots> \<longrightarrow>\<^isub>c ([(c',c)]\<bullet>M'){c':=(y').([(y',y)]\<bullet>P)}" using fs1 fs2
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 206 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 207 | apply(rule c_redu_subst2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 208 | apply(simp add: c_redu.eqvt a) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 209 | apply(simp_all add: fresh_left calc_atm fresh_prod) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 210 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 211 |   also have "\<dots> = M'{c:=(y).P}" using fs1 fs2
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 212 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 213 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 214 | apply(rule trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 215 | apply(rule_tac c="c'" in subst_rename(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 216 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 217 | apply(rule subst_rename(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 218 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 219 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 220 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 221 | finally show ?thesis by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 222 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 223 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 224 | lemma aux1: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 225 | assumes a: "M = M'" "M' \<longrightarrow>\<^isub>l M''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 226 | shows "M \<longrightarrow>\<^isub>l M''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 227 | using a by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 228 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 229 | lemma aux2: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 230 | assumes a: "M \<longrightarrow>\<^isub>l M'" "M' = M''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 231 | shows "M \<longrightarrow>\<^isub>l M''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 232 | using a by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 233 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 234 | lemma aux3: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 235 | assumes a: "M = M'" "M' \<longrightarrow>\<^isub>a* M''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 236 | shows "M \<longrightarrow>\<^isub>a* M''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 237 | using a by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 238 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 239 | lemma aux4: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 240 | assumes a: "M = M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 241 | shows "M \<longrightarrow>\<^isub>a* M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 242 | using a by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 243 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 244 | lemma l_redu_subst1: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 245 | assumes a: "M \<longrightarrow>\<^isub>l M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 246 |   shows "M{y:=<c>.P} \<longrightarrow>\<^isub>a* M'{y:=<c>.P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 247 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 248 | proof(nominal_induct M M' avoiding: y c P rule: l_redu.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 249 | case LAxR | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 250 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 251 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 252 | apply(rule aux3) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 253 | apply(rule better_Cut_substn) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 254 | apply(simp add: abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 255 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 256 | apply(simp add: fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 257 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 258 | apply(rule aux4) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 259 | apply(simp add: trm.inject alpha calc_atm fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 260 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 261 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 262 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 263 | apply(rule l_redu.intros) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 264 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 265 | apply(simp add: fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 266 | apply(rule fic_subst2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 267 | apply(simp_all) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 268 | apply(rule aux4) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 269 | apply(rule subst_comm') | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 270 | apply(simp_all) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 271 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 272 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 273 | case LAxL | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 274 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 275 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 276 | apply(rule aux3) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 277 | apply(rule better_Cut_substn) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 278 | apply(simp add: abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 279 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 280 | apply(simp add: trm.inject fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 281 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 282 | apply(rule aux4) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 283 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 284 | apply(rule fin_substn_nrename) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 285 | apply(simp_all) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 286 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 287 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 288 | apply(rule aux2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 289 | apply(rule l_redu.intros) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 290 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 291 | apply(simp add: fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 292 | apply(rule fin_subst1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 293 | apply(simp_all) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 294 | apply(rule subst_comm') | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 295 | apply(simp_all) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 296 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 297 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 298 | case (LNot v M N u a b) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 299 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 300 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 301 |     { assume asm: "N\<noteq>Ax y b"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 302 |       have "(Cut <a>.NotR (u).M a (v).NotL <b>.N v){y:=<c>.P} = 
 | 
| 41893 | 303 |         (Cut <a>.NotR (u).(M{y:=<c>.P}) a (v).NotL <b>.(N{y:=<c>.P}) v)" using LNot
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 304 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 41893 | 305 |       also have "\<dots> \<longrightarrow>\<^isub>l (Cut <b>.(N{y:=<c>.P}) (u).(M{y:=<c>.P}))" using LNot
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 306 | by (auto intro: l_redu.intros simp add: subst_fresh) | 
| 41893 | 307 |       also have "\<dots> = (Cut <b>.N (u).M){y:=<c>.P}" using LNot asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 308 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 309 | finally have ?thesis by auto | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 310 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 311 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 312 |     { assume asm: "N=Ax y b"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 313 |       have "(Cut <a>.NotR (u).M a (v).NotL <b>.N v){y:=<c>.P} = 
 | 
| 41893 | 314 |         (Cut <a>.NotR (u).(M{y:=<c>.P}) a (v).NotL <b>.(N{y:=<c>.P}) v)" using LNot
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 315 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 41893 | 316 |       also have "\<dots> \<longrightarrow>\<^isub>a* (Cut <b>.(N{y:=<c>.P}) (u).(M{y:=<c>.P}))" using LNot
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 317 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 318 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 319 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 320 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 321 | done | 
| 41893 | 322 |       also have "\<dots> = (Cut <b>.(Cut <c>.P (y).Ax y b) (u).(M{y:=<c>.P}))" using LNot asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 323 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 324 |       also have "\<dots> \<longrightarrow>\<^isub>a* (Cut <b>.(P[c\<turnstile>c>b]) (u).(M{y:=<c>.P}))" 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 325 | proof (cases "fic P c") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 326 | case True | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 327 | assume "fic P c" | 
| 41893 | 328 | then show ?thesis using LNot | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 329 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 330 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 331 | apply(rule better_CutL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 332 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 333 | apply(rule better_LAxR_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 334 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 335 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 336 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 337 | case False | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 338 | assume "\<not>fic P c" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 339 | then show ?thesis | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 340 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 341 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 342 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 343 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 344 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 345 | apply(rule better_left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 346 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 347 | apply(simp add: subst_with_ax2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 348 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 349 | qed | 
| 41893 | 350 |       also have "\<dots> = (Cut <b>.N (u).M){y:=<c>.P}" using LNot asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 351 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 352 | apply(auto simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 353 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 354 | apply(simp add: alpha fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 355 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 356 | apply(rule crename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 357 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 358 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 359 |       finally have "(Cut <a>.NotR (u).M a (v).NotL <b>.N v){y:=<c>.P} \<longrightarrow>\<^isub>a* (Cut <b>.N (u).M){y:=<c>.P}" 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 360 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 361 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 362 | ultimately show ?thesis by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 363 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 364 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 365 | case (LAnd1 b a1 M1 a2 M2 N z u) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 366 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 367 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 368 |     { assume asm: "M1\<noteq>Ax y a1"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 369 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL1 (u).N z){y:=<c>.P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 370 |         Cut <b>.AndR <a1>.(M1{y:=<c>.P}) <a2>.(M2{y:=<c>.P}) b (z).AndL1 (u).(N{y:=<c>.P}) z" 
 | 
| 41893 | 371 | using LAnd1 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 372 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a1>.(M1{y:=<c>.P}) (u).(N{y:=<c>.P})"
 | 
| 41893 | 373 | using LAnd1 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 374 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 375 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 376 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 377 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 378 | done | 
| 41893 | 379 |       also have "\<dots> = (Cut <a1>.M1 (u).N){y:=<c>.P}" using LAnd1 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 380 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 381 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 382 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL1 (u).N z){y:=<c>.P} \<longrightarrow>\<^isub>a* (Cut <a1>.M1 (u).N){y:=<c>.P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 383 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 384 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 385 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 386 |     { assume asm: "M1=Ax y a1"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 387 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL1 (u).N z){y:=<c>.P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 388 |         Cut <b>.AndR <a1>.(M1{y:=<c>.P}) <a2>.(M2{y:=<c>.P}) b (z).AndL1 (u).(N{y:=<c>.P}) z" 
 | 
| 41893 | 389 | using LAnd1 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 390 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a1>.(M1{y:=<c>.P}) (u).(N{y:=<c>.P})"
 | 
| 41893 | 391 | using LAnd1 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 392 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 393 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 394 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 395 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 396 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 397 |       also have "\<dots> = Cut <a1>.(Cut <c>.P (y). Ax y a1) (u).(N{y:=<c>.P})" 
 | 
| 41893 | 398 | using LAnd1 asm by simp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 399 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a1>.P[c\<turnstile>c>a1] (u).(N{y:=<c>.P})"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 400 | proof (cases "fic P c") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 401 | case True | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 402 | assume "fic P c" | 
| 41893 | 403 | then show ?thesis using LAnd1 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 404 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 405 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 406 | apply(rule better_CutL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 407 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 408 | apply(rule better_LAxR_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 409 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 410 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 411 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 412 | case False | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 413 | assume "\<not>fic P c" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 414 | then show ?thesis | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 415 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 416 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 417 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 418 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 419 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 420 | apply(rule better_left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 421 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 422 | apply(simp add: subst_with_ax2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 423 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 424 | qed | 
| 41893 | 425 |       also have "\<dots> = (Cut <a1>.M1 (u).N){y:=<c>.P}" using LAnd1 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 426 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 427 | apply(auto simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 428 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 429 | apply(simp add: alpha fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 430 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 431 | apply(rule crename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 432 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 433 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 434 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 435 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL1 (u).N z){y:=<c>.P} \<longrightarrow>\<^isub>a* (Cut <a1>.M1 (u).N){y:=<c>.P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 436 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 437 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 438 | ultimately show ?thesis by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 439 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 440 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 441 | case (LAnd2 b a1 M1 a2 M2 N z u) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 442 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 443 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 444 |     { assume asm: "M2\<noteq>Ax y a2"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 445 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL2 (u).N z){y:=<c>.P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 446 |         Cut <b>.AndR <a1>.(M1{y:=<c>.P}) <a2>.(M2{y:=<c>.P}) b (z).AndL2 (u).(N{y:=<c>.P}) z" 
 | 
| 41893 | 447 | using LAnd2 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 448 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a2>.(M2{y:=<c>.P}) (u).(N{y:=<c>.P})"
 | 
| 41893 | 449 | using LAnd2 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 450 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 451 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 452 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 453 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 454 | done | 
| 41893 | 455 |       also have "\<dots> = (Cut <a2>.M2 (u).N){y:=<c>.P}" using LAnd2 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 456 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 457 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 458 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL2 (u).N z){y:=<c>.P} \<longrightarrow>\<^isub>a* (Cut <a2>.M2 (u).N){y:=<c>.P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 459 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 460 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 461 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 462 |     { assume asm: "M2=Ax y a2"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 463 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL2 (u).N z){y:=<c>.P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 464 |         Cut <b>.AndR <a1>.(M1{y:=<c>.P}) <a2>.(M2{y:=<c>.P}) b (z).AndL2 (u).(N{y:=<c>.P}) z" 
 | 
| 41893 | 465 | using LAnd2 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 466 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a2>.(M2{y:=<c>.P}) (u).(N{y:=<c>.P})"
 | 
| 41893 | 467 | using LAnd2 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 468 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 469 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 470 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 471 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 472 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 473 |       also have "\<dots> = Cut <a2>.(Cut <c>.P (y). Ax y a2) (u).(N{y:=<c>.P})" 
 | 
| 41893 | 474 | using LAnd2 asm by simp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 475 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a2>.P[c\<turnstile>c>a2] (u).(N{y:=<c>.P})"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 476 | proof (cases "fic P c") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 477 | case True | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 478 | assume "fic P c" | 
| 41893 | 479 | then show ?thesis using LAnd2 asm | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 480 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 481 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 482 | apply(rule better_CutL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 483 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 484 | apply(rule better_LAxR_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 485 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 486 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 487 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 488 | case False | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 489 | assume "\<not>fic P c" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 490 | then show ?thesis | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 491 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 492 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 493 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 494 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 495 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 496 | apply(rule better_left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 497 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 498 | apply(simp add: subst_with_ax2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 499 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 500 | qed | 
| 41893 | 501 |       also have "\<dots> = (Cut <a2>.M2 (u).N){y:=<c>.P}" using LAnd2 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 502 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 503 | apply(auto simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 504 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 505 | apply(simp add: alpha fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 506 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 507 | apply(rule crename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 508 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 509 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 510 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 511 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL2 (u).N z){y:=<c>.P} \<longrightarrow>\<^isub>a* (Cut <a2>.M2 (u).N){y:=<c>.P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 512 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 513 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 514 | ultimately show ?thesis by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 515 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 516 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 517 | case (LOr1 b a M N1 N2 z x1 x2 y c P) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 518 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 519 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 520 |     { assume asm: "M\<noteq>Ax y a"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 521 |       have "(Cut <b>.OrR1 <a>.M b (z).OrL (x1).N1 (x2).N2 z){y:=<c>.P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 522 |         Cut <b>.OrR1 <a>.(M{y:=<c>.P}) b (z).OrL (x1).(N1{y:=<c>.P}) (x2).(N2{y:=<c>.P}) z" 
 | 
| 41893 | 523 | using LOr1 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 524 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(M{y:=<c>.P}) (x1).(N1{y:=<c>.P})"
 | 
| 41893 | 525 | using LOr1 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 526 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 527 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 528 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 529 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 530 | done | 
| 41893 | 531 |       also have "\<dots> = (Cut <a>.M (x1).N1){y:=<c>.P}" using LOr1 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 532 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 533 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 534 |       have "(Cut <b>.OrR1 <a>.M b (z).OrL (x1).N1 (x2).N2 z){y:=<c>.P} \<longrightarrow>\<^isub>a* (Cut <a>.M (x1).N1){y:=<c>.P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 535 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 536 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 537 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 538 |     { assume asm: "M=Ax y a"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 539 |       have "(Cut <b>.OrR1 <a>.M b (z).OrL (x1).N1 (x2).N2 z){y:=<c>.P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 540 |         Cut <b>.OrR1 <a>.(M{y:=<c>.P}) b (z).OrL (x1).(N1{y:=<c>.P}) (x2).(N2{y:=<c>.P}) z" 
 | 
| 41893 | 541 | using LOr1 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 542 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(M{y:=<c>.P}) (x1).(N1{y:=<c>.P})"
 | 
| 41893 | 543 | using LOr1 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 544 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 545 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 546 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 547 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 548 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 549 |       also have "\<dots> = Cut <a>.(Cut <c>.P (y). Ax y a) (x1).(N1{y:=<c>.P})" 
 | 
| 41893 | 550 | using LOr1 asm by simp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 551 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.P[c\<turnstile>c>a] (x1).(N1{y:=<c>.P})"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 552 | proof (cases "fic P c") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 553 | case True | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 554 | assume "fic P c" | 
| 41893 | 555 | then show ?thesis using LOr1 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 556 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 557 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 558 | apply(rule better_CutL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 559 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 560 | apply(rule better_LAxR_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 561 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 562 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 563 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 564 | case False | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 565 | assume "\<not>fic P c" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 566 | then show ?thesis | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 567 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 568 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 569 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 570 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 571 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 572 | apply(rule better_left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 573 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 574 | apply(simp add: subst_with_ax2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 575 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 576 | qed | 
| 41893 | 577 |       also have "\<dots> = (Cut <a>.M (x1).N1){y:=<c>.P}" using LOr1 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 578 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 579 | apply(auto simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 580 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 581 | apply(simp add: alpha fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 582 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 583 | apply(rule crename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 584 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 585 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 586 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 587 |       have "(Cut <b>.OrR1 <a>.M b (z).OrL (x1).N1 (x2).N2 z){y:=<c>.P} \<longrightarrow>\<^isub>a* (Cut <a>.M (x1).N1){y:=<c>.P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 588 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 589 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 590 | ultimately show ?thesis by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 591 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 592 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 593 | case (LOr2 b a M N1 N2 z x1 x2 y c P) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 594 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 595 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 596 |     { assume asm: "M\<noteq>Ax y a"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 597 |       have "(Cut <b>.OrR2 <a>.M b (z).OrL (x1).N1 (x2).N2 z){y:=<c>.P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 598 |         Cut <b>.OrR2 <a>.(M{y:=<c>.P}) b (z).OrL (x1).(N1{y:=<c>.P}) (x2).(N2{y:=<c>.P}) z" 
 | 
| 41893 | 599 | using LOr2 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 600 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(M{y:=<c>.P}) (x2).(N2{y:=<c>.P})"
 | 
| 41893 | 601 | using LOr2 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 602 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 603 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 604 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 605 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 606 | done | 
| 41893 | 607 |       also have "\<dots> = (Cut <a>.M (x2).N2){y:=<c>.P}" using LOr2 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 608 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 609 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 610 |       have "(Cut <b>.OrR2 <a>.M b (z).OrL (x1).N1 (x2).N2 z){y:=<c>.P} \<longrightarrow>\<^isub>a* (Cut <a>.M (x2).N2){y:=<c>.P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 611 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 612 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 613 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 614 |     { assume asm: "M=Ax y a"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 615 |       have "(Cut <b>.OrR2 <a>.M b (z).OrL (x1).N1 (x2).N2 z){y:=<c>.P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 616 |         Cut <b>.OrR2 <a>.(M{y:=<c>.P}) b (z).OrL (x1).(N1{y:=<c>.P}) (x2).(N2{y:=<c>.P}) z" 
 | 
| 41893 | 617 | using LOr2 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 618 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(M{y:=<c>.P}) (x2).(N2{y:=<c>.P})"
 | 
| 41893 | 619 | using LOr2 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 620 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 621 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 622 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 623 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 624 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 625 |       also have "\<dots> = Cut <a>.(Cut <c>.P (y). Ax y a) (x2).(N2{y:=<c>.P})" 
 | 
| 41893 | 626 | using LOr2 asm by simp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 627 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.P[c\<turnstile>c>a] (x2).(N2{y:=<c>.P})"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 628 | proof (cases "fic P c") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 629 | case True | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 630 | assume "fic P c" | 
| 41893 | 631 | then show ?thesis using LOr2 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 632 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 633 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 634 | apply(rule better_CutL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 635 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 636 | apply(rule better_LAxR_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 637 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 638 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 639 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 640 | case False | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 641 | assume "\<not>fic P c" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 642 | then show ?thesis | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 643 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 644 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 645 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 646 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 647 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 648 | apply(rule better_left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 649 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 650 | apply(simp add: subst_with_ax2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 651 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 652 | qed | 
| 41893 | 653 |       also have "\<dots> = (Cut <a>.M (x2).N2){y:=<c>.P}" using LOr2 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 654 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 655 | apply(auto simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 656 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 657 | apply(simp add: alpha fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 658 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 659 | apply(rule crename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 660 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 661 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 662 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 663 |       have "(Cut <b>.OrR2 <a>.M b (z).OrL (x1).N1 (x2).N2 z){y:=<c>.P} \<longrightarrow>\<^isub>a* (Cut <a>.M (x2).N2){y:=<c>.P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 664 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 665 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 666 | ultimately show ?thesis by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 667 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 668 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 669 | case (LImp z N u Q x M b a d y c P) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 670 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 671 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 672 |     { assume asm: "N\<noteq>Ax y d"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 673 |       have "(Cut <b>.ImpR (x).<a>.M b (z).ImpL <d>.N (u).Q z){y:=<c>.P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 674 |         Cut <b>.ImpR (x).<a>.(M{y:=<c>.P}) b (z).ImpL <d>.(N{y:=<c>.P}) (u).(Q{y:=<c>.P}) z" 
 | 
| 41893 | 675 | using LImp by (simp add: fresh_prod abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 676 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(Cut <d>.(N{y:=<c>.P})  (x).(M{y:=<c>.P})) (u).(Q{y:=<c>.P})"
 | 
| 41893 | 677 | using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 678 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 679 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 680 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 681 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 682 | done | 
| 41893 | 683 |       also have "\<dots> = (Cut <a>.(Cut <d>.N  (x).M) (u).Q){y:=<c>.P}" using LImp asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 684 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 685 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 686 |       have "(Cut <b>.ImpR (x).<a>.M b (z).ImpL <d>.N (u).Q z){y:=<c>.P} \<longrightarrow>\<^isub>a* 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 687 |                      (Cut <a>.(Cut <d>.N  (x).M) (u).Q){y:=<c>.P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 688 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 689 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 690 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 691 |     { assume asm: "N=Ax y d"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 692 |       have "(Cut <b>.ImpR (x).<a>.M b (z).ImpL <d>.N (u).Q z){y:=<c>.P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 693 |         Cut <b>.ImpR (x).<a>.(M{y:=<c>.P}) b (z).ImpL <d>.(N{y:=<c>.P}) (u).(Q{y:=<c>.P}) z" 
 | 
| 41893 | 694 | using LImp by (simp add: subst_fresh abs_fresh fresh_atm fresh_prod) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 695 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(Cut <d>.(N{y:=<c>.P})  (x).(M{y:=<c>.P})) (u).(Q{y:=<c>.P})"
 | 
| 41893 | 696 | using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 697 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 698 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 699 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 700 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 701 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 702 |       also have "\<dots> = Cut <a>.(Cut <d>.(Cut <c>.P (y).Ax y d)  (x).(M{y:=<c>.P})) (u).(Q{y:=<c>.P})"
 | 
| 41893 | 703 | using LImp asm by simp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 704 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(Cut <d>.(P[c\<turnstile>c>d]) (x).(M{y:=<c>.P})) (u).(Q{y:=<c>.P})"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 705 | proof (cases "fic P c") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 706 | case True | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 707 | assume "fic P c" | 
| 41893 | 708 | then show ?thesis using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 709 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 710 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 711 | apply(rule better_CutL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 712 | apply(rule a_Cut_l) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 713 | apply(simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 714 | apply(simp add: abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 715 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 716 | apply(rule better_LAxR_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 717 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 718 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 719 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 720 | case False | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 721 | assume "\<not>fic P c" | 
| 41893 | 722 | then show ?thesis using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 723 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 724 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 725 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 726 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 727 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 728 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 729 | apply(rule better_left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 730 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 731 | apply(simp add: subst_with_ax2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 732 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 733 | qed | 
| 41893 | 734 |       also have "\<dots> = (Cut <a>.(Cut <d>.N (x).M) (u).Q){y:=<c>.P}" using LImp asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 735 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 736 | apply(auto simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 737 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 738 | apply(simp add: alpha fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 739 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 740 | apply(simp add: alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 741 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 742 | apply(rule crename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 743 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 744 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 745 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 746 |       have "(Cut <b>.ImpR (x).<a>.M b (z).ImpL <d>.N (u).Q z){y:=<c>.P} \<longrightarrow>\<^isub>a* 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 747 |                (Cut <a>.(Cut <d>.N (x).M) (u).Q){y:=<c>.P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 748 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 749 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 750 | ultimately show ?thesis by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 751 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 752 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 753 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 754 | lemma l_redu_subst2: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 755 | assumes a: "M \<longrightarrow>\<^isub>l M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 756 |   shows "M{c:=(y).P} \<longrightarrow>\<^isub>a* M'{c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 757 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 758 | proof(nominal_induct M M' avoiding: y c P rule: l_redu.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 759 | case LAxR | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 760 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 761 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 762 | apply(rule aux3) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 763 | apply(rule better_Cut_substc) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 764 | apply(simp add: abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 765 | apply(simp add: abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 766 | apply(simp add: trm.inject fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 767 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 768 | apply(rule aux4) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 769 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 770 | apply(rule fic_substc_crename) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 771 | apply(simp_all) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 772 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 773 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 774 | apply(rule aux2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 775 | apply(rule l_redu.intros) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 776 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 777 | apply(simp add: fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 778 | apply(rule fic_subst1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 779 | apply(simp_all) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 780 | apply(rule subst_comm') | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 781 | apply(simp_all) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 782 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 783 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 784 | case LAxL | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 785 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 786 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 787 | apply(rule aux3) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 788 | apply(rule better_Cut_substc) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 789 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 790 | apply(simp add: abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 791 | apply(simp add: fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 792 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 793 | apply(rule aux4) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 794 | apply(simp add: trm.inject alpha calc_atm fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 795 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 796 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 797 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 798 | apply(rule l_redu.intros) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 799 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 800 | apply(simp add: fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 801 | apply(rule fin_subst2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 802 | apply(simp_all) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 803 | apply(rule aux4) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 804 | apply(rule subst_comm') | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 805 | apply(simp_all) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 806 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 807 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 808 | case (LNot v M N u a b) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 809 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 810 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 811 |     { assume asm: "M\<noteq>Ax u c"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 812 |       have "(Cut <a>.NotR (u).M a (v).NotL <b>.N v){c:=(y).P} = 
 | 
| 41893 | 813 |         (Cut <a>.NotR (u).(M{c:=(y).P}) a (v).NotL <b>.(N{c:=(y).P}) v)" using LNot
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 814 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 41893 | 815 |       also have "\<dots> \<longrightarrow>\<^isub>l (Cut <b>.(N{c:=(y).P}) (u).(M{c:=(y).P}))" using LNot
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 816 | by (auto intro: l_redu.intros simp add: subst_fresh) | 
| 41893 | 817 |       also have "\<dots> = (Cut <b>.N (u).M){c:=(y).P}" using LNot asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 818 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 819 | finally have ?thesis by auto | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 820 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 821 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 822 |     { assume asm: "M=Ax u c"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 823 |       have "(Cut <a>.NotR (u).M a (v).NotL <b>.N v){c:=(y).P} = 
 | 
| 41893 | 824 |         (Cut <a>.NotR (u).(M{c:=(y).P}) a (v).NotL <b>.(N{c:=(y).P}) v)" using LNot
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 825 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 41893 | 826 |       also have "\<dots> \<longrightarrow>\<^isub>a* (Cut <b>.(N{c:=(y).P}) (u).(M{c:=(y).P}))" using LNot
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 827 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 828 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 829 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 830 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 831 | done | 
| 41893 | 832 |       also have "\<dots> = (Cut <b>.(N{c:=(y).P}) (u).(Cut <c>.(Ax u c) (y).P))" using LNot asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 833 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 834 |       also have "\<dots> \<longrightarrow>\<^isub>a* (Cut <b>.(N{c:=(y).P})  (u).(P[y\<turnstile>n>u]))" 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 835 | proof (cases "fin P y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 836 | case True | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 837 | assume "fin P y" | 
| 41893 | 838 | then show ?thesis using LNot | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 839 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 840 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 841 | apply(rule better_CutR_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 842 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 843 | apply(rule better_LAxL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 844 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 845 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 846 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 847 | case False | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 848 | assume "\<not>fin P y" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 849 | then show ?thesis | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 850 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 851 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 852 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 853 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 854 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 855 | apply(rule better_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 856 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 857 | apply(simp add: subst_with_ax1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 858 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 859 | qed | 
| 41893 | 860 |       also have "\<dots> = (Cut <b>.N (u).M){c:=(y).P}" using LNot asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 861 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 862 | apply(auto simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 863 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 864 | apply(simp add: alpha fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 865 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 866 | apply(rule nrename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 867 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 868 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 869 |       finally have "(Cut <a>.NotR (u).M a (v).NotL <b>.N v){c:=(y).P} \<longrightarrow>\<^isub>a* (Cut <b>.N (u).M){c:=(y).P}" 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 870 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 871 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 872 | ultimately show ?thesis by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 873 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 874 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 875 | case (LAnd1 b a1 M1 a2 M2 N z u) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 876 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 877 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 878 |     { assume asm: "N\<noteq>Ax u c"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 879 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL1 (u).N z){c:=(y).P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 880 |         Cut <b>.AndR <a1>.(M1{c:=(y).P}) <a2>.(M2{c:=(y).P}) b (z).AndL1 (u).(N{c:=(y).P}) z" 
 | 
| 41893 | 881 | using LAnd1 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 882 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a1>.(M1{c:=(y).P}) (u).(N{c:=(y).P})"
 | 
| 41893 | 883 | using LAnd1 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 884 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 885 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 886 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 887 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 888 | done | 
| 41893 | 889 |       also have "\<dots> = (Cut <a1>.M1 (u).N){c:=(y).P}" using LAnd1 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 890 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 891 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 892 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL1 (u).N z){c:=(y).P} \<longrightarrow>\<^isub>a* (Cut <a1>.M1 (u).N){c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 893 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 894 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 895 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 896 |     { assume asm: "N=Ax u c"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 897 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL1 (u).N z){c:=(y).P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 898 |         Cut <b>.AndR <a1>.(M1{c:=(y).P}) <a2>.(M2{c:=(y).P}) b (z).AndL1 (u).(N{c:=(y).P}) z" 
 | 
| 41893 | 899 | using LAnd1 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 900 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a1>.(M1{c:=(y).P}) (u).(N{c:=(y).P})"
 | 
| 41893 | 901 | using LAnd1 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 902 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 903 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 904 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 905 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 906 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 907 |       also have "\<dots> = Cut <a1>.(M1{c:=(y).P}) (u).(Cut <c>.(Ax u c) (y).P)" 
 | 
| 41893 | 908 | using LAnd1 asm by simp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 909 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a1>.(M1{c:=(y).P}) (u).(P[y\<turnstile>n>u])"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 910 | proof (cases "fin P y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 911 | case True | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 912 | assume "fin P y" | 
| 41893 | 913 | then show ?thesis using LAnd1 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 914 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 915 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 916 | apply(rule better_CutR_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 917 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 918 | apply(rule better_LAxL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 919 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 920 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 921 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 922 | case False | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 923 | assume "\<not>fin P y" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 924 | then show ?thesis | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 925 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 926 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 927 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 928 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 929 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 930 | apply(rule better_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 931 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 932 | apply(simp add: subst_with_ax1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 933 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 934 | qed | 
| 41893 | 935 |       also have "\<dots> = (Cut <a1>.M1 (u).N){c:=(y).P}" using LAnd1 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 936 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 937 | apply(auto simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 938 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 939 | apply(simp add: alpha fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 940 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 941 | apply(rule nrename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 942 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 943 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 944 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 945 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL1 (u).N z){c:=(y).P} \<longrightarrow>\<^isub>a* (Cut <a1>.M1 (u).N){c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 946 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 947 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 948 | ultimately show ?thesis by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 949 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 950 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 951 | case (LAnd2 b a1 M1 a2 M2 N z u) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 952 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 953 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 954 |     { assume asm: "N\<noteq>Ax u c"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 955 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL2 (u).N z){c:=(y).P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 956 |         Cut <b>.AndR <a1>.(M1{c:=(y).P}) <a2>.(M2{c:=(y).P}) b (z).AndL2 (u).(N{c:=(y).P}) z" 
 | 
| 41893 | 957 | using LAnd2 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 958 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a2>.(M2{c:=(y).P}) (u).(N{c:=(y).P})"
 | 
| 41893 | 959 | using LAnd2 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 960 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 961 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 962 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 963 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 964 | done | 
| 41893 | 965 |       also have "\<dots> = (Cut <a2>.M2 (u).N){c:=(y).P}" using LAnd2 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 966 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 967 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 968 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL2 (u).N z){c:=(y).P} \<longrightarrow>\<^isub>a* (Cut <a2>.M2 (u).N){c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 969 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 970 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 971 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 972 |     { assume asm: "N=Ax u c"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 973 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL2 (u).N z){c:=(y).P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 974 |         Cut <b>.AndR <a1>.(M1{c:=(y).P}) <a2>.(M2{c:=(y).P}) b (z).AndL2 (u).(N{c:=(y).P}) z" 
 | 
| 41893 | 975 | using LAnd2 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 976 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a2>.(M2{c:=(y).P}) (u).(N{c:=(y).P})"
 | 
| 41893 | 977 | using LAnd2 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 978 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 979 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 980 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 981 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 982 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 983 |       also have "\<dots> = Cut <a2>.(M2{c:=(y).P}) (u).(Cut <c>.(Ax u c) (y).P)" 
 | 
| 41893 | 984 | using LAnd2 asm by simp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 985 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a2>.(M2{c:=(y).P}) (u).(P[y\<turnstile>n>u])"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 986 | proof (cases "fin P y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 987 | case True | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 988 | assume "fin P y" | 
| 41893 | 989 | then show ?thesis using LAnd2 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 990 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 991 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 992 | apply(rule better_CutR_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 993 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 994 | apply(rule better_LAxL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 995 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 996 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 997 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 998 | case False | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 999 | assume "\<not>fin P y" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1000 | then show ?thesis | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1001 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1002 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1003 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1004 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1005 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1006 | apply(rule better_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1007 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1008 | apply(simp add: subst_with_ax1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1009 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1010 | qed | 
| 41893 | 1011 |       also have "\<dots> = (Cut <a2>.M2 (u).N){c:=(y).P}" using LAnd2 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1012 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1013 | apply(auto simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1014 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1015 | apply(simp add: alpha fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1016 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1017 | apply(rule nrename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1018 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1019 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1020 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1021 |       have "(Cut <b>.AndR <a1>.M1 <a2>.M2 b (z).AndL2 (u).N z){c:=(y).P} \<longrightarrow>\<^isub>a* (Cut <a2>.M2 (u).N){c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1022 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1023 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1024 | ultimately show ?thesis by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1025 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1026 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1027 | case (LOr1 b a M N1 N2 z x1 x2 y c P) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1028 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1029 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1030 |     { assume asm: "N1\<noteq>Ax x1 c"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1031 |       have "(Cut <b>.OrR1 <a>.M b (z).OrL (x1).N1 (x2).N2 z){c:=(y).P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1032 |         Cut <b>.OrR1 <a>.(M{c:=(y).P}) b (z).OrL (x1).(N1{c:=(y).P}) (x2).(N2{c:=(y).P}) z" 
 | 
| 41893 | 1033 | using LOr1 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1034 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(M{c:=(y).P}) (x1).(N1{c:=(y).P})"
 | 
| 41893 | 1035 | using LOr1 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1036 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1037 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1038 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1039 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1040 | done | 
| 41893 | 1041 |       also have "\<dots> = (Cut <a>.M (x1).N1){c:=(y).P}" using LOr1 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1042 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1043 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1044 |       have "(Cut <b>.OrR1 <a>.M b (z).OrL (x1).N1 (x2).N2 z){c:=(y).P} \<longrightarrow>\<^isub>a* (Cut <a>.M (x1).N1){c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1045 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1046 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1047 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1048 |     { assume asm: "N1=Ax x1 c"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1049 |       have "(Cut <b>.OrR1 <a>.M b (z).OrL (x1).N1 (x2).N2 z){c:=(y).P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1050 |         Cut <b>.OrR1 <a>.(M{c:=(y).P}) b (z).OrL (x1).(N1{c:=(y).P}) (x2).(N2{c:=(y).P}) z" 
 | 
| 41893 | 1051 | using LOr1 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1052 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(M{c:=(y).P}) (x1).(N1{c:=(y).P})"
 | 
| 41893 | 1053 | using LOr1 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1054 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1055 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1056 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1057 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1058 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1059 |       also have "\<dots> = Cut <a>.(M{c:=(y).P}) (x1).(Cut <c>.(Ax x1 c) (y).P)" 
 | 
| 41893 | 1060 | using LOr1 asm by simp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1061 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(M{c:=(y).P})   (x1).(P[y\<turnstile>n>x1])"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1062 | proof (cases "fin P y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1063 | case True | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1064 | assume "fin P y" | 
| 41893 | 1065 | then show ?thesis using LOr1 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1066 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1067 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1068 | apply(rule better_CutR_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1069 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1070 | apply(rule better_LAxL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1071 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1072 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1073 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1074 | case False | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1075 | assume "\<not>fin P y" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1076 | then show ?thesis | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1077 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1078 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1079 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1080 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1081 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1082 | apply(rule better_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1083 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1084 | apply(simp add: subst_with_ax1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1085 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1086 | qed | 
| 41893 | 1087 |       also have "\<dots> = (Cut <a>.M (x1).N1){c:=(y).P}" using LOr1 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1088 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1089 | apply(auto simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1090 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1091 | apply(simp add: alpha fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1092 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1093 | apply(rule nrename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1094 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1095 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1096 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1097 |       have "(Cut <b>.OrR1 <a>.M b (z).OrL (x1).N1 (x2).N2 z){c:=(y).P} \<longrightarrow>\<^isub>a* (Cut <a>.M (x1).N1){c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1098 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1099 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1100 | ultimately show ?thesis by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1101 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1102 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1103 | case (LOr2 b a M N1 N2 z x1 x2 y c P) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1104 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1105 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1106 |     { assume asm: "N2\<noteq>Ax x2 c"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1107 |       have "(Cut <b>.OrR2 <a>.M b (z).OrL (x1).N1 (x2).N2 z){c:=(y).P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1108 |         Cut <b>.OrR2 <a>.(M{c:=(y).P}) b (z).OrL (x1).(N1{c:=(y).P}) (x2).(N2{c:=(y).P}) z" 
 | 
| 41893 | 1109 | using LOr2 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1110 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(M{c:=(y).P}) (x2).(N2{c:=(y).P})"
 | 
| 41893 | 1111 | using LOr2 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1112 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1113 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1114 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1115 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1116 | done | 
| 41893 | 1117 |       also have "\<dots> = (Cut <a>.M (x2).N2){c:=(y).P}" using LOr2 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1118 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1119 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1120 |       have "(Cut <b>.OrR2 <a>.M b (z).OrL (x1).N1 (x2).N2 z){c:=(y).P} \<longrightarrow>\<^isub>a* (Cut <a>.M (x2).N2){c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1121 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1122 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1123 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1124 |     { assume asm: "N2=Ax x2 c"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1125 |       have "(Cut <b>.OrR2 <a>.M b (z).OrL (x1).N1 (x2).N2 z){c:=(y).P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1126 |         Cut <b>.OrR2 <a>.(M{c:=(y).P}) b (z).OrL (x1).(N1{c:=(y).P}) (x2).(N2{c:=(y).P}) z" 
 | 
| 41893 | 1127 | using LOr2 by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1128 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(M{c:=(y).P}) (x2).(N2{c:=(y).P})"
 | 
| 41893 | 1129 | using LOr2 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1130 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1131 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1132 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1133 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1134 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1135 |       also have "\<dots> = Cut <a>.(M{c:=(y).P}) (x2).(Cut <c>.(Ax x2 c) (y).P)" 
 | 
| 41893 | 1136 | using LOr2 asm by simp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1137 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(M{c:=(y).P}) (x2).(P[y\<turnstile>n>x2])"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1138 | proof (cases "fin P y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1139 | case True | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1140 | assume "fin P y" | 
| 41893 | 1141 | then show ?thesis using LOr2 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1142 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1143 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1144 | apply(rule better_CutR_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1145 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1146 | apply(rule better_LAxL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1147 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1148 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1149 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1150 | case False | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1151 | assume "\<not>fin P y" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1152 | then show ?thesis | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1153 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1154 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1155 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1156 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1157 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1158 | apply(rule better_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1159 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1160 | apply(simp add: subst_with_ax1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1161 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1162 | qed | 
| 41893 | 1163 |       also have "\<dots> = (Cut <a>.M (x2).N2){c:=(y).P}" using LOr2 asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1164 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1165 | apply(auto simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1166 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1167 | apply(simp add: alpha fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1168 | apply(rule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1169 | apply(rule nrename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1170 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1171 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1172 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1173 |       have "(Cut <b>.OrR2 <a>.M b (z).OrL (x1).N1 (x2).N2 z){c:=(y).P} \<longrightarrow>\<^isub>a* (Cut <a>.M (x2).N2){c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1174 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1175 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1176 | ultimately show ?thesis by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1177 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1178 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1179 | case (LImp z N u Q x M b a d y c P) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1180 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1181 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1182 |     { assume asm: "M\<noteq>Ax x c \<and> Q\<noteq>Ax u c"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1183 |       have "(Cut <b>.ImpR (x).<a>.M b (z).ImpL <d>.N (u).Q z){c:=(y).P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1184 |         Cut <b>.ImpR (x).<a>.(M{c:=(y).P}) b (z).ImpL <d>.(N{c:=(y).P}) (u).(Q{c:=(y).P}) z" 
 | 
| 41893 | 1185 | using LImp by (simp add: fresh_prod abs_fresh fresh_atm) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1186 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(Cut <d>.(N{c:=(y).P})  (x).(M{c:=(y).P})) (u).(Q{c:=(y).P})"
 | 
| 41893 | 1187 | using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1188 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1189 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1190 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1191 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1192 | done | 
| 41893 | 1193 |       also have "\<dots> = (Cut <a>.(Cut <d>.N  (x).M) (u).Q){c:=(y).P}" using LImp asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1194 | by (simp add: subst_fresh abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1195 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1196 |       have "(Cut <b>.ImpR (x).<a>.M b (z).ImpL <d>.N (u).Q z){c:=(y).P} \<longrightarrow>\<^isub>a* 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1197 |                      (Cut <a>.(Cut <d>.N  (x).M) (u).Q){c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1198 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1199 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1200 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1201 |     { assume asm: "M=Ax x c \<and> Q\<noteq>Ax u c"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1202 |       have "(Cut <b>.ImpR (x).<a>.M b (z).ImpL <d>.N (u).Q z){c:=(y).P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1203 |         Cut <b>.ImpR (x).<a>.(M{c:=(y).P}) b (z).ImpL <d>.(N{c:=(y).P}) (u).(Q{c:=(y).P}) z" 
 | 
| 41893 | 1204 | using LImp by (simp add: subst_fresh abs_fresh fresh_atm fresh_prod) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1205 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(Cut <d>.(N{c:=(y).P})  (x).(M{c:=(y).P})) (u).(Q{c:=(y).P})"
 | 
| 41893 | 1206 | using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1207 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1208 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1209 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1210 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1211 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1212 |       also have "\<dots> = Cut <a>.(Cut <d>.(N{c:=(y).P})  (x).(Cut <c>.Ax x c (y).P)) (u).(Q{c:=(y).P})"
 | 
| 41893 | 1213 | using LImp asm by simp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1214 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(Cut <d>.(N{c:=(y).P})  (x).(P[y\<turnstile>n>x])) (u).(Q{c:=(y).P})"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1215 | proof (cases "fin P y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1216 | case True | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1217 | assume "fin P y" | 
| 41893 | 1218 | then show ?thesis using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1219 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1220 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1221 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1222 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1223 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1224 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1225 | apply(rule better_LAxL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1226 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1227 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1228 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1229 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1230 | case False | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1231 | assume "\<not>fin P y" | 
| 41893 | 1232 | then show ?thesis using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1233 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1234 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1235 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1236 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1237 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1238 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1239 | apply(rule better_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1240 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1241 | apply(simp add: subst_with_ax1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1242 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1243 | qed | 
| 41893 | 1244 |       also have "\<dots> = (Cut <a>.(Cut <d>.N (x).M) (u).Q){c:=(y).P}" using LImp asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1245 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1246 | apply(auto simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1247 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1248 | apply(simp add: alpha fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1249 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1250 | apply(simp add: alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1251 | apply(simp add: nrename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1252 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1253 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1254 |       have "(Cut <b>.ImpR (x).<a>.M b (z).ImpL <d>.N (u).Q z){c:=(y).P} \<longrightarrow>\<^isub>a* 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1255 |                (Cut <a>.(Cut <d>.N (x).M) (u).Q){c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1256 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1257 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1258 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1259 |     { assume asm: "M\<noteq>Ax x c \<and> Q=Ax u c"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1260 |       have "(Cut <b>.ImpR (x).<a>.M b (z).ImpL <d>.N (u).Q z){c:=(y).P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1261 |         Cut <b>.ImpR (x).<a>.(M{c:=(y).P}) b (z).ImpL <d>.(N{c:=(y).P}) (u).(Q{c:=(y).P}) z" 
 | 
| 41893 | 1262 | using LImp by (simp add: subst_fresh abs_fresh fresh_atm fresh_prod) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1263 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(Cut <d>.(N{c:=(y).P})  (x).(M{c:=(y).P})) (u).(Q{c:=(y).P})"
 | 
| 41893 | 1264 | using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1265 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1266 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1267 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1268 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1269 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1270 |       also have "\<dots> = Cut <a>.(Cut <d>.(N{c:=(y).P})  (x).(M{c:=(y).P})) (u).(Cut <c>.Ax u c (y).P)"
 | 
| 41893 | 1271 | using LImp asm by simp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1272 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(Cut <d>.(N{c:=(y).P})  (x).(M{c:=(y).P})) (u).(P[y\<turnstile>n>u])"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1273 | proof (cases "fin P y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1274 | case True | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1275 | assume "fin P y" | 
| 41893 | 1276 | then show ?thesis using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1277 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1278 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1279 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1280 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1281 | apply(rule better_LAxL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1282 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1283 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1284 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1285 | case False | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1286 | assume "\<not>fin P y" | 
| 41893 | 1287 | then show ?thesis using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1288 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1289 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1290 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1291 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1292 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1293 | apply(rule better_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1294 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1295 | apply(simp add: subst_with_ax1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1296 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1297 | qed | 
| 41893 | 1298 |       also have "\<dots> = (Cut <a>.(Cut <d>.N (x).M) (u).Q){c:=(y).P}" using LImp asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1299 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1300 | apply(auto simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1301 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1302 | apply(simp add: alpha fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1303 | apply(simp add: nrename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1304 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1305 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1306 |       have "(Cut <b>.ImpR (x).<a>.M b (z).ImpL <d>.N (u).Q z){c:=(y).P} \<longrightarrow>\<^isub>a* 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1307 |                (Cut <a>.(Cut <d>.N (x).M) (u).Q){c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1308 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1309 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1310 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1311 |     { assume asm: "M=Ax x c \<and> Q=Ax u c"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1312 |       have "(Cut <b>.ImpR (x).<a>.M b (z).ImpL <d>.N (u).Q z){c:=(y).P} = 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1313 |         Cut <b>.ImpR (x).<a>.(M{c:=(y).P}) b (z).ImpL <d>.(N{c:=(y).P}) (u).(Q{c:=(y).P}) z" 
 | 
| 41893 | 1314 | using LImp by (simp add: subst_fresh abs_fresh fresh_atm fresh_prod) | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1315 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(Cut <d>.(N{c:=(y).P})  (x).(M{c:=(y).P})) (u).(Q{c:=(y).P})"
 | 
| 41893 | 1316 | using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1317 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1318 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1319 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1320 | apply(auto intro: l_redu.intros simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1321 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1322 |       also have "\<dots> = Cut <a>.(Cut <d>.(N{c:=(y).P})  (x).(Cut <c>.Ax x c (y).P)) (u).(Cut <c>.Ax u c (y).P)"
 | 
| 41893 | 1323 | using LImp asm by simp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1324 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(Cut <d>.(N{c:=(y).P})  (x).(Cut <c>.Ax x c (y).P)) (u).(P[y\<turnstile>n>u])"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1325 | proof (cases "fin P y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1326 | case True | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1327 | assume "fin P y" | 
| 41893 | 1328 | then show ?thesis using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1329 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1330 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1331 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1332 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1333 | apply(rule better_LAxL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1334 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1335 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1336 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1337 | case False | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1338 | assume "\<not>fin P y" | 
| 41893 | 1339 | then show ?thesis using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1340 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1341 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1342 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1343 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1344 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1345 | apply(rule better_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1346 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1347 | apply(simp add: subst_with_ax1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1348 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1349 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1350 |       also have "\<dots> \<longrightarrow>\<^isub>a* Cut <a>.(Cut <d>.(N{c:=(y).P})  (x).(P[y\<turnstile>n>x])) (u).(P[y\<turnstile>n>u])"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1351 | proof (cases "fin P y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1352 | case True | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1353 | assume "fin P y" | 
| 41893 | 1354 | then show ?thesis using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1355 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1356 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1357 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1358 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1359 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1360 | apply(rule better_LAxL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1361 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1362 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1363 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1364 | case False | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1365 | assume "\<not>fin P y" | 
| 41893 | 1366 | then show ?thesis using LImp | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1367 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1368 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1369 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1370 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1371 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1372 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1373 | apply(rule better_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1374 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1375 | apply(simp add: subst_with_ax1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1376 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1377 | qed | 
| 41893 | 1378 |       also have "\<dots> = (Cut <a>.(Cut <d>.N (x).M) (u).Q){c:=(y).P}" using LImp asm
 | 
| 36277 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1379 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1380 | apply(auto simp add: subst_fresh abs_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1381 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1382 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1383 | apply(simp add: alpha fresh_atm trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1384 | apply(simp add: nrename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1385 | apply(simp add: alpha fresh_atm trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1386 | apply(simp add: nrename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1387 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1388 | finally | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1389 |       have "(Cut <b>.ImpR (x).<a>.M b (z).ImpL <d>.N (u).Q z){c:=(y).P} \<longrightarrow>\<^isub>a* 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1390 |                (Cut <a>.(Cut <d>.N (x).M) (u).Q){c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1391 | by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1392 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1393 | ultimately show ?thesis by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1394 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1395 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1396 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1397 | lemma a_redu_subst1: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1398 | assumes a: "M \<longrightarrow>\<^isub>a M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1399 |   shows "M{y:=<c>.P} \<longrightarrow>\<^isub>a* M'{y:=<c>.P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1400 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1401 | proof(nominal_induct avoiding: y c P rule: a_redu.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1402 | case al_redu | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1403 | then show ?case by (simp only: l_redu_subst1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1404 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1405 | case ac_redu | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1406 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1407 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1408 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1409 | apply(rule a_redu.ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1410 | apply(simp only: c_redu_subst1') | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1411 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1412 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1413 | case (a_Cut_l a N x M M' y c P) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1414 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1415 | apply(simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1416 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1417 | apply(rule impI)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1418 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1419 | apply(drule ax_do_not_a_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1420 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1421 | apply(rule impI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1422 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1423 | apply(rule impI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1424 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1425 | apply(drule_tac x="y" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1426 | apply(drule_tac x="c" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1427 | apply(drule_tac x="P" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1428 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1429 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1430 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1431 | apply(assumption) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1432 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1433 | apply(rule_tac M'="P[c\<turnstile>c>a]" in a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1434 | apply(case_tac "fic P c") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1435 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1436 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1437 | apply(rule better_LAxR_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1438 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1439 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1440 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1441 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1442 | apply(rule better_left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1443 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1444 | apply(rule subst_with_ax2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1445 | apply(rule aux4) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1446 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1447 | apply(simp add: alpha fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1448 | apply(simp add: crename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1449 | apply(rule impI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1450 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1451 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1452 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1453 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1454 | case (a_Cut_r a N x M M' y c P) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1455 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1456 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1457 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1458 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1459 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1460 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1461 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1462 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1463 | case a_NotL | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1464 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1465 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1466 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1467 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1468 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1469 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1470 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1471 | apply(rule a_star_NotL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1472 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1473 | apply(rule a_star_NotL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1474 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1475 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1476 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1477 | case a_NotR | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1478 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1479 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1480 | apply(rule a_star_NotR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1481 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1482 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1483 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1484 | case a_AndR_l | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1485 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1486 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1487 | apply(rule a_star_AndR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1488 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1489 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1490 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1491 | case a_AndR_r | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1492 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1493 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1494 | apply(rule a_star_AndR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1495 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1496 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1497 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1498 | case a_AndL1 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1499 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1500 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1501 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1502 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1503 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1504 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1505 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1506 | apply(rule a_star_AndL1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1507 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1508 | apply(rule a_star_AndL1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1509 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1510 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1511 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1512 | case a_AndL2 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1513 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1514 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1515 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1516 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1517 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1518 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1519 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1520 | apply(rule a_star_AndL2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1521 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1522 | apply(rule a_star_AndL2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1523 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1524 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1525 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1526 | case a_OrR1 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1527 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1528 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1529 | apply(rule a_star_OrR1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1530 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1531 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1532 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1533 | case a_OrR2 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1534 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1535 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1536 | apply(rule a_star_OrR2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1537 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1538 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1539 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1540 | case a_OrL_l | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1541 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1542 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1543 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1544 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1545 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1546 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1547 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1548 | apply(rule a_star_OrL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1549 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1550 | apply(rule a_star_OrL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1551 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1552 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1553 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1554 | case a_OrL_r | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1555 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1556 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1557 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1558 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1559 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1560 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1561 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1562 | apply(rule a_star_OrL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1563 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1564 | apply(rule a_star_OrL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1565 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1566 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1567 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1568 | case a_ImpR | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1569 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1570 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1571 | apply(rule a_star_ImpR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1572 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1573 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1574 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1575 | case a_ImpL_r | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1576 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1577 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1578 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1579 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1580 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1581 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1582 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1583 | apply(rule a_star_ImpL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1584 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1585 | apply(rule a_star_ImpL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1586 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1587 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1588 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1589 | case a_ImpL_l | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1590 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1591 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1592 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1593 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1594 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1595 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1596 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1597 | apply(rule a_star_ImpL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1598 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1599 | apply(rule a_star_ImpL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1600 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1601 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1602 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1603 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1604 | lemma a_redu_subst2: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1605 | assumes a: "M \<longrightarrow>\<^isub>a M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1606 |   shows "M{c:=(y).P} \<longrightarrow>\<^isub>a* M'{c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1607 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1608 | proof(nominal_induct avoiding: y c P rule: a_redu.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1609 | case al_redu | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1610 | then show ?case by (simp only: l_redu_subst2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1611 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1612 | case ac_redu | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1613 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1614 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1615 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1616 | apply(rule a_redu.ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1617 | apply(simp only: c_redu_subst2') | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1618 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1619 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1620 | case (a_Cut_r a N x M M' y c P) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1621 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1622 | apply(simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1623 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1624 | apply(rule impI)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1625 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1626 | apply(drule ax_do_not_a_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1627 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1628 | apply(rule impI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1629 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1630 | apply(rule impI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1631 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1632 | apply(drule_tac x="c" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1633 | apply(drule_tac x="y" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1634 | apply(drule_tac x="P" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1635 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1636 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1637 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1638 | apply(assumption) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1639 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1640 | apply(rule_tac N'="P[y\<turnstile>n>x]" in a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1641 | apply(case_tac "fin P y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1642 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1643 | apply(rule al_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1644 | apply(rule better_LAxL_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1645 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1646 | apply(rule a_star_trans) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1647 | apply(rule a_starI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1648 | apply(rule ac_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1649 | apply(rule better_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1650 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1651 | apply(rule subst_with_ax1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1652 | apply(rule aux4) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1653 | apply(simp add: trm.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1654 | apply(simp add: alpha fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1655 | apply(simp add: nrename_swap) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1656 | apply(rule impI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1657 | apply(rule a_star_CutR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1658 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1659 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1660 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1661 | case (a_Cut_l a N x M M' y c P) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1662 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1663 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1664 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1665 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1666 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1667 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1668 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1669 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1670 | case a_NotR | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1671 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1672 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1673 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1674 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1675 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1676 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1677 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1678 | apply(rule a_star_NotR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1679 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1680 | apply(rule a_star_NotR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1681 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1682 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1683 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1684 | case a_NotL | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1685 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1686 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1687 | apply(rule a_star_NotL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1688 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1689 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1690 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1691 | case a_AndR_l | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1692 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1693 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1694 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1695 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1696 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1697 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1698 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1699 | apply(rule a_star_AndR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1700 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1701 | apply(rule a_star_AndR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1702 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1703 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1704 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1705 | case a_AndR_r | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1706 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1707 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1708 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1709 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1710 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1711 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1712 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1713 | apply(rule a_star_AndR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1714 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1715 | apply(rule a_star_AndR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1716 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1717 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1718 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1719 | case a_AndL1 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1720 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1721 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1722 | apply(rule a_star_AndL1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1723 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1724 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1725 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1726 | case a_AndL2 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1727 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1728 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1729 | apply(rule a_star_AndL2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1730 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1731 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1732 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1733 | case a_OrR1 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1734 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1735 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1736 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1737 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1738 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1739 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1740 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1741 | apply(rule a_star_OrR1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1742 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1743 | apply(rule a_star_OrR1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1744 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1745 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1746 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1747 | case a_OrR2 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1748 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1749 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1750 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1751 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1752 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1753 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1754 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1755 | apply(rule a_star_OrR2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1756 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1757 | apply(rule a_star_OrR2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1758 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1759 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1760 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1761 | case a_OrL_l | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1762 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1763 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1764 | apply(rule a_star_OrL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1765 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1766 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1767 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1768 | case a_OrL_r | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1769 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1770 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1771 | apply(rule a_star_OrL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1772 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1773 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1774 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1775 | case a_ImpR | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1776 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1777 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1778 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1779 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1780 | apply(fresh_fun_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1781 | apply(simp add: subst_fresh) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1782 | apply(rule a_star_CutL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1783 | apply(rule a_star_ImpR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1784 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1785 | apply(rule a_star_ImpR) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1786 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1787 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1788 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1789 | case a_ImpL_l | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1790 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1791 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1792 | apply(rule a_star_ImpL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1793 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1794 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1795 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1796 | case a_ImpL_r | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1797 | then show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1798 | apply(auto simp add: subst_fresh fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1799 | apply(rule a_star_ImpL) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1800 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1801 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1802 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1803 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1804 | lemma a_star_subst1: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1805 | assumes a: "M \<longrightarrow>\<^isub>a* M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1806 |   shows "M{y:=<c>.P} \<longrightarrow>\<^isub>a* M'{y:=<c>.P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1807 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1808 | apply(induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1809 | apply(blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1810 | apply(drule_tac y="y" and c="c" and P="P" in a_redu_subst1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1811 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1812 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1813 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1814 | lemma a_star_subst2: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1815 | assumes a: "M \<longrightarrow>\<^isub>a* M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1816 |   shows "M{c:=(y).P} \<longrightarrow>\<^isub>a* M'{c:=(y).P}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1817 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1818 | apply(induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1819 | apply(blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1820 | apply(drule_tac y="y" and c="c" and P="P" in a_redu_subst2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1821 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1822 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1823 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1824 | text {* Candidates and SN *}
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1825 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1826 | text {* SNa *}
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1827 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1828 | inductive | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1829 | SNa :: "trm \<Rightarrow> bool" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1830 | where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1831 | SNaI: "(\<And>M'. M \<longrightarrow>\<^isub>a M' \<Longrightarrow> SNa M') \<Longrightarrow> SNa M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1832 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1833 | lemma SNa_induct[consumes 1]: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1834 | assumes major: "SNa M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1835 | assumes hyp: "\<And>M'. SNa M' \<Longrightarrow> (\<forall>M''. M'\<longrightarrow>\<^isub>a M'' \<longrightarrow> P M'' \<Longrightarrow> P M')" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1836 | shows "P M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1837 | apply (rule major[THEN SNa.induct]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1838 | apply (rule hyp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1839 | apply (rule SNaI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1840 | apply (blast)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1841 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1842 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1843 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1844 | lemma double_SNa_aux: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1845 | assumes a_SNa: "SNa a" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1846 | and b_SNa: "SNa b" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1847 | and hyp: "\<And>x z. | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1848 | (\<And>y. x\<longrightarrow>\<^isub>a y \<Longrightarrow> SNa y) \<Longrightarrow> | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1849 | (\<And>y. x\<longrightarrow>\<^isub>a y \<Longrightarrow> P y z) \<Longrightarrow> | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1850 | (\<And>u. z\<longrightarrow>\<^isub>a u \<Longrightarrow> SNa u) \<Longrightarrow> | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1851 | (\<And>u. z\<longrightarrow>\<^isub>a u \<Longrightarrow> P x u) \<Longrightarrow> P x z" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1852 | shows "P a b" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1853 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1854 | from a_SNa | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1855 | have r: "\<And>b. SNa b \<Longrightarrow> P a b" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1856 | proof (induct a rule: SNa.induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1857 | case (SNaI x) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1858 | note SNa' = this | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1859 | have "SNa b" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1860 | thus ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1861 | proof (induct b rule: SNa.induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1862 | case (SNaI y) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1863 | show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1864 | apply (rule hyp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1865 | apply (erule SNa') | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1866 | apply (erule SNa') | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1867 | apply (rule SNa.SNaI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1868 | apply (erule SNaI)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1869 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1870 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1871 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1872 | from b_SNa show ?thesis by (rule r) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1873 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1874 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1875 | lemma double_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1876 | "\<lbrakk>SNa a; SNa b; \<forall>x z. ((\<forall>y. x\<longrightarrow>\<^isub>ay \<longrightarrow> P y z) \<and> (\<forall>u. z\<longrightarrow>\<^isub>a u \<longrightarrow> P x u)) \<longrightarrow> P x z\<rbrakk> \<Longrightarrow> P a b" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1877 | apply(rule_tac double_SNa_aux) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1878 | apply(assumption)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1879 | apply(blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1880 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1881 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1882 | lemma a_preserves_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1883 | assumes a: "SNa M" "M\<longrightarrow>\<^isub>a M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1884 | shows "SNa M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1885 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1886 | by (erule_tac SNa.cases) (simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1887 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1888 | lemma a_star_preserves_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1889 | assumes a: "SNa M" and b: "M\<longrightarrow>\<^isub>a* M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1890 | shows "SNa M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1891 | using b a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1892 | by (induct) (auto simp add: a_preserves_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1893 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1894 | lemma Ax_in_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1895 | shows "SNa (Ax x a)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1896 | apply(rule SNaI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1897 | apply(erule a_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1898 | apply(erule l_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1899 | apply(erule c_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1900 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1901 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1902 | lemma NotL_in_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1903 | assumes a: "SNa M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1904 | shows "SNa (NotL <a>.M x)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1905 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1906 | apply(induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1907 | apply(rule SNaI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1908 | apply(erule a_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1909 | apply(erule l_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1910 | apply(erule c_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1911 | apply(auto simp add: trm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1912 | apply(rotate_tac 1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1913 | apply(drule_tac x="[(a,aa)]\<bullet>M'a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1914 | apply(simp add: a_redu.eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1915 | apply(subgoal_tac "NotL <a>.([(a,aa)]\<bullet>M'a) x = NotL <aa>.M'a x") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1916 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1917 | apply(simp add: trm.inject alpha fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1918 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1919 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1920 | lemma NotR_in_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1921 | assumes a: "SNa M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1922 | shows "SNa (NotR (x).M a)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1923 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1924 | apply(induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1925 | apply(rule SNaI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1926 | apply(erule a_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1927 | apply(erule l_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1928 | apply(erule c_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1929 | apply(auto simp add: trm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1930 | apply(rotate_tac 1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1931 | apply(drule_tac x="[(x,xa)]\<bullet>M'a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1932 | apply(simp add: a_redu.eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1933 | apply(rule_tac s="NotR (x).([(x,xa)]\<bullet>M'a) a" in subst) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1934 | apply(simp add: trm.inject alpha fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1935 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1936 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1937 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1938 | lemma AndL1_in_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1939 | assumes a: "SNa M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1940 | shows "SNa (AndL1 (x).M y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1941 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1942 | apply(induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1943 | apply(rule SNaI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1944 | apply(erule a_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1945 | apply(erule l_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1946 | apply(erule c_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1947 | apply(auto simp add: trm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1948 | apply(rotate_tac 1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1949 | apply(drule_tac x="[(x,xa)]\<bullet>M'a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1950 | apply(simp add: a_redu.eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1951 | apply(rule_tac s="AndL1 x.([(x,xa)]\<bullet>M'a) y" in subst) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1952 | apply(simp add: trm.inject alpha fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1953 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1954 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1955 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1956 | lemma AndL2_in_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1957 | assumes a: "SNa M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1958 | shows "SNa (AndL2 (x).M y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1959 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1960 | apply(induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1961 | apply(rule SNaI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1962 | apply(erule a_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1963 | apply(erule l_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1964 | apply(erule c_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1965 | apply(auto simp add: trm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1966 | apply(rotate_tac 1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1967 | apply(drule_tac x="[(x,xa)]\<bullet>M'a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1968 | apply(simp add: a_redu.eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1969 | apply(rule_tac s="AndL2 x.([(x,xa)]\<bullet>M'a) y" in subst) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1970 | apply(simp add: trm.inject alpha fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1971 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1972 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1973 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1974 | lemma OrR1_in_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1975 | assumes a: "SNa M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1976 | shows "SNa (OrR1 <a>.M b)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1977 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1978 | apply(induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1979 | apply(rule SNaI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1980 | apply(erule a_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1981 | apply(erule l_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1982 | apply(erule c_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1983 | apply(auto simp add: trm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1984 | apply(rotate_tac 1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1985 | apply(drule_tac x="[(a,aa)]\<bullet>M'a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1986 | apply(simp add: a_redu.eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1987 | apply(rule_tac s="OrR1 <a>.([(a,aa)]\<bullet>M'a) b" in subst) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1988 | apply(simp add: trm.inject alpha fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1989 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1990 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1991 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1992 | lemma OrR2_in_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1993 | assumes a: "SNa M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1994 | shows "SNa (OrR2 <a>.M b)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1995 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1996 | apply(induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1997 | apply(rule SNaI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1998 | apply(erule a_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 1999 | apply(erule l_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2000 | apply(erule c_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2001 | apply(auto simp add: trm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2002 | apply(rotate_tac 1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2003 | apply(drule_tac x="[(a,aa)]\<bullet>M'a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2004 | apply(simp add: a_redu.eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2005 | apply(rule_tac s="OrR2 <a>.([(a,aa)]\<bullet>M'a) b" in subst) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2006 | apply(simp add: trm.inject alpha fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2007 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2008 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2009 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2010 | lemma ImpR_in_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2011 | assumes a: "SNa M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2012 | shows "SNa (ImpR (x).<a>.M b)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2013 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2014 | apply(induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2015 | apply(rule SNaI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2016 | apply(erule a_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2017 | apply(erule l_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2018 | apply(erule c_redu.cases, auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2019 | apply(auto simp add: trm.inject alpha abs_fresh abs_perm calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2020 | apply(rotate_tac 1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2021 | apply(drule_tac x="[(a,aa)]\<bullet>M'a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2022 | apply(simp add: a_redu.eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2023 | apply(rule_tac s="ImpR (x).<a>.([(a,aa)]\<bullet>M'a) b" in subst) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2024 | apply(simp add: trm.inject alpha fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2025 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2026 | apply(rotate_tac 1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2027 | apply(drule_tac x="[(x,xa)]\<bullet>M'a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2028 | apply(simp add: a_redu.eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2029 | apply(rule_tac s="ImpR (x).<a>.([(x,xa)]\<bullet>M'a) b" in subst) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2030 | apply(simp add: trm.inject alpha fresh_a_redu abs_fresh abs_perm calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2031 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2032 | apply(rotate_tac 1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2033 | apply(drule_tac x="[(a,aa)]\<bullet>[(x,xa)]\<bullet>M'a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2034 | apply(simp add: a_redu.eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2035 | apply(rule_tac s="ImpR (x).<a>.([(a,aa)]\<bullet>[(x,xa)]\<bullet>M'a) b" in subst) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2036 | apply(simp add: trm.inject alpha fresh_a_redu abs_fresh abs_perm calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2037 | apply(simp add: fresh_left calc_atm fresh_a_redu) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2038 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2039 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2040 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2041 | lemma AndR_in_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2042 | assumes a: "SNa M" "SNa N" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2043 | shows "SNa (AndR <a>.M <b>.N c)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2044 | apply(rule_tac a="M" and b="N" in double_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2045 | apply(rule a)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2046 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2047 | apply(rule SNaI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2048 | apply(drule a_redu_AndR_elim) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2049 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2050 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2051 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2052 | lemma OrL_in_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2053 | assumes a: "SNa M" "SNa N" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2054 | shows "SNa (OrL (x).M (y).N z)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2055 | apply(rule_tac a="M" and b="N" in double_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2056 | apply(rule a)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2057 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2058 | apply(rule SNaI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2059 | apply(drule a_redu_OrL_elim) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2060 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2061 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2062 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2063 | lemma ImpL_in_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2064 | assumes a: "SNa M" "SNa N" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2065 | shows "SNa (ImpL <a>.M (y).N z)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2066 | apply(rule_tac a="M" and b="N" in double_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2067 | apply(rule a)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2068 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2069 | apply(rule SNaI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2070 | apply(drule a_redu_ImpL_elim) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2071 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2072 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2073 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2074 | lemma SNa_eqvt: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2075 | fixes pi1::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2076 | and pi2::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2077 | shows "SNa M \<Longrightarrow> SNa (pi1\<bullet>M)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2078 | and "SNa M \<Longrightarrow> SNa (pi2\<bullet>M)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2079 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2080 | apply(induct rule: SNa.induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2081 | apply(rule SNaI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2082 | apply(drule_tac pi="(rev pi1)" in a_redu.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2083 | apply(rotate_tac 1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2084 | apply(drule_tac x="(rev pi1)\<bullet>M'" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2085 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2086 | apply(induct rule: SNa.induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2087 | apply(rule SNaI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2088 | apply(drule_tac pi="(rev pi2)" in a_redu.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2089 | apply(rotate_tac 1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2090 | apply(drule_tac x="(rev pi2)\<bullet>M'" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2091 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2092 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2093 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2094 | text {* set operators *}
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2095 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2096 | definition AXIOMSn :: "ty \<Rightarrow> ntrm set" where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2097 |   "AXIOMSn B \<equiv> { (x):(Ax y b) | x y b. True }"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2098 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2099 | definition AXIOMSc::"ty \<Rightarrow> ctrm set" where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2100 |   "AXIOMSc B \<equiv> { <a>:(Ax y b) | a y b. True }"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2101 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2102 | definition BINDINGn::"ty \<Rightarrow> ctrm set \<Rightarrow> ntrm set" where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2103 |   "BINDINGn B X \<equiv> { (x):M | x M. \<forall>a P. <a>:P\<in>X \<longrightarrow> SNa (M{x:=<a>.P})}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2104 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2105 | definition BINDINGc::"ty \<Rightarrow> ntrm set \<Rightarrow> ctrm set" where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2106 |   "BINDINGc B X \<equiv> { <a>:M | a M. \<forall>x P. (x):P\<in>X \<longrightarrow> SNa (M{a:=(x).P})}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2107 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2108 | lemma BINDINGn_decreasing: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2109 | shows "X\<subseteq>Y \<Longrightarrow> BINDINGn B Y \<subseteq> BINDINGn B X" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2110 | by (simp add: BINDINGn_def) (blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2111 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2112 | lemma BINDINGc_decreasing: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2113 | shows "X\<subseteq>Y \<Longrightarrow> BINDINGc B Y \<subseteq> BINDINGc B X" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2114 | by (simp add: BINDINGc_def) (blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2115 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2116 | nominal_primrec | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2117 | NOTRIGHT :: "ty \<Rightarrow> ntrm set \<Rightarrow> ctrm set" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2118 | where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2119 |  "NOTRIGHT (NOT B) X = { <a>:NotR (x).M a | a x M. fic (NotR (x).M a) a \<and> (x):M \<in> X }"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2120 | apply(rule TrueI)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2121 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2122 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2123 | lemma NOTRIGHT_eqvt_name: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2124 | fixes pi::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2125 | shows "(pi\<bullet>(NOTRIGHT (NOT B) X)) = NOTRIGHT (NOT B) (pi\<bullet>X)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2126 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2127 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2128 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2129 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2130 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2131 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2132 | apply(drule_tac pi="pi" in fic.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2133 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2134 | apply(rule_tac x="(xb):M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2135 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2136 | apply(rule_tac x="(rev pi)\<bullet>(<a>:NotR (xa).M a)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2137 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2138 | apply(rule_tac x="(rev pi)\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2139 | apply(rule_tac x="(rev pi)\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2140 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2141 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2142 | apply(drule_tac pi="rev pi" in fic.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2143 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2144 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2145 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2146 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2147 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2148 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2149 | lemma NOTRIGHT_eqvt_coname: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2150 | fixes pi::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2151 | shows "(pi\<bullet>(NOTRIGHT (NOT B) X)) = NOTRIGHT (NOT B) (pi\<bullet>X)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2152 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2153 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2154 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2155 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2156 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2157 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2158 | apply(drule_tac pi="pi" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2159 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2160 | apply(rule_tac x="(xb):M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2161 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2162 | apply(rule_tac x="<((rev pi)\<bullet>a)>:NotR ((rev pi)\<bullet>xa).((rev pi)\<bullet>M) ((rev pi)\<bullet>a)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2163 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2164 | apply(rule_tac x="(rev pi)\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2165 | apply(rule_tac x="(rev pi)\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2166 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2167 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2168 | apply(drule_tac pi="rev pi" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2169 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2170 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2171 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2172 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2173 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2174 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2175 | nominal_primrec | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2176 | NOTLEFT :: "ty \<Rightarrow> ctrm set \<Rightarrow> ntrm set" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2177 | where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2178 |  "NOTLEFT (NOT B) X = { (x):NotL <a>.M x | a x M. fin (NotL <a>.M x) x \<and> <a>:M \<in> X }"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2179 | apply(rule TrueI)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2180 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2181 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2182 | lemma NOTLEFT_eqvt_name: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2183 | fixes pi::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2184 | shows "(pi\<bullet>(NOTLEFT (NOT B) X)) = NOTLEFT (NOT B) (pi\<bullet>X)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2185 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2186 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2187 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2188 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2189 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2190 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2191 | apply(drule_tac pi="pi" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2192 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2193 | apply(rule_tac x="<a>:M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2194 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2195 | apply(rule_tac x="(((rev pi)\<bullet>xa)):NotL <((rev pi)\<bullet>a)>.((rev pi)\<bullet>M) ((rev pi)\<bullet>xa)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2196 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2197 | apply(rule_tac x="(rev pi)\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2198 | apply(rule_tac x="(rev pi)\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2199 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2200 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2201 | apply(drule_tac pi="rev pi" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2202 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2203 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2204 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2205 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2206 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2207 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2208 | lemma NOTLEFT_eqvt_coname: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2209 | fixes pi::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2210 | shows "(pi\<bullet>(NOTLEFT (NOT B) X)) = NOTLEFT (NOT B) (pi\<bullet>X)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2211 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2212 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2213 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2214 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2215 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2216 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2217 | apply(drule_tac pi="pi" in fin.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2218 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2219 | apply(rule_tac x="<a>:M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2220 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2221 | apply(rule_tac x="(((rev pi)\<bullet>xa)):NotL <((rev pi)\<bullet>a)>.((rev pi)\<bullet>M) ((rev pi)\<bullet>xa)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2222 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2223 | apply(rule_tac x="(rev pi)\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2224 | apply(rule_tac x="(rev pi)\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2225 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2226 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2227 | apply(drule_tac pi="rev pi" in fin.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2228 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2229 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2230 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2231 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2232 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2233 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2234 | nominal_primrec | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2235 | ANDRIGHT :: "ty \<Rightarrow> ctrm set \<Rightarrow> ctrm set \<Rightarrow> ctrm set" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2236 | where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2237 | "ANDRIGHT (B AND C) X Y = | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2238 |             { <c>:AndR <a>.M <b>.N c | c a b M N. fic (AndR <a>.M <b>.N c) c \<and> <a>:M \<in> X \<and> <b>:N \<in> Y }"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2239 | apply(rule TrueI)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2240 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2241 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2242 | lemma ANDRIGHT_eqvt_name: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2243 | fixes pi::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2244 | shows "(pi\<bullet>(ANDRIGHT (A AND B) X Y)) = ANDRIGHT (A AND B) (pi\<bullet>X) (pi\<bullet>Y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2245 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2246 | apply(rule_tac x="pi\<bullet>c" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2247 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2248 | apply(rule_tac x="pi\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2249 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2250 | apply(rule_tac x="pi\<bullet>N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2251 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2252 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2253 | apply(drule_tac pi="pi" in fic.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2254 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2255 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2256 | apply(rule_tac x="<a>:M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2257 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2258 | apply(rule_tac x="<b>:N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2259 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2260 | apply(rule_tac x="(rev pi)\<bullet>(<c>:AndR <a>.M <b>.N c)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2261 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2262 | apply(rule_tac x="(rev pi)\<bullet>c" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2263 | apply(rule_tac x="(rev pi)\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2264 | apply(rule_tac x="(rev pi)\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2265 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2266 | apply(rule_tac x="(rev pi)\<bullet>N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2267 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2268 | apply(drule_tac pi="rev pi" in fic.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2269 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2270 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2271 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2272 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2273 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2274 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2275 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2276 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2277 | lemma ANDRIGHT_eqvt_coname: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2278 | fixes pi::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2279 | shows "(pi\<bullet>(ANDRIGHT (A AND B) X Y)) = ANDRIGHT (A AND B) (pi\<bullet>X) (pi\<bullet>Y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2280 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2281 | apply(rule_tac x="pi\<bullet>c" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2282 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2283 | apply(rule_tac x="pi\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2284 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2285 | apply(rule_tac x="pi\<bullet>N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2286 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2287 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2288 | apply(drule_tac pi="pi" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2289 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2290 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2291 | apply(rule_tac x="<a>:M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2292 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2293 | apply(rule_tac x="<b>:N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2294 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2295 | apply(rule_tac x="(rev pi)\<bullet>(<c>:AndR <a>.M <b>.N c)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2296 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2297 | apply(rule_tac x="(rev pi)\<bullet>c" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2298 | apply(rule_tac x="(rev pi)\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2299 | apply(rule_tac x="(rev pi)\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2300 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2301 | apply(rule_tac x="(rev pi)\<bullet>N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2302 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2303 | apply(drule_tac pi="rev pi" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2304 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2305 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2306 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2307 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2308 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2309 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2310 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2311 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2312 | nominal_primrec | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2313 | ANDLEFT1 :: "ty \<Rightarrow> ntrm set \<Rightarrow> ntrm set" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2314 | where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2315 |  "ANDLEFT1 (B AND C) X = { (y):AndL1 (x).M y | x y M. fin (AndL1 (x).M y) y \<and> (x):M \<in> X }"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2316 | apply(rule TrueI)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2317 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2318 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2319 | lemma ANDLEFT1_eqvt_name: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2320 | fixes pi::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2321 | shows "(pi\<bullet>(ANDLEFT1 (A AND B) X)) = ANDLEFT1 (A AND B) (pi\<bullet>X)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2322 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2323 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2324 | apply(rule_tac x="pi\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2325 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2326 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2327 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2328 | apply(drule_tac pi="pi" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2329 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2330 | apply(rule_tac x="(xb):M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2331 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2332 | apply(rule_tac x="(rev pi)\<bullet>((y):AndL1 (xa).M y)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2333 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2334 | apply(rule_tac x="(rev pi)\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2335 | apply(rule_tac x="(rev pi)\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2336 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2337 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2338 | apply(drule_tac pi="rev pi" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2339 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2340 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2341 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2342 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2343 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2344 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2345 | lemma ANDLEFT1_eqvt_coname: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2346 | fixes pi::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2347 | shows "(pi\<bullet>(ANDLEFT1 (A AND B) X)) = ANDLEFT1 (A AND B) (pi\<bullet>X)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2348 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2349 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2350 | apply(rule_tac x="pi\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2351 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2352 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2353 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2354 | apply(drule_tac pi="pi" in fin.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2355 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2356 | apply(rule_tac x="(xb):M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2357 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2358 | apply(rule_tac x="(rev pi)\<bullet>((y):AndL1 (xa).M y)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2359 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2360 | apply(rule_tac x="(rev pi)\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2361 | apply(rule_tac x="(rev pi)\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2362 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2363 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2364 | apply(drule_tac pi="rev pi" in fin.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2365 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2366 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2367 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2368 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2369 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2370 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2371 | nominal_primrec | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2372 | ANDLEFT2 :: "ty \<Rightarrow> ntrm set \<Rightarrow> ntrm set" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2373 | where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2374 |  "ANDLEFT2 (B AND C) X = { (y):AndL2 (x).M y | x y M. fin (AndL2 (x).M y) y \<and> (x):M \<in> X }"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2375 | apply(rule TrueI)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2376 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2377 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2378 | lemma ANDLEFT2_eqvt_name: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2379 | fixes pi::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2380 | shows "(pi\<bullet>(ANDLEFT2 (A AND B) X)) = ANDLEFT2 (A AND B) (pi\<bullet>X)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2381 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2382 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2383 | apply(rule_tac x="pi\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2384 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2385 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2386 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2387 | apply(drule_tac pi="pi" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2388 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2389 | apply(rule_tac x="(xb):M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2390 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2391 | apply(rule_tac x="(rev pi)\<bullet>((y):AndL2 (xa).M y)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2392 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2393 | apply(rule_tac x="(rev pi)\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2394 | apply(rule_tac x="(rev pi)\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2395 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2396 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2397 | apply(drule_tac pi="rev pi" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2398 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2399 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2400 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2401 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2402 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2403 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2404 | lemma ANDLEFT2_eqvt_coname: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2405 | fixes pi::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2406 | shows "(pi\<bullet>(ANDLEFT2 (A AND B) X)) = ANDLEFT2 (A AND B) (pi\<bullet>X)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2407 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2408 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2409 | apply(rule_tac x="pi\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2410 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2411 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2412 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2413 | apply(drule_tac pi="pi" in fin.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2414 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2415 | apply(rule_tac x="(xb):M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2416 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2417 | apply(rule_tac x="(rev pi)\<bullet>((y):AndL2 (xa).M y)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2418 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2419 | apply(rule_tac x="(rev pi)\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2420 | apply(rule_tac x="(rev pi)\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2421 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2422 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2423 | apply(drule_tac pi="rev pi" in fin.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2424 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2425 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2426 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2427 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2428 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2429 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2430 | nominal_primrec | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2431 | ORLEFT :: "ty \<Rightarrow> ntrm set \<Rightarrow> ntrm set \<Rightarrow> ntrm set" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2432 | where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2433 | "ORLEFT (B OR C) X Y = | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2434 |             { (z):OrL (x).M (y).N z | x y z M N. fin (OrL (x).M (y).N z) z \<and> (x):M \<in> X \<and> (y):N \<in> Y }"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2435 | apply(rule TrueI)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2436 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2437 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2438 | lemma ORLEFT_eqvt_name: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2439 | fixes pi::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2440 | shows "(pi\<bullet>(ORLEFT (A OR B) X Y)) = ORLEFT (A OR B) (pi\<bullet>X) (pi\<bullet>Y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2441 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2442 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2443 | apply(rule_tac x="pi\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2444 | apply(rule_tac x="pi\<bullet>z" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2445 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2446 | apply(rule_tac x="pi\<bullet>N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2447 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2448 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2449 | apply(drule_tac pi="pi" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2450 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2451 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2452 | apply(rule_tac x="(xb):M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2453 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2454 | apply(rule_tac x="(y):N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2455 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2456 | apply(rule_tac x="(rev pi)\<bullet>((z):OrL (xa).M (y).N z)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2457 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2458 | apply(rule_tac x="(rev pi)\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2459 | apply(rule_tac x="(rev pi)\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2460 | apply(rule_tac x="(rev pi)\<bullet>z" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2461 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2462 | apply(rule_tac x="(rev pi)\<bullet>N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2463 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2464 | apply(drule_tac pi="rev pi" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2465 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2466 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2467 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2468 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2469 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2470 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2471 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2472 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2473 | lemma ORLEFT_eqvt_coname: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2474 | fixes pi::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2475 | shows "(pi\<bullet>(ORLEFT (A OR B) X Y)) = ORLEFT (A OR B) (pi\<bullet>X) (pi\<bullet>Y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2476 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2477 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2478 | apply(rule_tac x="pi\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2479 | apply(rule_tac x="pi\<bullet>z" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2480 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2481 | apply(rule_tac x="pi\<bullet>N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2482 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2483 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2484 | apply(drule_tac pi="pi" in fin.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2485 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2486 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2487 | apply(rule_tac x="(xb):M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2488 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2489 | apply(rule_tac x="(y):N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2490 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2491 | apply(rule_tac x="(rev pi)\<bullet>((z):OrL (xa).M (y).N z)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2492 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2493 | apply(rule_tac x="(rev pi)\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2494 | apply(rule_tac x="(rev pi)\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2495 | apply(rule_tac x="(rev pi)\<bullet>z" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2496 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2497 | apply(rule_tac x="(rev pi)\<bullet>N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2498 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2499 | apply(drule_tac pi="rev pi" in fin.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2500 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2501 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2502 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2503 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2504 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2505 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2506 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2507 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2508 | nominal_primrec | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2509 | ORRIGHT1 :: "ty \<Rightarrow> ctrm set \<Rightarrow> ctrm set" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2510 | where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2511 |  "ORRIGHT1 (B OR C) X = { <b>:OrR1 <a>.M b | a b M. fic (OrR1 <a>.M b) b \<and> <a>:M \<in> X }"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2512 | apply(rule TrueI)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2513 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2514 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2515 | lemma ORRIGHT1_eqvt_name: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2516 | fixes pi::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2517 | shows "(pi\<bullet>(ORRIGHT1 (A OR B) X)) = ORRIGHT1 (A OR B) (pi\<bullet>X)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2518 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2519 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2520 | apply(rule_tac x="pi\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2521 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2522 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2523 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2524 | apply(drule_tac pi="pi" in fic.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2525 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2526 | apply(rule_tac x="<a>:M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2527 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2528 | apply(rule_tac x="(rev pi)\<bullet>(<b>:OrR1 <a>.M b)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2529 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2530 | apply(rule_tac x="(rev pi)\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2531 | apply(rule_tac x="(rev pi)\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2532 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2533 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2534 | apply(drule_tac pi="rev pi" in fic.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2535 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2536 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2537 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2538 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2539 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2540 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2541 | lemma ORRIGHT1_eqvt_coname: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2542 | fixes pi::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2543 | shows "(pi\<bullet>(ORRIGHT1 (A OR B) X)) = ORRIGHT1 (A OR B) (pi\<bullet>X)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2544 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2545 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2546 | apply(rule_tac x="pi\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2547 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2548 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2549 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2550 | apply(drule_tac pi="pi" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2551 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2552 | apply(rule_tac x="<a>:M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2553 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2554 | apply(rule_tac x="(rev pi)\<bullet>(<b>:OrR1 <a>.M b)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2555 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2556 | apply(rule_tac x="(rev pi)\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2557 | apply(rule_tac x="(rev pi)\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2558 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2559 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2560 | apply(drule_tac pi="rev pi" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2561 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2562 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2563 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2564 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2565 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2566 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2567 | nominal_primrec | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2568 | ORRIGHT2 :: "ty \<Rightarrow> ctrm set \<Rightarrow> ctrm set" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2569 | where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2570 |  "ORRIGHT2 (B OR C) X = { <b>:OrR2 <a>.M b | a b M. fic (OrR2 <a>.M b) b \<and> <a>:M \<in> X }"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2571 | apply(rule TrueI)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2572 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2573 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2574 | lemma ORRIGHT2_eqvt_name: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2575 | fixes pi::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2576 | shows "(pi\<bullet>(ORRIGHT2 (A OR B) X)) = ORRIGHT2 (A OR B) (pi\<bullet>X)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2577 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2578 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2579 | apply(rule_tac x="pi\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2580 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2581 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2582 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2583 | apply(drule_tac pi="pi" in fic.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2584 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2585 | apply(rule_tac x="<a>:M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2586 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2587 | apply(rule_tac x="(rev pi)\<bullet>(<b>:OrR2 <a>.M b)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2588 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2589 | apply(rule_tac x="(rev pi)\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2590 | apply(rule_tac x="(rev pi)\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2591 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2592 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2593 | apply(drule_tac pi="rev pi" in fic.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2594 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2595 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2596 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2597 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2598 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2599 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2600 | lemma ORRIGHT2_eqvt_coname: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2601 | fixes pi::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2602 | shows "(pi\<bullet>(ORRIGHT2 (A OR B) X)) = ORRIGHT2 (A OR B) (pi\<bullet>X)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2603 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2604 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2605 | apply(rule_tac x="pi\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2606 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2607 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2608 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2609 | apply(drule_tac pi="pi" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2610 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2611 | apply(rule_tac x="<a>:M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2612 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2613 | apply(rule_tac x="(rev pi)\<bullet>(<b>:OrR2 <a>.M b)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2614 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2615 | apply(rule_tac x="(rev pi)\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2616 | apply(rule_tac x="(rev pi)\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2617 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2618 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2619 | apply(drule_tac pi="rev pi" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2620 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2621 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2622 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2623 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2624 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2625 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2626 | nominal_primrec | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2627 | IMPRIGHT :: "ty \<Rightarrow> ntrm set \<Rightarrow> ctrm set \<Rightarrow> ntrm set \<Rightarrow> ctrm set \<Rightarrow> ctrm set" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2628 | where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2629 | "IMPRIGHT (B IMP C) X Y Z U= | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2630 |         { <b>:ImpR (x).<a>.M b | x a b M. fic (ImpR (x).<a>.M b) b 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2631 |                                         \<and> (\<forall>z P. x\<sharp>(z,P) \<and> (z):P \<in> Z \<longrightarrow> (x):(M{a:=(z).P}) \<in> X)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2632 |                                         \<and> (\<forall>c Q. a\<sharp>(c,Q) \<and> <c>:Q \<in> U \<longrightarrow> <a>:(M{x:=<c>.Q}) \<in> Y)}"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2633 | apply(rule TrueI)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2634 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2635 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2636 | lemma IMPRIGHT_eqvt_name: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2637 | fixes pi::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2638 | shows "(pi\<bullet>(IMPRIGHT (A IMP B) X Y Z U)) = IMPRIGHT (A IMP B) (pi\<bullet>X) (pi\<bullet>Y) (pi\<bullet>Z) (pi\<bullet>U)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2639 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2640 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2641 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2642 | apply(rule_tac x="pi\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2643 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2644 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2645 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2646 | apply(drule_tac pi="pi" in fic.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2647 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2648 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2649 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2650 | apply(rule_tac x="(xb):(M{a:=((rev pi)\<bullet>z).((rev pi)\<bullet>P)})" in exI)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2651 | apply(perm_simp add: csubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2652 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2653 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2654 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2655 | apply(simp add: fresh_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2656 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2657 | apply(rule_tac x="<a>:(M{xb:=<((rev pi)\<bullet>c)>.((rev pi)\<bullet>Q)})" in exI)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2658 | apply(perm_simp add: nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2659 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2660 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2661 | apply(simp add: swap_simps fresh_left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2662 | apply(rule_tac x="(rev pi)\<bullet>(<b>:ImpR xa.<a>.M b)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2663 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2664 | apply(rule_tac x="(rev pi)\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2665 | apply(rule_tac x="(rev pi)\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2666 | apply(rule_tac x="(rev pi)\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2667 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2668 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2669 | apply(drule_tac pi="rev pi" in fic.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2670 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2671 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2672 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2673 | apply(drule_tac x="pi\<bullet>z" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2674 | apply(drule_tac x="pi\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2675 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2676 | apply(simp add: fresh_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2677 | apply(rule_tac x="(z):P" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2678 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2679 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2680 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2681 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2682 | apply(perm_simp add: csubst_eqvt fresh_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2683 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2684 | apply(drule_tac x="pi\<bullet>c" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2685 | apply(drule_tac x="pi\<bullet>Q" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2686 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2687 | apply(simp add: swap_simps fresh_left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2688 | apply(rule_tac x="<c>:Q" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2689 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2690 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2691 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2692 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2693 | apply(perm_simp add: nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2694 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2695 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2696 | lemma IMPRIGHT_eqvt_coname: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2697 | fixes pi::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2698 | shows "(pi\<bullet>(IMPRIGHT (A IMP B) X Y Z U)) = IMPRIGHT (A IMP B) (pi\<bullet>X) (pi\<bullet>Y) (pi\<bullet>Z) (pi\<bullet>U)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2699 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2700 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2701 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2702 | apply(rule_tac x="pi\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2703 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2704 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2705 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2706 | apply(drule_tac pi="pi" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2707 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2708 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2709 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2710 | apply(rule_tac x="(xb):(M{a:=((rev pi)\<bullet>z).((rev pi)\<bullet>P)})" in exI)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2711 | apply(perm_simp add: csubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2712 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2713 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2714 | apply(simp add: swap_simps fresh_left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2715 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2716 | apply(rule_tac x="<a>:(M{xb:=<((rev pi)\<bullet>c)>.((rev pi)\<bullet>Q)})" in exI)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2717 | apply(perm_simp add: nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2718 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2719 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2720 | apply(simp add: fresh_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2721 | apply(rule_tac x="(rev pi)\<bullet>(<b>:ImpR xa.<a>.M b)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2722 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2723 | apply(rule_tac x="(rev pi)\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2724 | apply(rule_tac x="(rev pi)\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2725 | apply(rule_tac x="(rev pi)\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2726 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2727 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2728 | apply(drule_tac pi="rev pi" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2729 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2730 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2731 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2732 | apply(drule_tac x="pi\<bullet>z" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2733 | apply(drule_tac x="pi\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2734 | apply(simp add: swap_simps fresh_left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2735 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2736 | apply(rule_tac x="(z):P" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2737 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2738 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2739 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2740 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2741 | apply(perm_simp add: csubst_eqvt fresh_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2742 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2743 | apply(drule_tac x="pi\<bullet>c" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2744 | apply(drule_tac x="pi\<bullet>Q" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2745 | apply(simp add: fresh_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2746 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2747 | apply(rule_tac x="<c>:Q" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2748 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2749 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2750 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2751 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2752 | apply(perm_simp add: nsubst_eqvt fresh_right) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2753 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2754 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2755 | nominal_primrec | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2756 | IMPLEFT :: "ty \<Rightarrow> ctrm set \<Rightarrow> ntrm set \<Rightarrow> ntrm set" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2757 | where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2758 | "IMPLEFT (B IMP C) X Y = | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2759 |         { (y):ImpL <a>.M (x).N y | x a y M N. fin (ImpL <a>.M (x).N y) y \<and> <a>:M \<in> X \<and> (x):N \<in> Y }"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2760 | apply(rule TrueI)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2761 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2762 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2763 | lemma IMPLEFT_eqvt_name: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2764 | fixes pi::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2765 | shows "(pi\<bullet>(IMPLEFT (A IMP B) X Y)) = IMPLEFT (A IMP B) (pi\<bullet>X) (pi\<bullet>Y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2766 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2767 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2768 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2769 | apply(rule_tac x="pi\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2770 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2771 | apply(rule_tac x="pi\<bullet>N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2772 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2773 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2774 | apply(drule_tac pi="pi" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2775 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2776 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2777 | apply(rule_tac x="<a>:M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2778 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2779 | apply(rule_tac x="(xb):N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2780 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2781 | apply(rule_tac x="(rev pi)\<bullet>((y):ImpL <a>.M (xa).N y)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2782 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2783 | apply(rule_tac x="(rev pi)\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2784 | apply(rule_tac x="(rev pi)\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2785 | apply(rule_tac x="(rev pi)\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2786 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2787 | apply(rule_tac x="(rev pi)\<bullet>N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2788 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2789 | apply(drule_tac pi="rev pi" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2790 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2791 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2792 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2793 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2794 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2795 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2796 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2797 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2798 | lemma IMPLEFT_eqvt_coname: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2799 | fixes pi::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2800 | shows "(pi\<bullet>(IMPLEFT (A IMP B) X Y)) = IMPLEFT (A IMP B) (pi\<bullet>X) (pi\<bullet>Y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2801 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2802 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2803 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2804 | apply(rule_tac x="pi\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2805 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2806 | apply(rule_tac x="pi\<bullet>N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2807 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2808 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2809 | apply(drule_tac pi="pi" in fin.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2810 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2811 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2812 | apply(rule_tac x="<a>:M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2813 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2814 | apply(rule_tac x="(xb):N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2815 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2816 | apply(rule_tac x="(rev pi)\<bullet>((y):ImpL <a>.M (xa).N y)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2817 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2818 | apply(rule_tac x="(rev pi)\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2819 | apply(rule_tac x="(rev pi)\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2820 | apply(rule_tac x="(rev pi)\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2821 | apply(rule_tac x="(rev pi)\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2822 | apply(rule_tac x="(rev pi)\<bullet>N" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2823 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2824 | apply(drule_tac pi="rev pi" in fin.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2825 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2826 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2827 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2828 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2829 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2830 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2831 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2832 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2833 | lemma sum_cases: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2834 | shows "(\<exists>y. x=Inl y) \<or> (\<exists>y. x=Inr y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2835 | apply(rule_tac s="x" in sumE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2836 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2837 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2838 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2839 | function | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2840 | NEGc::"ty \<Rightarrow> ntrm set \<Rightarrow> ctrm set" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2841 | and | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2842 | NEGn::"ty \<Rightarrow> ctrm set \<Rightarrow> ntrm set" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2843 | where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2844 | "NEGc (PR A) X = AXIOMSc (PR A) \<union> BINDINGc (PR A) X" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2845 | | "NEGc (NOT C) X = AXIOMSc (NOT C) \<union> BINDINGc (NOT C) X | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2846 | \<union> NOTRIGHT (NOT C) (lfp (NEGn C \<circ> NEGc C))" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2847 | | "NEGc (C AND D) X = AXIOMSc (C AND D) \<union> BINDINGc (C AND D) X | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2848 | \<union> ANDRIGHT (C AND D) (NEGc C (lfp (NEGn C \<circ> NEGc C))) (NEGc D (lfp (NEGn D \<circ> NEGc D)))" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2849 | | "NEGc (C OR D) X = AXIOMSc (C OR D) \<union> BINDINGc (C OR D) X | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2850 | \<union> ORRIGHT1 (C OR D) (NEGc C (lfp (NEGn C \<circ> NEGc C))) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2851 | \<union> ORRIGHT2 (C OR D) (NEGc D (lfp (NEGn D \<circ> NEGc D)))" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2852 | | "NEGc (C IMP D) X = AXIOMSc (C IMP D) \<union> BINDINGc (C IMP D) X | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2853 | \<union> IMPRIGHT (C IMP D) (lfp (NEGn C \<circ> NEGc C)) (NEGc D (lfp (NEGn D \<circ> NEGc D))) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2854 | (lfp (NEGn D \<circ> NEGc D)) (NEGc C (lfp (NEGn C \<circ> NEGc C)))" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2855 | | "NEGn (PR A) X = AXIOMSn (PR A) \<union> BINDINGn (PR A) X" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2856 | | "NEGn (NOT C) X = AXIOMSn (NOT C) \<union> BINDINGn (NOT C) X | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2857 | \<union> NOTLEFT (NOT C) (NEGc C (lfp (NEGn C \<circ> NEGc C)))" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2858 | | "NEGn (C AND D) X = AXIOMSn (C AND D) \<union> BINDINGn (C AND D) X | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2859 | \<union> ANDLEFT1 (C AND D) (lfp (NEGn C \<circ> NEGc C)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2860 | \<union> ANDLEFT2 (C AND D) (lfp (NEGn D \<circ> NEGc D))" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2861 | | "NEGn (C OR D) X = AXIOMSn (C OR D) \<union> BINDINGn (C OR D) X | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2862 | \<union> ORLEFT (C OR D) (lfp (NEGn C \<circ> NEGc C)) (lfp (NEGn D \<circ> NEGc D))" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2863 | | "NEGn (C IMP D) X = AXIOMSn (C IMP D) \<union> BINDINGn (C IMP D) X | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2864 | \<union> IMPLEFT (C IMP D) (NEGc C (lfp (NEGn C \<circ> NEGc C))) (lfp (NEGn D \<circ> NEGc D))" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2865 | using ty_cases sum_cases | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2866 | apply(auto simp add: ty.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2867 | apply(drule_tac x="x" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2868 | apply(auto simp add: ty.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2869 | apply(rotate_tac 10) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2870 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2871 | apply(auto simp add: ty.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2872 | apply(blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2873 | apply(blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2874 | apply(blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2875 | apply(rotate_tac 10) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2876 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2877 | apply(auto simp add: ty.inject) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2878 | apply(blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2879 | apply(blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2880 | apply(blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2881 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2882 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2883 | termination | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2884 | apply(relation "measure (sum_case (size\<circ>fst) (size\<circ>fst))") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2885 | apply(simp_all) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2886 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2887 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2888 | text {* Candidates *}
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2889 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2890 | lemma test1: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2891 | shows "x\<in>(X\<union>Y) = (x\<in>X \<or> x\<in>Y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2892 | by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2893 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2894 | lemma test2: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2895 | shows "x\<in>(X\<inter>Y) = (x\<in>X \<and> x\<in>Y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2896 | by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2897 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2898 | lemma big_inter_eqvt: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2899 | fixes pi1::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2900 |   and   X::"('a::pt_name) set set"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2901 | and pi2::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2902 |   and   Y::"('b::pt_coname) set set"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2903 | shows "(pi1\<bullet>(\<Inter> X)) = \<Inter> (pi1\<bullet>X)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2904 | and "(pi2\<bullet>(\<Inter> Y)) = \<Inter> (pi2\<bullet>Y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2905 | apply(auto simp add: perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2906 | apply(rule_tac x="(rev pi1)\<bullet>x" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2907 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2908 | apply(rule ballI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2909 | apply(drule_tac x="pi1\<bullet>xa" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2910 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2911 | apply(drule_tac x="xa" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2912 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2913 | apply(rule_tac x="(rev pi1)\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2914 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2915 | apply(simp add: pt_set_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2916 | apply(simp add: pt_set_bij[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2917 | apply(simp add: pt_set_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2918 | apply(rule_tac x="(rev pi2)\<bullet>x" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2919 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2920 | apply(rule ballI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2921 | apply(drule_tac x="pi2\<bullet>xa" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2922 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2923 | apply(drule_tac x="xa" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2924 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2925 | apply(rule_tac x="(rev pi2)\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2926 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2927 | apply(simp add: pt_set_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2928 | apply(simp add: pt_set_bij[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2929 | apply(simp add: pt_set_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2930 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2931 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2932 | lemma lfp_eqvt: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2933 | fixes pi1::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2934 |   and   f::"'a set \<Rightarrow> ('a::pt_name) set"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2935 | and pi2::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2936 |   and   g::"'b set \<Rightarrow> ('b::pt_coname) set"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2937 | shows "pi1\<bullet>(lfp f) = lfp (pi1\<bullet>f)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2938 | and "pi2\<bullet>(lfp g) = lfp (pi2\<bullet>g)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2939 | apply(simp add: lfp_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2940 | apply(simp add: big_inter_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2941 | apply(simp add: pt_Collect_eqvt[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2942 | apply(subgoal_tac "{u. (pi1\<bullet>f) u \<subseteq> u} = {u. ((rev pi1)\<bullet>((pi1\<bullet>f) u)) \<subseteq> ((rev pi1)\<bullet>u)}")
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2943 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2944 | apply(rule Collect_cong) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2945 | apply(rule iffI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2946 | apply(rule subseteq_eqvt(1)[THEN iffD1]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2947 | apply(simp add: perm_bool) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2948 | apply(drule subseteq_eqvt(1)[THEN iffD2]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2949 | apply(simp add: perm_bool) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2950 | apply(simp add: lfp_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2951 | apply(simp add: big_inter_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2952 | apply(simp add: pt_Collect_eqvt[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2953 | apply(subgoal_tac "{u. (pi2\<bullet>g) u \<subseteq> u} = {u. ((rev pi2)\<bullet>((pi2\<bullet>g) u)) \<subseteq> ((rev pi2)\<bullet>u)}")
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2954 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2955 | apply(rule Collect_cong) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2956 | apply(rule iffI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2957 | apply(rule subseteq_eqvt(2)[THEN iffD1]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2958 | apply(simp add: perm_bool) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2959 | apply(drule subseteq_eqvt(2)[THEN iffD2]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2960 | apply(simp add: perm_bool) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2961 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2962 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2963 | abbreviation | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2964 |   CANDn::"ty \<Rightarrow> ntrm set"  ("\<parallel>'(_')\<parallel>" [60] 60) 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2965 | where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2966 | "\<parallel>(B)\<parallel> \<equiv> lfp (NEGn B \<circ> NEGc B)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2967 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2968 | abbreviation | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2969 |   CANDc::"ty \<Rightarrow> ctrm set"  ("\<parallel><_>\<parallel>" [60] 60)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2970 | where | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2971 | "\<parallel><B>\<parallel> \<equiv> NEGc B (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2972 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2973 | lemma NEGn_decreasing: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2974 | shows "X\<subseteq>Y \<Longrightarrow> NEGn B Y \<subseteq> NEGn B X" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2975 | by (nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2976 | (auto dest: BINDINGn_decreasing) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2977 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2978 | lemma NEGc_decreasing: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2979 | shows "X\<subseteq>Y \<Longrightarrow> NEGc B Y \<subseteq> NEGc B X" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2980 | by (nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2981 | (auto dest: BINDINGc_decreasing) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2982 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2983 | lemma mono_NEGn_NEGc: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2984 | shows "mono (NEGn B \<circ> NEGc B)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2985 | and "mono (NEGc B \<circ> NEGn B)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2986 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2987 | have "\<forall>X Y. X\<subseteq>Y \<longrightarrow> NEGn B (NEGc B X) \<subseteq> NEGn B (NEGc B Y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2988 | proof (intro strip) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2989 | fix X::"ntrm set" and Y::"ntrm set" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2990 | assume "X\<subseteq>Y" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2991 | then have "NEGc B Y \<subseteq> NEGc B X" by (simp add: NEGc_decreasing) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2992 | then show "NEGn B (NEGc B X) \<subseteq> NEGn B (NEGc B Y)" by (simp add: NEGn_decreasing) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2993 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2994 | then show "mono (NEGn B \<circ> NEGc B)" by (simp add: mono_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2995 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2996 | have "\<forall>X Y. X\<subseteq>Y \<longrightarrow> NEGc B (NEGn B X) \<subseteq> NEGc B (NEGn B Y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2997 | proof (intro strip) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2998 | fix X::"ctrm set" and Y::"ctrm set" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 2999 | assume "X\<subseteq>Y" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3000 | then have "NEGn B Y \<subseteq> NEGn B X" by (simp add: NEGn_decreasing) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3001 | then show "NEGc B (NEGn B X) \<subseteq> NEGc B (NEGn B Y)" by (simp add: NEGc_decreasing) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3002 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3003 | then show "mono (NEGc B \<circ> NEGn B)" by (simp add: mono_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3004 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3005 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3006 | lemma NEG_simp: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3007 | shows "\<parallel><B>\<parallel> = NEGc B (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3008 | and "\<parallel>(B)\<parallel> = NEGn B (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3009 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3010 | show "\<parallel><B>\<parallel> = NEGc B (\<parallel>(B)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3011 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3012 | have "\<parallel>(B)\<parallel> \<equiv> lfp (NEGn B \<circ> NEGc B)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3013 | then have "\<parallel>(B)\<parallel> = (NEGn B \<circ> NEGc B) (\<parallel>(B)\<parallel>)" using mono_NEGn_NEGc def_lfp_unfold by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3014 | then show "\<parallel>(B)\<parallel> = NEGn B (\<parallel><B>\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3015 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3016 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3017 | lemma NEG_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3018 | shows "M \<in> \<parallel><B>\<parallel> \<Longrightarrow> M \<in> NEGc B (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3019 | and "N \<in> \<parallel>(B)\<parallel> \<Longrightarrow> N \<in> NEGn B (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3020 | using NEG_simp by (blast)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3021 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3022 | lemma NEG_intro: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3023 | shows "M \<in> NEGc B (\<parallel>(B)\<parallel>) \<Longrightarrow> M \<in> \<parallel><B>\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3024 | and "N \<in> NEGn B (\<parallel><B>\<parallel>) \<Longrightarrow> N \<in> \<parallel>(B)\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3025 | using NEG_simp by (blast)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3026 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3027 | lemma NEGc_simps: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3028 | shows "NEGc (PR A) (\<parallel>(PR A)\<parallel>) = AXIOMSc (PR A) \<union> BINDINGc (PR A) (\<parallel>(PR A)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3029 | and "NEGc (NOT C) (\<parallel>(NOT C)\<parallel>) = AXIOMSc (NOT C) \<union> BINDINGc (NOT C) (\<parallel>(NOT C)\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3030 | \<union> (NOTRIGHT (NOT C) (\<parallel>(C)\<parallel>))" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3031 | and "NEGc (C AND D) (\<parallel>(C AND D)\<parallel>) = AXIOMSc (C AND D) \<union> BINDINGc (C AND D) (\<parallel>(C AND D)\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3032 | \<union> (ANDRIGHT (C AND D) (\<parallel><C>\<parallel>) (\<parallel><D>\<parallel>))" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3033 | and "NEGc (C OR D) (\<parallel>(C OR D)\<parallel>) = AXIOMSc (C OR D) \<union> BINDINGc (C OR D) (\<parallel>(C OR D)\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3034 | \<union> (ORRIGHT1 (C OR D) (\<parallel><C>\<parallel>)) \<union> (ORRIGHT2 (C OR D) (\<parallel><D>\<parallel>))" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3035 | and "NEGc (C IMP D) (\<parallel>(C IMP D)\<parallel>) = AXIOMSc (C IMP D) \<union> BINDINGc (C IMP D) (\<parallel>(C IMP D)\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3036 | \<union> (IMPRIGHT (C IMP D) (\<parallel>(C)\<parallel>) (\<parallel><D>\<parallel>) (\<parallel>(D)\<parallel>) (\<parallel><C>\<parallel>))" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3037 | by (simp_all only: NEGc.simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3038 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3039 | lemma AXIOMS_in_CANDs: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3040 | shows "AXIOMSn B \<subseteq> (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3041 | and "AXIOMSc B \<subseteq> (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3042 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3043 | have "AXIOMSn B \<subseteq> NEGn B (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3044 | by (nominal_induct B rule: ty.strong_induct) (auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3045 | then show "AXIOMSn B \<subseteq> \<parallel>(B)\<parallel>" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3046 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3047 | have "AXIOMSc B \<subseteq> NEGc B (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3048 | by (nominal_induct B rule: ty.strong_induct) (auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3049 | then show "AXIOMSc B \<subseteq> \<parallel><B>\<parallel>" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3050 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3051 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3052 | lemma Ax_in_CANDs: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3053 | shows "(y):Ax x a \<in> \<parallel>(B)\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3054 | and "<b>:Ax x a \<in> \<parallel><B>\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3055 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3056 | have "(y):Ax x a \<in> AXIOMSn B" by (auto simp add: AXIOMSn_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3057 | also have "AXIOMSn B \<subseteq> \<parallel>(B)\<parallel>" by (rule AXIOMS_in_CANDs) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3058 | finally show "(y):Ax x a \<in> \<parallel>(B)\<parallel>" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3059 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3060 | have "<b>:Ax x a \<in> AXIOMSc B" by (auto simp add: AXIOMSc_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3061 | also have "AXIOMSc B \<subseteq> \<parallel><B>\<parallel>" by (rule AXIOMS_in_CANDs) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3062 | finally show "<b>:Ax x a \<in> \<parallel><B>\<parallel>" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3063 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3064 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3065 | lemma AXIOMS_eqvt_aux_name: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3066 | fixes pi::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3067 | shows "M \<in> AXIOMSn B \<Longrightarrow> (pi\<bullet>M) \<in> AXIOMSn B" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3068 | and "N \<in> AXIOMSc B \<Longrightarrow> (pi\<bullet>N) \<in> AXIOMSc B" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3069 | apply(auto simp add: AXIOMSn_def AXIOMSc_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3070 | apply(rule_tac x="pi\<bullet>x" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3071 | apply(rule_tac x="pi\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3072 | apply(rule_tac x="pi\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3073 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3074 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3075 | apply(rule_tac x="pi\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3076 | apply(rule_tac x="pi\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3077 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3078 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3079 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3080 | lemma AXIOMS_eqvt_aux_coname: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3081 | fixes pi::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3082 | shows "M \<in> AXIOMSn B \<Longrightarrow> (pi\<bullet>M) \<in> AXIOMSn B" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3083 | and "N \<in> AXIOMSc B \<Longrightarrow> (pi\<bullet>N) \<in> AXIOMSc B" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3084 | apply(auto simp add: AXIOMSn_def AXIOMSc_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3085 | apply(rule_tac x="pi\<bullet>x" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3086 | apply(rule_tac x="pi\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3087 | apply(rule_tac x="pi\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3088 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3089 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3090 | apply(rule_tac x="pi\<bullet>y" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3091 | apply(rule_tac x="pi\<bullet>b" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3092 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3093 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3094 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3095 | lemma AXIOMS_eqvt_name: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3096 | fixes pi::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3097 | shows "(pi\<bullet>AXIOMSn B) = AXIOMSn B" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3098 | and "(pi\<bullet>AXIOMSc B) = AXIOMSc B" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3099 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3100 | apply(simp add: pt_set_bij1a[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3101 | apply(drule_tac pi="pi" in AXIOMS_eqvt_aux_name(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3102 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3103 | apply(drule_tac pi="rev pi" in AXIOMS_eqvt_aux_name(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3104 | apply(simp add: pt_set_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3105 | apply(simp add: pt_set_bij1a[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3106 | apply(drule_tac pi="pi" in AXIOMS_eqvt_aux_name(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3107 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3108 | apply(drule_tac pi="rev pi" in AXIOMS_eqvt_aux_name(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3109 | apply(simp add: pt_set_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3110 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3111 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3112 | lemma AXIOMS_eqvt_coname: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3113 | fixes pi::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3114 | shows "(pi\<bullet>AXIOMSn B) = AXIOMSn B" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3115 | and "(pi\<bullet>AXIOMSc B) = AXIOMSc B" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3116 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3117 | apply(simp add: pt_set_bij1a[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3118 | apply(drule_tac pi="pi" in AXIOMS_eqvt_aux_coname(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3119 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3120 | apply(drule_tac pi="rev pi" in AXIOMS_eqvt_aux_coname(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3121 | apply(simp add: pt_set_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3122 | apply(simp add: pt_set_bij1a[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3123 | apply(drule_tac pi="pi" in AXIOMS_eqvt_aux_coname(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3124 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3125 | apply(drule_tac pi="rev pi" in AXIOMS_eqvt_aux_coname(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3126 | apply(simp add: pt_set_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3127 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3128 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3129 | lemma BINDING_eqvt_name: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3130 | fixes pi::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3131 | shows "(pi\<bullet>(BINDINGn B X)) = BINDINGn B (pi\<bullet>X)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3132 | and "(pi\<bullet>(BINDINGc B Y)) = BINDINGc B (pi\<bullet>Y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3133 | apply(auto simp add: BINDINGn_def BINDINGc_def perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3134 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3135 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3136 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3137 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3138 | apply(drule_tac x="(rev pi)\<bullet>a" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3139 | apply(drule_tac x="(rev pi)\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3140 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3141 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3142 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3143 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3144 | apply(drule_tac ?pi1.0="pi" in SNa_eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3145 | apply(perm_simp add: nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3146 | apply(rule_tac x="(rev pi\<bullet>xa):(rev pi\<bullet>M)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3147 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3148 | apply(rule_tac x="rev pi\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3149 | apply(rule_tac x="rev pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3150 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3151 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3152 | apply(drule_tac x="pi\<bullet>a" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3153 | apply(drule_tac x="pi\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3154 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3155 | apply(force) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3156 | apply(drule_tac ?pi1.0="rev pi" in SNa_eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3157 | apply(perm_simp add: nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3158 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3159 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3160 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3161 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3162 | apply(drule_tac x="(rev pi)\<bullet>x" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3163 | apply(drule_tac x="(rev pi)\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3164 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3165 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3166 | apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3167 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3168 | apply(drule_tac ?pi1.0="pi" in SNa_eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3169 | apply(perm_simp add: csubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3170 | apply(rule_tac x="<(rev pi\<bullet>a)>:(rev pi\<bullet>M)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3171 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3172 | apply(rule_tac x="rev pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3173 | apply(rule_tac x="rev pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3174 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3175 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3176 | apply(drule_tac x="pi\<bullet>x" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3177 | apply(drule_tac x="pi\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3178 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3179 | apply(force) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3180 | apply(drule_tac ?pi1.0="rev pi" in SNa_eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3181 | apply(perm_simp add: csubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3182 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3183 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3184 | lemma BINDING_eqvt_coname: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3185 | fixes pi::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3186 | shows "(pi\<bullet>(BINDINGn B X)) = BINDINGn B (pi\<bullet>X)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3187 | and "(pi\<bullet>(BINDINGc B Y)) = BINDINGc B (pi\<bullet>Y)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3188 | apply(auto simp add: BINDINGn_def BINDINGc_def perm_set_eq) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3189 | apply(rule_tac x="pi\<bullet>xb" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3190 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3191 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3192 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3193 | apply(drule_tac x="(rev pi)\<bullet>a" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3194 | apply(drule_tac x="(rev pi)\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3195 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3196 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3197 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3198 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3199 | apply(drule_tac ?pi2.0="pi" in SNa_eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3200 | apply(perm_simp add: nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3201 | apply(rule_tac x="(rev pi\<bullet>xa):(rev pi\<bullet>M)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3202 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3203 | apply(rule_tac x="rev pi\<bullet>xa" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3204 | apply(rule_tac x="rev pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3205 | apply(simp add: swap_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3206 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3207 | apply(drule_tac x="pi\<bullet>a" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3208 | apply(drule_tac x="pi\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3209 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3210 | apply(force) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3211 | apply(drule_tac ?pi2.0="rev pi" in SNa_eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3212 | apply(perm_simp add: nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3213 | apply(rule_tac x="pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3214 | apply(rule_tac x="pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3215 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3216 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3217 | apply(drule_tac x="(rev pi)\<bullet>x" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3218 | apply(drule_tac x="(rev pi)\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3219 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3220 | apply(drule sym) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3221 | apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3222 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3223 | apply(drule_tac ?pi2.0="pi" in SNa_eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3224 | apply(perm_simp add: csubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3225 | apply(rule_tac x="<(rev pi\<bullet>a)>:(rev pi\<bullet>M)" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3226 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3227 | apply(rule_tac x="rev pi\<bullet>a" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3228 | apply(rule_tac x="rev pi\<bullet>M" in exI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3229 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3230 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3231 | apply(drule_tac x="pi\<bullet>x" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3232 | apply(drule_tac x="pi\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3233 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3234 | apply(force) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3235 | apply(drule_tac ?pi2.0="rev pi" in SNa_eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3236 | apply(perm_simp add: csubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3237 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3238 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3239 | lemma CAND_eqvt_name: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3240 | fixes pi::"name prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3241 | shows "(pi\<bullet>(\<parallel>(B)\<parallel>)) = (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3242 | and "(pi\<bullet>(\<parallel><B>\<parallel>)) = (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3243 | proof (nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3244 | case (PR X) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3245 |   { case 1 show ?case 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3246 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3247 | apply(simp add: lfp_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3248 | apply(simp add: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3249 | apply(simp add: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3250 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3251 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3252 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3253 | case 2 show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3254 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3255 | apply(simp only: NEGc_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3256 | apply(simp add: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3257 | apply(simp add: lfp_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3258 | apply(simp add: comp_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3259 | apply(simp add: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3260 | apply(simp add: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3261 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3262 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3263 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3264 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3265 | case (NOT B) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3266 | have ih1: "pi\<bullet>(\<parallel>(B)\<parallel>) = (\<parallel>(B)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3267 | have ih2: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3268 | have g: "pi\<bullet>(\<parallel>(NOT B)\<parallel>) = (\<parallel>(NOT B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3269 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3270 | apply(simp only: lfp_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3271 | apply(simp only: comp_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3272 | apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3273 | apply(simp only: NEGc.simps NEGn.simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3274 | apply(simp only: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name NOTRIGHT_eqvt_name NOTLEFT_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3275 | apply(perm_simp add: ih1 ih2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3276 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3277 |   { case 1 show ?case by (rule g)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3278 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3279 | case 2 show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3280 | by (simp only: NEGc_simps union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name NOTRIGHT_eqvt_name ih1 ih2 g) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3281 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3282 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3283 | case (AND A B) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3284 | have ih1: "pi\<bullet>(\<parallel>(A)\<parallel>) = (\<parallel>(A)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3285 | have ih2: "pi\<bullet>(\<parallel><A>\<parallel>) = (\<parallel><A>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3286 | have ih3: "pi\<bullet>(\<parallel>(B)\<parallel>) = (\<parallel>(B)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3287 | have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3288 | have g: "pi\<bullet>(\<parallel>(A AND B)\<parallel>) = (\<parallel>(A AND B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3289 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3290 | apply(simp only: lfp_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3291 | apply(simp only: comp_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3292 | apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3293 | apply(simp only: NEGc.simps NEGn.simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3294 | apply(simp only: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name ANDRIGHT_eqvt_name | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3295 | ANDLEFT2_eqvt_name ANDLEFT1_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3296 | apply(perm_simp add: ih1 ih2 ih3 ih4) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3297 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3298 |   { case 1 show ?case by (rule g)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3299 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3300 | case 2 show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3301 | by (simp only: NEGc_simps union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3302 | ANDRIGHT_eqvt_name ANDLEFT1_eqvt_name ANDLEFT2_eqvt_name ih1 ih2 ih3 ih4 g) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3303 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3304 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3305 | case (OR A B) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3306 | have ih1: "pi\<bullet>(\<parallel>(A)\<parallel>) = (\<parallel>(A)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3307 | have ih2: "pi\<bullet>(\<parallel><A>\<parallel>) = (\<parallel><A>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3308 | have ih3: "pi\<bullet>(\<parallel>(B)\<parallel>) = (\<parallel>(B)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3309 | have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3310 | have g: "pi\<bullet>(\<parallel>(A OR B)\<parallel>) = (\<parallel>(A OR B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3311 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3312 | apply(simp only: lfp_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3313 | apply(simp only: comp_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3314 | apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3315 | apply(simp only: NEGc.simps NEGn.simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3316 | apply(simp only: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name ORRIGHT1_eqvt_name | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3317 | ORRIGHT2_eqvt_name ORLEFT_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3318 | apply(perm_simp add: ih1 ih2 ih3 ih4) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3319 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3320 |   { case 1 show ?case by (rule g)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3321 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3322 | case 2 show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3323 | by (simp only: NEGc_simps union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3324 | ORRIGHT1_eqvt_name ORRIGHT2_eqvt_name ORLEFT_eqvt_name ih1 ih2 ih3 ih4 g) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3325 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3326 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3327 | case (IMP A B) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3328 | have ih1: "pi\<bullet>(\<parallel>(A)\<parallel>) = (\<parallel>(A)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3329 | have ih2: "pi\<bullet>(\<parallel><A>\<parallel>) = (\<parallel><A>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3330 | have ih3: "pi\<bullet>(\<parallel>(B)\<parallel>) = (\<parallel>(B)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3331 | have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3332 | have g: "pi\<bullet>(\<parallel>(A IMP B)\<parallel>) = (\<parallel>(A IMP B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3333 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3334 | apply(simp only: lfp_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3335 | apply(simp only: comp_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3336 | apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3337 | apply(simp only: NEGc.simps NEGn.simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3338 | apply(simp only: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name IMPRIGHT_eqvt_name IMPLEFT_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3339 | apply(perm_simp add: ih1 ih2 ih3 ih4) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3340 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3341 |   { case 1 show ?case by (rule g)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3342 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3343 | case 2 show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3344 | by (simp only: NEGc_simps union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3345 | IMPRIGHT_eqvt_name IMPLEFT_eqvt_name ih1 ih2 ih3 ih4 g) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3346 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3347 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3348 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3349 | lemma CAND_eqvt_coname: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3350 | fixes pi::"coname prm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3351 | shows "(pi\<bullet>(\<parallel>(B)\<parallel>)) = (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3352 | and "(pi\<bullet>(\<parallel><B>\<parallel>)) = (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3353 | proof (nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3354 | case (PR X) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3355 |   { case 1 show ?case 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3356 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3357 | apply(simp add: lfp_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3358 | apply(simp add: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3359 | apply(simp add: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3360 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3361 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3362 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3363 | case 2 show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3364 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3365 | apply(simp only: NEGc_simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3366 | apply(simp add: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3367 | apply(simp add: lfp_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3368 | apply(simp add: comp_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3369 | apply(simp add: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3370 | apply(simp add: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3371 | apply(perm_simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3372 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3373 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3374 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3375 | case (NOT B) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3376 | have ih1: "pi\<bullet>(\<parallel>(B)\<parallel>) = (\<parallel>(B)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3377 | have ih2: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3378 | have g: "pi\<bullet>(\<parallel>(NOT B)\<parallel>) = (\<parallel>(NOT B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3379 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3380 | apply(simp only: lfp_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3381 | apply(simp only: comp_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3382 | apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3383 | apply(simp only: NEGc.simps NEGn.simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3384 | apply(simp only: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3385 | NOTRIGHT_eqvt_coname NOTLEFT_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3386 | apply(perm_simp add: ih1 ih2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3387 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3388 |   { case 1 show ?case by (rule g)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3389 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3390 | case 2 show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3391 | by (simp only: NEGc_simps union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3392 | NOTRIGHT_eqvt_coname ih1 ih2 g) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3393 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3394 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3395 | case (AND A B) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3396 | have ih1: "pi\<bullet>(\<parallel>(A)\<parallel>) = (\<parallel>(A)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3397 | have ih2: "pi\<bullet>(\<parallel><A>\<parallel>) = (\<parallel><A>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3398 | have ih3: "pi\<bullet>(\<parallel>(B)\<parallel>) = (\<parallel>(B)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3399 | have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3400 | have g: "pi\<bullet>(\<parallel>(A AND B)\<parallel>) = (\<parallel>(A AND B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3401 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3402 | apply(simp only: lfp_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3403 | apply(simp only: comp_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3404 | apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3405 | apply(simp only: NEGc.simps NEGn.simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3406 | apply(simp only: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname ANDRIGHT_eqvt_coname | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3407 | ANDLEFT2_eqvt_coname ANDLEFT1_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3408 | apply(perm_simp add: ih1 ih2 ih3 ih4) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3409 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3410 |   { case 1 show ?case by (rule g)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3411 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3412 | case 2 show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3413 | by (simp only: NEGc_simps union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3414 | ANDRIGHT_eqvt_coname ANDLEFT1_eqvt_coname ANDLEFT2_eqvt_coname ih1 ih2 ih3 ih4 g) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3415 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3416 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3417 | case (OR A B) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3418 | have ih1: "pi\<bullet>(\<parallel>(A)\<parallel>) = (\<parallel>(A)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3419 | have ih2: "pi\<bullet>(\<parallel><A>\<parallel>) = (\<parallel><A>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3420 | have ih3: "pi\<bullet>(\<parallel>(B)\<parallel>) = (\<parallel>(B)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3421 | have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3422 | have g: "pi\<bullet>(\<parallel>(A OR B)\<parallel>) = (\<parallel>(A OR B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3423 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3424 | apply(simp only: lfp_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3425 | apply(simp only: comp_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3426 | apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3427 | apply(simp only: NEGc.simps NEGn.simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3428 | apply(simp only: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname ORRIGHT1_eqvt_coname | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3429 | ORRIGHT2_eqvt_coname ORLEFT_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3430 | apply(perm_simp add: ih1 ih2 ih3 ih4) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3431 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3432 |   { case 1 show ?case by (rule g)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3433 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3434 | case 2 show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3435 | by (simp only: NEGc_simps union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3436 | ORRIGHT1_eqvt_coname ORRIGHT2_eqvt_coname ORLEFT_eqvt_coname ih1 ih2 ih3 ih4 g) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3437 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3438 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3439 | case (IMP A B) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3440 | have ih1: "pi\<bullet>(\<parallel>(A)\<parallel>) = (\<parallel>(A)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3441 | have ih2: "pi\<bullet>(\<parallel><A>\<parallel>) = (\<parallel><A>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3442 | have ih3: "pi\<bullet>(\<parallel>(B)\<parallel>) = (\<parallel>(B)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3443 | have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3444 | have g: "pi\<bullet>(\<parallel>(A IMP B)\<parallel>) = (\<parallel>(A IMP B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3445 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3446 | apply(simp only: lfp_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3447 | apply(simp only: comp_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3448 | apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3449 | apply(simp only: NEGc.simps NEGn.simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3450 | apply(simp only: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname IMPRIGHT_eqvt_coname | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3451 | IMPLEFT_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3452 | apply(perm_simp add: ih1 ih2 ih3 ih4) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3453 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3454 |   { case 1 show ?case by (rule g)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3455 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3456 | case 2 show ?case | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3457 | by (simp only: NEGc_simps union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3458 | IMPRIGHT_eqvt_coname IMPLEFT_eqvt_coname ih1 ih2 ih3 ih4 g) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3459 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3460 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3461 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3462 | text {* Elimination rules for the set-operators *}
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3463 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3464 | lemma BINDINGc_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3465 | assumes a: "<a>:M \<in> BINDINGc B (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3466 |   shows "\<forall>x P. ((x):P)\<in>(\<parallel>(B)\<parallel>) \<longrightarrow> SNa (M{a:=(x).P})"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3467 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3468 | apply(auto simp add: BINDINGc_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3469 | apply(auto simp add: ctrm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3470 | apply(drule_tac x="[(a,aa)]\<bullet>x" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3471 | apply(drule_tac x="[(a,aa)]\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3472 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3473 | apply(drule_tac pi="[(a,aa)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3474 | apply(simp add: CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3475 | apply(drule_tac ?pi2.0="[(a,aa)]" in SNa_eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3476 | apply(perm_simp add: csubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3477 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3478 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3479 | lemma BINDINGn_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3480 | assumes a: "(x):M \<in> BINDINGn B (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3481 |   shows "\<forall>c P. (<c>:P)\<in>(\<parallel><B>\<parallel>) \<longrightarrow> SNa (M{x:=<c>.P})"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3482 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3483 | apply(auto simp add: BINDINGn_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3484 | apply(auto simp add: ntrm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3485 | apply(drule_tac x="[(x,xa)]\<bullet>c" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3486 | apply(drule_tac x="[(x,xa)]\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3487 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3488 | apply(drule_tac pi="[(x,xa)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3489 | apply(simp add: CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3490 | apply(drule_tac ?pi1.0="[(x,xa)]" in SNa_eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3491 | apply(perm_simp add: nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3492 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3493 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3494 | lemma NOTRIGHT_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3495 | assumes a: "<a>:M \<in> NOTRIGHT (NOT B) (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3496 | obtains x' M' where "M = NotR (x').M' a" and "fic (NotR (x').M' a) a" and "(x'):M' \<in> (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3497 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3498 | apply(auto simp add: ctrm.inject alpha abs_fresh calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3499 | apply(drule_tac x="x" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3500 | apply(drule_tac x="[(a,aa)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3501 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3502 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3503 | apply(drule_tac pi="[(a,aa)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3504 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3505 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3506 | apply(drule_tac pi="[(a,aa)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3507 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3508 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3509 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3510 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3511 | lemma NOTLEFT_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3512 | assumes a: "(x):M \<in> NOTLEFT (NOT B) (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3513 | obtains a' M' where "M = NotL <a'>.M' x" and "fin (NotL <a'>.M' x) x" and "<a'>:M' \<in> (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3514 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3515 | apply(auto simp add: ntrm.inject alpha abs_fresh calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3516 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3517 | apply(drule_tac x="[(x,xa)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3518 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3519 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3520 | apply(drule_tac pi="[(x,xa)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3521 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3522 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3523 | apply(drule_tac pi="[(x,xa)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3524 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3525 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3526 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3527 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3528 | lemma ANDRIGHT_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3529 | assumes a: "<a>:M \<in> ANDRIGHT (B AND C) (\<parallel><B>\<parallel>) (\<parallel><C>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3530 | obtains d' M' e' N' where "M = AndR <d'>.M' <e'>.N' a" and "fic (AndR <d'>.M' <e'>.N' a) a" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3531 | and "<d'>:M' \<in> (\<parallel><B>\<parallel>)" and "<e'>:N' \<in> (\<parallel><C>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3532 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3533 | apply(auto simp add: ctrm.inject alpha abs_fresh calc_atm fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3534 | apply(drule_tac x="c" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3535 | apply(drule_tac x="[(a,c)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3536 | apply(drule_tac x="c" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3537 | apply(drule_tac x="[(a,c)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3538 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3539 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3540 | apply(drule_tac pi="[(a,c)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3541 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3542 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3543 | apply(drule_tac pi="[(a,c)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3544 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3545 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3546 | apply(drule_tac pi="[(a,c)]" and x="<a>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3547 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3548 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3549 | apply(case_tac "a=b") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3550 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3551 | apply(drule_tac x="c" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3552 | apply(drule_tac x="[(b,c)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3553 | apply(drule_tac x="c" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3554 | apply(drule_tac x="[(b,c)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3555 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3556 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3557 | apply(drule_tac pi="[(b,c)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3558 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3559 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3560 | apply(drule_tac pi="[(b,c)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3561 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3562 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3563 | apply(drule_tac pi="[(b,c)]" and x="<b>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3564 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3565 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3566 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3567 | apply(case_tac "c=b") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3568 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3569 | apply(drule_tac x="b" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3570 | apply(drule_tac x="[(a,b)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3571 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3572 | apply(drule_tac x="[(a,b)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3573 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3574 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3575 | apply(drule_tac pi="[(a,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3576 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3577 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3578 | apply(drule_tac pi="[(a,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3579 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3580 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3581 | apply(drule_tac pi="[(a,b)]" and x="<b>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3582 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3583 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3584 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3585 | apply(drule_tac x="c" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3586 | apply(drule_tac x="[(a,c)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3587 | apply(drule_tac x="b" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3588 | apply(drule_tac x="[(a,c)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3589 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3590 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3591 | apply(drule_tac pi="[(a,c)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3592 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3593 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3594 | apply(drule_tac pi="[(a,c)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3595 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3596 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3597 | apply(drule_tac pi="[(a,c)]" and x="<b>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3598 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3599 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3600 | apply(case_tac "a=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3601 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3602 | apply(drule_tac x="c" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3603 | apply(drule_tac x="[(aa,c)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3604 | apply(drule_tac x="c" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3605 | apply(drule_tac x="[(aa,c)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3606 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3607 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3608 | apply(drule_tac pi="[(aa,c)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3609 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3610 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3611 | apply(drule_tac pi="[(aa,c)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3612 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3613 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3614 | apply(drule_tac pi="[(aa,c)]" and x="<aa>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3615 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3616 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3617 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3618 | apply(case_tac "c=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3619 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3620 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3621 | apply(drule_tac x="[(a,aa)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3622 | apply(drule_tac x="aa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3623 | apply(drule_tac x="[(a,aa)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3624 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3625 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3626 | apply(drule_tac pi="[(a,aa)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3627 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3628 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3629 | apply(drule_tac pi="[(a,aa)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3630 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3631 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3632 | apply(drule_tac pi="[(a,aa)]" and x="<a>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3633 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3634 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3635 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3636 | apply(drule_tac x="aa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3637 | apply(drule_tac x="[(a,c)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3638 | apply(drule_tac x="c" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3639 | apply(drule_tac x="[(a,c)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3640 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3641 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3642 | apply(drule_tac pi="[(a,c)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3643 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3644 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3645 | apply(drule_tac pi="[(a,c)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3646 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3647 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3648 | apply(drule_tac pi="[(a,c)]" and x="<a>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3649 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3650 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3651 | apply(case_tac "a=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3652 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3653 | apply(case_tac "aa=b") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3654 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3655 | apply(drule_tac x="c" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3656 | apply(drule_tac x="[(b,c)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3657 | apply(drule_tac x="c" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3658 | apply(drule_tac x="[(b,c)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3659 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3660 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3661 | apply(drule_tac pi="[(b,c)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3662 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3663 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3664 | apply(drule_tac pi="[(b,c)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3665 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3666 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3667 | apply(drule_tac pi="[(b,c)]" and x="<b>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3668 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3669 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3670 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3671 | apply(case_tac "c=b") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3672 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3673 | apply(drule_tac x="b" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3674 | apply(drule_tac x="[(aa,b)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3675 | apply(drule_tac x="aa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3676 | apply(drule_tac x="[(aa,b)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3677 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3678 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3679 | apply(drule_tac pi="[(aa,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3680 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3681 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3682 | apply(drule_tac pi="[(aa,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3683 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3684 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3685 | apply(drule_tac pi="[(aa,b)]" and x="<b>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3686 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3687 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3688 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3689 | apply(drule_tac x="c" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3690 | apply(drule_tac x="[(aa,c)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3691 | apply(drule_tac x="b" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3692 | apply(drule_tac x="[(aa,c)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3693 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3694 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3695 | apply(drule_tac pi="[(aa,c)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3696 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3697 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3698 | apply(drule_tac pi="[(aa,c)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3699 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3700 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3701 | apply(drule_tac pi="[(aa,c)]" and x="<b>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3702 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3703 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3704 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3705 | apply(case_tac "c=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3706 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3707 | apply(case_tac "a=b") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3708 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3709 | apply(drule_tac x="b" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3710 | apply(drule_tac x="[(b,aa)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3711 | apply(drule_tac x="aa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3712 | apply(drule_tac x="[(b,aa)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3713 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3714 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3715 | apply(drule_tac pi="[(b,aa)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3716 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3717 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3718 | apply(drule_tac pi="[(b,aa)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3719 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3720 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3721 | apply(drule_tac pi="[(b,aa)]" and x="<b>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3722 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3723 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3724 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3725 | apply(case_tac "aa=b") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3726 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3727 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3728 | apply(drule_tac x="[(a,b)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3729 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3730 | apply(drule_tac x="[(a,b)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3731 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3732 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3733 | apply(drule_tac pi="[(a,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3734 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3735 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3736 | apply(drule_tac pi="[(a,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3737 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3738 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3739 | apply(drule_tac pi="[(a,b)]" and x="<b>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3740 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3741 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3742 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3743 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3744 | apply(drule_tac x="[(a,aa)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3745 | apply(drule_tac x="b" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3746 | apply(drule_tac x="[(a,aa)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3747 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3748 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3749 | apply(drule_tac pi="[(a,aa)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3750 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3751 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3752 | apply(drule_tac pi="[(a,aa)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3753 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3754 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3755 | apply(drule_tac pi="[(a,aa)]" and x="<b>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3756 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3757 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3758 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3759 | apply(case_tac "a=b") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3760 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3761 | apply(drule_tac x="aa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3762 | apply(drule_tac x="[(b,c)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3763 | apply(drule_tac x="c" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3764 | apply(drule_tac x="[(b,c)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3765 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3766 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3767 | apply(drule_tac pi="[(b,c)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3768 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3769 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3770 | apply(drule_tac pi="[(b,c)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3771 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3772 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3773 | apply(drule_tac pi="[(b,c)]" and x="<b>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3774 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3775 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3776 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3777 | apply(case_tac "c=b") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3778 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3779 | apply(drule_tac x="aa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3780 | apply(drule_tac x="[(a,b)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3781 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3782 | apply(drule_tac x="[(a,b)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3783 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3784 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3785 | apply(drule_tac pi="[(a,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3786 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3787 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3788 | apply(drule_tac pi="[(a,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3789 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3790 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3791 | apply(drule_tac pi="[(a,b)]" and x="<b>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3792 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3793 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3794 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3795 | apply(drule_tac x="aa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3796 | apply(drule_tac x="[(a,c)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3797 | apply(drule_tac x="b" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3798 | apply(drule_tac x="[(a,c)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3799 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3800 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3801 | apply(drule_tac pi="[(a,c)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3802 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3803 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3804 | apply(drule_tac pi="[(a,c)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3805 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3806 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3807 | apply(drule_tac pi="[(a,c)]" and x="<b>:N" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3808 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3809 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3810 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3811 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3812 | lemma ANDLEFT1_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3813 | assumes a: "(x):M \<in> ANDLEFT1 (B AND C) (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3814 | obtains x' M' where "M = AndL1 (x').M' x" and "fin (AndL1 (x').M' x) x" and "(x'):M' \<in> (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3815 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3816 | apply(auto simp add: ntrm.inject alpha abs_fresh calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3817 | apply(drule_tac x="y" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3818 | apply(drule_tac x="[(x,y)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3819 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3820 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3821 | apply(drule_tac pi="[(x,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3822 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3823 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3824 | apply(drule_tac pi="[(x,y)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3825 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3826 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3827 | apply(case_tac "x=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3828 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3829 | apply(drule_tac x="y" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3830 | apply(drule_tac x="[(xa,y)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3831 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3832 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3833 | apply(drule_tac pi="[(xa,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3834 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3835 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3836 | apply(drule_tac pi="[(xa,y)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3837 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3838 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3839 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3840 | apply(case_tac "y=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3841 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3842 | apply(drule_tac x="x" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3843 | apply(drule_tac x="[(x,xa)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3844 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3845 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3846 | apply(drule_tac pi="[(x,xa)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3847 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3848 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3849 | apply(drule_tac pi="[(x,xa)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3850 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3851 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3852 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3853 | apply(drule_tac x="xa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3854 | apply(drule_tac x="[(x,y)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3855 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3856 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3857 | apply(drule_tac pi="[(x,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3858 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3859 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3860 | apply(drule_tac pi="[(x,y)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3861 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3862 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3863 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3864 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3865 | lemma ANDLEFT2_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3866 | assumes a: "(x):M \<in> ANDLEFT2 (B AND C) (\<parallel>(C)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3867 | obtains x' M' where "M = AndL2 (x').M' x" and "fin (AndL2 (x').M' x) x" and "(x'):M' \<in> (\<parallel>(C)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3868 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3869 | apply(auto simp add: ntrm.inject alpha abs_fresh calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3870 | apply(drule_tac x="y" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3871 | apply(drule_tac x="[(x,y)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3872 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3873 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3874 | apply(drule_tac pi="[(x,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3875 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3876 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3877 | apply(drule_tac pi="[(x,y)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3878 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3879 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3880 | apply(case_tac "x=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3881 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3882 | apply(drule_tac x="y" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3883 | apply(drule_tac x="[(xa,y)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3884 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3885 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3886 | apply(drule_tac pi="[(xa,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3887 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3888 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3889 | apply(drule_tac pi="[(xa,y)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3890 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3891 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3892 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3893 | apply(case_tac "y=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3894 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3895 | apply(drule_tac x="x" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3896 | apply(drule_tac x="[(x,xa)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3897 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3898 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3899 | apply(drule_tac pi="[(x,xa)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3900 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3901 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3902 | apply(drule_tac pi="[(x,xa)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3903 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3904 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3905 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3906 | apply(drule_tac x="xa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3907 | apply(drule_tac x="[(x,y)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3908 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3909 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3910 | apply(drule_tac pi="[(x,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3911 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3912 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3913 | apply(drule_tac pi="[(x,y)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3914 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3915 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3916 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3917 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3918 | lemma ORRIGHT1_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3919 | assumes a: "<a>:M \<in> ORRIGHT1 (B OR C) (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3920 | obtains a' M' where "M = OrR1 <a'>.M' a" and "fic (OrR1 <a'>.M' a) a" and "<a'>:M' \<in> (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3921 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3922 | apply(auto simp add: ctrm.inject alpha abs_fresh calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3923 | apply(drule_tac x="b" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3924 | apply(drule_tac x="[(a,b)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3925 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3926 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3927 | apply(drule_tac pi="[(a,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3928 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3929 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3930 | apply(drule_tac pi="[(a,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3931 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3932 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3933 | apply(case_tac "a=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3934 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3935 | apply(drule_tac x="b" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3936 | apply(drule_tac x="[(aa,b)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3937 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3938 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3939 | apply(drule_tac pi="[(aa,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3940 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3941 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3942 | apply(drule_tac pi="[(aa,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3943 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3944 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3945 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3946 | apply(case_tac "b=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3947 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3948 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3949 | apply(drule_tac x="[(a,aa)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3950 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3951 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3952 | apply(drule_tac pi="[(a,aa)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3953 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3954 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3955 | apply(drule_tac pi="[(a,aa)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3956 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3957 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3958 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3959 | apply(drule_tac x="aa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3960 | apply(drule_tac x="[(a,b)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3961 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3962 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3963 | apply(drule_tac pi="[(a,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3964 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3965 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3966 | apply(drule_tac pi="[(a,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3967 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3968 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3969 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3970 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3971 | lemma ORRIGHT2_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3972 | assumes a: "<a>:M \<in> ORRIGHT2 (B OR C) (\<parallel><C>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3973 | obtains a' M' where "M = OrR2 <a'>.M' a" and "fic (OrR2 <a'>.M' a) a" and "<a'>:M' \<in> (\<parallel><C>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3974 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3975 | apply(auto simp add: ctrm.inject alpha abs_fresh calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3976 | apply(drule_tac x="b" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3977 | apply(drule_tac x="[(a,b)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3978 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3979 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3980 | apply(drule_tac pi="[(a,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3981 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3982 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3983 | apply(drule_tac pi="[(a,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3984 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3985 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3986 | apply(case_tac "a=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3987 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3988 | apply(drule_tac x="b" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3989 | apply(drule_tac x="[(aa,b)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3990 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3991 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3992 | apply(drule_tac pi="[(aa,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3993 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3994 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3995 | apply(drule_tac pi="[(aa,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3996 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3997 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3998 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 3999 | apply(case_tac "b=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4000 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4001 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4002 | apply(drule_tac x="[(a,aa)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4003 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4004 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4005 | apply(drule_tac pi="[(a,aa)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4006 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4007 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4008 | apply(drule_tac pi="[(a,aa)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4009 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4010 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4011 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4012 | apply(drule_tac x="aa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4013 | apply(drule_tac x="[(a,b)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4014 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4015 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4016 | apply(drule_tac pi="[(a,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4017 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4018 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4019 | apply(drule_tac pi="[(a,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4020 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4021 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4022 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4023 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4024 | lemma ORLEFT_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4025 | assumes a: "(x):M \<in> ORLEFT (B OR C) (\<parallel>(B)\<parallel>) (\<parallel>(C)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4026 | obtains y' M' z' N' where "M = OrL (y').M' (z').N' x" and "fin (OrL (y').M' (z').N' x) x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4027 | and "(y'):M' \<in> (\<parallel>(B)\<parallel>)" and "(z'):N' \<in> (\<parallel>(C)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4028 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4029 | apply(auto simp add: ntrm.inject alpha abs_fresh calc_atm fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4030 | apply(drule_tac x="z" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4031 | apply(drule_tac x="[(x,z)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4032 | apply(drule_tac x="z" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4033 | apply(drule_tac x="[(x,z)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4034 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4035 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4036 | apply(drule_tac pi="[(x,z)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4037 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4038 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4039 | apply(drule_tac pi="[(x,z)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4040 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4041 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4042 | apply(drule_tac pi="[(x,z)]" and x="(x):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4043 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4044 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4045 | apply(case_tac "x=y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4046 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4047 | apply(drule_tac x="z" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4048 | apply(drule_tac x="[(y,z)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4049 | apply(drule_tac x="z" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4050 | apply(drule_tac x="[(y,z)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4051 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4052 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4053 | apply(drule_tac pi="[(y,z)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4054 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4055 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4056 | apply(drule_tac pi="[(y,z)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4057 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4058 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4059 | apply(drule_tac pi="[(y,z)]" and x="(y):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4060 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4061 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4062 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4063 | apply(case_tac "z=y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4064 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4065 | apply(drule_tac x="y" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4066 | apply(drule_tac x="[(x,y)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4067 | apply(drule_tac x="x" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4068 | apply(drule_tac x="[(x,y)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4069 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4070 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4071 | apply(drule_tac pi="[(x,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4072 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4073 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4074 | apply(drule_tac pi="[(x,y)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4075 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4076 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4077 | apply(drule_tac pi="[(x,y)]" and x="(y):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4078 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4079 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4080 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4081 | apply(drule_tac x="z" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4082 | apply(drule_tac x="[(x,z)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4083 | apply(drule_tac x="y" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4084 | apply(drule_tac x="[(x,z)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4085 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4086 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4087 | apply(drule_tac pi="[(x,z)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4088 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4089 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4090 | apply(drule_tac pi="[(x,z)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4091 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4092 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4093 | apply(drule_tac pi="[(x,z)]" and x="(y):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4094 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4095 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4096 | apply(case_tac "x=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4097 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4098 | apply(drule_tac x="z" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4099 | apply(drule_tac x="[(xa,z)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4100 | apply(drule_tac x="z" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4101 | apply(drule_tac x="[(xa,z)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4102 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4103 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4104 | apply(drule_tac pi="[(xa,z)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4105 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4106 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4107 | apply(drule_tac pi="[(xa,z)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4108 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4109 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4110 | apply(drule_tac pi="[(xa,z)]" and x="(xa):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4111 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4112 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4113 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4114 | apply(case_tac "z=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4115 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4116 | apply(drule_tac x="x" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4117 | apply(drule_tac x="[(x,xa)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4118 | apply(drule_tac x="xa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4119 | apply(drule_tac x="[(x,xa)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4120 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4121 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4122 | apply(drule_tac pi="[(x,xa)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4123 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4124 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4125 | apply(drule_tac pi="[(x,xa)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4126 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4127 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4128 | apply(drule_tac pi="[(x,xa)]" and x="(x):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4129 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4130 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4131 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4132 | apply(drule_tac x="xa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4133 | apply(drule_tac x="[(x,z)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4134 | apply(drule_tac x="z" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4135 | apply(drule_tac x="[(x,z)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4136 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4137 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4138 | apply(drule_tac pi="[(x,z)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4139 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4140 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4141 | apply(drule_tac pi="[(x,z)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4142 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4143 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4144 | apply(drule_tac pi="[(x,z)]" and x="(x):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4145 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4146 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4147 | apply(case_tac "x=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4148 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4149 | apply(case_tac "xa=y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4150 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4151 | apply(drule_tac x="z" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4152 | apply(drule_tac x="[(y,z)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4153 | apply(drule_tac x="z" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4154 | apply(drule_tac x="[(y,z)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4155 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4156 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4157 | apply(drule_tac pi="[(y,z)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4158 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4159 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4160 | apply(drule_tac pi="[(y,z)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4161 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4162 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4163 | apply(drule_tac pi="[(y,z)]" and x="(y):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4164 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4165 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4166 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4167 | apply(case_tac "z=y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4168 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4169 | apply(drule_tac x="y" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4170 | apply(drule_tac x="[(xa,y)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4171 | apply(drule_tac x="xa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4172 | apply(drule_tac x="[(xa,y)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4173 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4174 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4175 | apply(drule_tac pi="[(xa,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4176 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4177 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4178 | apply(drule_tac pi="[(xa,y)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4179 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4180 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4181 | apply(drule_tac pi="[(xa,y)]" and x="(y):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4182 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4183 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4184 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4185 | apply(drule_tac x="z" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4186 | apply(drule_tac x="[(xa,z)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4187 | apply(drule_tac x="y" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4188 | apply(drule_tac x="[(xa,z)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4189 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4190 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4191 | apply(drule_tac pi="[(xa,z)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4192 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4193 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4194 | apply(drule_tac pi="[(xa,z)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4195 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4196 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4197 | apply(drule_tac pi="[(xa,z)]" and x="(y):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4198 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4199 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4200 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4201 | apply(case_tac "z=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4202 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4203 | apply(case_tac "x=y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4204 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4205 | apply(drule_tac x="y" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4206 | apply(drule_tac x="[(y,xa)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4207 | apply(drule_tac x="xa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4208 | apply(drule_tac x="[(y,xa)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4209 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4210 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4211 | apply(drule_tac pi="[(y,xa)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4212 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4213 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4214 | apply(drule_tac pi="[(y,xa)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4215 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4216 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4217 | apply(drule_tac pi="[(y,xa)]" and x="(y):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4218 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4219 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4220 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4221 | apply(case_tac "xa=y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4222 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4223 | apply(drule_tac x="x" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4224 | apply(drule_tac x="[(x,y)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4225 | apply(drule_tac x="x" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4226 | apply(drule_tac x="[(x,y)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4227 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4228 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4229 | apply(drule_tac pi="[(x,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4230 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4231 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4232 | apply(drule_tac pi="[(x,y)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4233 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4234 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4235 | apply(drule_tac pi="[(x,y)]" and x="(y):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4236 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4237 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4238 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4239 | apply(drule_tac x="x" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4240 | apply(drule_tac x="[(x,xa)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4241 | apply(drule_tac x="y" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4242 | apply(drule_tac x="[(x,xa)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4243 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4244 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4245 | apply(drule_tac pi="[(x,xa)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4246 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4247 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4248 | apply(drule_tac pi="[(x,xa)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4249 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4250 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4251 | apply(drule_tac pi="[(x,xa)]" and x="(y):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4252 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4253 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4254 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4255 | apply(case_tac "x=y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4256 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4257 | apply(drule_tac x="xa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4258 | apply(drule_tac x="[(y,z)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4259 | apply(drule_tac x="z" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4260 | apply(drule_tac x="[(y,z)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4261 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4262 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4263 | apply(drule_tac pi="[(y,z)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4264 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4265 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4266 | apply(drule_tac pi="[(y,z)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4267 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4268 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4269 | apply(drule_tac pi="[(y,z)]" and x="(y):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4270 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4271 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4272 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4273 | apply(case_tac "z=y") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4274 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4275 | apply(drule_tac x="xa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4276 | apply(drule_tac x="[(x,y)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4277 | apply(drule_tac x="x" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4278 | apply(drule_tac x="[(x,y)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4279 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4280 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4281 | apply(drule_tac pi="[(x,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4282 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4283 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4284 | apply(drule_tac pi="[(x,y)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4285 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4286 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4287 | apply(drule_tac pi="[(x,y)]" and x="(y):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4288 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4289 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4290 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4291 | apply(drule_tac x="xa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4292 | apply(drule_tac x="[(x,z)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4293 | apply(drule_tac x="y" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4294 | apply(drule_tac x="[(x,z)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4295 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4296 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4297 | apply(drule_tac pi="[(x,z)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4298 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4299 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4300 | apply(drule_tac pi="[(x,z)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4301 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4302 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4303 | apply(drule_tac pi="[(x,z)]" and x="(y):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4304 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4305 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4306 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4307 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4308 | lemma IMPRIGHT_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4309 | assumes a: "<a>:M \<in> IMPRIGHT (B IMP C) (\<parallel>(B)\<parallel>) (\<parallel><C>\<parallel>) (\<parallel>(C)\<parallel>) (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4310 | obtains x' a' M' where "M = ImpR (x').<a'>.M' a" and "fic (ImpR (x').<a'>.M' a) a" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4311 |                    and "\<forall>z P. x'\<sharp>(z,P) \<and> (z):P \<in> \<parallel>(C)\<parallel> \<longrightarrow> (x'):(M'{a':=(z).P}) \<in> \<parallel>(B)\<parallel>" 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4312 |                    and "\<forall>c Q. a'\<sharp>(c,Q) \<and> <c>:Q \<in> \<parallel><B>\<parallel> \<longrightarrow> <a'>:(M'{x':=<c>.Q}) \<in> \<parallel><C>\<parallel>"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4313 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4314 | apply(auto simp add: ctrm.inject alpha abs_fresh calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4315 | apply(drule_tac x="x" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4316 | apply(drule_tac x="b" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4317 | apply(drule_tac x="[(a,b)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4318 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4319 | apply(drule_tac pi="[(a,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4320 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4321 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4322 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4323 | apply(drule_tac pi="[(a,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4324 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4325 | apply(drule_tac x="z" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4326 | apply(drule_tac x="[(a,b)]\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4327 | apply(simp add: fresh_prod fresh_left calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4328 | apply(drule_tac pi="[(a,b)]" and x="(x):M{a:=(z).([(a,b)]\<bullet>P)}" 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4329 | in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4330 | apply(perm_simp add: calc_atm csubst_eqvt CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4331 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4332 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4333 | apply(drule_tac pi="[(a,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4334 | apply(simp add: CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4335 | apply(rotate_tac 2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4336 | apply(drule_tac x="[(a,b)]\<bullet>c" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4337 | apply(drule_tac x="[(a,b)]\<bullet>Q" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4338 | apply(simp add: fresh_prod fresh_left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4339 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4340 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4341 | apply(drule_tac pi="[(a,b)]" and x="<a>:M{x:=<([(a,b)]\<bullet>c)>.([(a,b)]\<bullet>Q)}" 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4342 | in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4343 | apply(perm_simp add: nsubst_eqvt CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4344 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4345 | apply(case_tac "a=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4346 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4347 | apply(drule_tac x="x" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4348 | apply(drule_tac x="b" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4349 | apply(drule_tac x="[(aa,b)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4350 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4351 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4352 | apply(drule_tac pi="[(aa,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4353 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4354 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4355 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4356 | apply(drule_tac pi="[(a,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4357 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4358 | apply(drule_tac x="z" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4359 | apply(drule_tac x="[(a,b)]\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4360 | apply(simp add: fresh_prod fresh_left calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4361 | apply(drule_tac pi="[(a,b)]" and x="(x):M{a:=(z).([(a,b)]\<bullet>P)}" 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4362 | in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4363 | apply(perm_simp add: calc_atm csubst_eqvt CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4364 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4365 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4366 | apply(drule_tac pi="[(a,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4367 | apply(simp add: CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4368 | apply(drule_tac x="[(a,b)]\<bullet>c" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4369 | apply(drule_tac x="[(a,b)]\<bullet>Q" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4370 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4371 | apply(simp add: fresh_prod fresh_left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4372 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4373 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4374 | apply(drule_tac pi="[(a,b)]" and x="<a>:M{x:=<([(a,b)]\<bullet>c)>.([(a,b)]\<bullet>Q)}" 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4375 | in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4376 | apply(perm_simp add: nsubst_eqvt CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4377 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4378 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4379 | apply(case_tac "b=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4380 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4381 | apply(drule_tac x="x" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4382 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4383 | apply(drule_tac x="[(a,aa)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4384 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4385 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4386 | apply(drule_tac pi="[(a,aa)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4387 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4388 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4389 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4390 | apply(drule_tac pi="[(a,aa)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4391 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4392 | apply(drule_tac x="z" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4393 | apply(drule_tac x="[(a,aa)]\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4394 | apply(simp add: fresh_prod fresh_left calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4395 | apply(drule_tac pi="[(a,aa)]" and x="(x):M{aa:=(z).([(a,aa)]\<bullet>P)}" 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4396 | in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4397 | apply(perm_simp add: calc_atm csubst_eqvt CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4398 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4399 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4400 | apply(drule_tac pi="[(a,aa)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4401 | apply(simp add: CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4402 | apply(drule_tac x="[(a,aa)]\<bullet>c" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4403 | apply(drule_tac x="[(a,aa)]\<bullet>Q" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4404 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4405 | apply(simp add: fresh_prod fresh_left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4406 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4407 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4408 | apply(drule_tac pi="[(a,aa)]" and x="<aa>:M{x:=<([(a,aa)]\<bullet>c)>.([(a,aa)]\<bullet>Q)}" 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4409 | in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4410 | apply(perm_simp add: nsubst_eqvt CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4411 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4412 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4413 | apply(drule_tac x="x" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4414 | apply(drule_tac x="aa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4415 | apply(drule_tac x="[(a,b)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4416 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4417 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4418 | apply(drule_tac pi="[(a,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4419 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4420 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4421 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4422 | apply(drule_tac pi="[(a,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4423 | apply(simp add: calc_atm CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4424 | apply(drule_tac x="z" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4425 | apply(drule_tac x="[(a,b)]\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4426 | apply(simp add: fresh_prod fresh_left calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4427 | apply(drule_tac pi="[(a,b)]" and x="(x):M{aa:=(z).([(a,b)]\<bullet>P)}" 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4428 | in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4429 | apply(perm_simp add: calc_atm csubst_eqvt CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4430 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4431 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4432 | apply(drule_tac pi="[(a,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4433 | apply(simp add: CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4434 | apply(drule_tac x="[(a,b)]\<bullet>c" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4435 | apply(drule_tac x="[(a,b)]\<bullet>Q" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4436 | apply(simp add: fresh_prod fresh_left) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4437 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4438 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4439 | apply(drule_tac pi="[(a,b)]" and x="<aa>:M{x:=<([(a,b)]\<bullet>c)>.([(a,b)]\<bullet>Q)}" 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4440 | in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4441 | apply(perm_simp add: nsubst_eqvt CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4442 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4443 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4444 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4445 | lemma IMPLEFT_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4446 | assumes a: "(x):M \<in> IMPLEFT (B IMP C) (\<parallel><B>\<parallel>) (\<parallel>(C)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4447 | obtains x' a' M' N' where "M = ImpL <a'>.M' (x').N' x" and "fin (ImpL <a'>.M' (x').N' x) x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4448 | and "<a'>:M' \<in> \<parallel><B>\<parallel>" and "(x'):N' \<in> \<parallel>(C)\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4449 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4450 | apply(auto simp add: ntrm.inject alpha abs_fresh calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4451 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4452 | apply(drule_tac x="[(x,y)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4453 | apply(drule_tac x="y" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4454 | apply(drule_tac x="[(x,y)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4455 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4456 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4457 | apply(drule_tac pi="[(x,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4458 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4459 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4460 | apply(drule_tac pi="[(x,y)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4461 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4462 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4463 | apply(drule_tac pi="[(x,y)]" and x="(x):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4464 | apply(perm_simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4465 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4466 | apply(case_tac "x=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4467 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4468 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4469 | apply(drule_tac x="[(xa,y)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4470 | apply(drule_tac x="y" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4471 | apply(drule_tac x="[(xa,y)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4472 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4473 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4474 | apply(drule_tac pi="[(xa,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4475 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4476 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4477 | apply(drule_tac pi="[(xa,y)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4478 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4479 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4480 | apply(drule_tac pi="[(xa,y)]" and x="(xa):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4481 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4482 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4483 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4484 | apply(case_tac "y=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4485 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4486 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4487 | apply(drule_tac x="[(x,xa)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4488 | apply(drule_tac x="x" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4489 | apply(drule_tac x="[(x,xa)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4490 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4491 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4492 | apply(drule_tac pi="[(x,xa)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4493 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4494 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4495 | apply(drule_tac pi="[(x,xa)]" and x="<a>:M" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4496 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4497 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4498 | apply(drule_tac pi="[(x,xa)]" and x="(xa):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4499 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4500 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4501 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4502 | apply(drule_tac x="a" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4503 | apply(drule_tac x="[(x,y)]\<bullet>M" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4504 | apply(drule_tac x="xa" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4505 | apply(drule_tac x="[(x,y)]\<bullet>N" in meta_spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4506 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4507 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4508 | apply(drule_tac pi="[(x,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4509 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4510 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4511 | apply(drule_tac pi="[(x,y)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4512 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4513 | apply(drule meta_mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4514 | apply(drule_tac pi="[(x,y)]" and x="(xa):N" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4515 | apply(simp add: calc_atm CAND_eqvt_name) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4516 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4517 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4518 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4519 | lemma CANDs_alpha: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4520 | shows "<a>:M \<in> (\<parallel><B>\<parallel>) \<Longrightarrow> [a].M = [b].N \<Longrightarrow> <b>:N \<in> (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4521 | and "(x):M \<in> (\<parallel>(B)\<parallel>) \<Longrightarrow> [x].M = [y].N \<Longrightarrow> (y):N \<in> (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4522 | apply(auto simp add: alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4523 | apply(drule_tac pi="[(a,b)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4524 | apply(perm_simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4525 | apply(drule_tac pi="[(x,y)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4526 | apply(perm_simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4527 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4528 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4529 | lemma CAND_NotR_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4530 | assumes a: "<a>:NotR (x).M a \<in> (\<parallel><B>\<parallel>)" "<a>:NotR (x).M a \<notin> BINDINGc B (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4531 | shows "\<exists>B'. B = NOT B' \<and> (x):M \<in> (\<parallel>(B')\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4532 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4533 | apply(nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4534 | apply(simp_all add: ty.inject AXIOMSc_def ctrm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4535 | apply(auto intro: CANDs_alpha simp add: trm.inject calc_atm abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4536 | apply(drule_tac pi="[(a,aa)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4537 | apply(auto simp add: CAND_eqvt_coname calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4538 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4539 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4540 | lemma CAND_NotL_elim_aux: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4541 | assumes a: "(x):NotL <a>.M x \<in> NEGn B (\<parallel><B>\<parallel>)" "(x):NotL <a>.M x \<notin> BINDINGn B (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4542 | shows "\<exists>B'. B = NOT B' \<and> <a>:M \<in> (\<parallel><B'>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4543 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4544 | apply(nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4545 | apply(simp_all add: ty.inject AXIOMSn_def ntrm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4546 | apply(auto intro: CANDs_alpha simp add: trm.inject calc_atm abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4547 | apply(drule_tac pi="[(x,xa)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4548 | apply(auto simp add: CAND_eqvt_name calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4549 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4550 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4551 | lemmas CAND_NotL_elim = CAND_NotL_elim_aux[OF NEG_elim(2)] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4552 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4553 | lemma CAND_AndR_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4554 | assumes a: "<a>:AndR <b>.M <c>.N a \<in> (\<parallel><B>\<parallel>)" "<a>:AndR <b>.M <c>.N a \<notin> BINDINGc B (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4555 | shows "\<exists>B1 B2. B = B1 AND B2 \<and> <b>:M \<in> (\<parallel><B1>\<parallel>) \<and> <c>:N \<in> (\<parallel><B2>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4556 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4557 | apply(nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4558 | apply(simp_all add: ty.inject AXIOMSc_def ctrm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4559 | apply(auto intro: CANDs_alpha simp add: trm.inject calc_atm abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4560 | apply(drule_tac pi="[(a,ca)]" and x="<a>:Ma" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4561 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4562 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4563 | apply(drule_tac pi="[(a,ca)]" and x="<a>:Na" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4564 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4565 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4566 | apply(drule_tac pi="[(a,ca)]" and x="<a>:Ma" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4567 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4568 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4569 | apply(case_tac "a=ba") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4570 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4571 | apply(drule_tac pi="[(ba,ca)]" and x="<ba>:Na" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4572 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4573 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4574 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4575 | apply(case_tac "ca=ba") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4576 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4577 | apply(drule_tac pi="[(a,ba)]" and x="<ba>:Na" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4578 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4579 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4580 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4581 | apply(drule_tac pi="[(a,ca)]" and x="<ba>:Na" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4582 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4583 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4584 | apply(case_tac "a=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4585 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4586 | apply(drule_tac pi="[(aa,ca)]" and x="<aa>:Ma" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4587 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4588 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4589 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4590 | apply(case_tac "ca=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4591 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4592 | apply(drule_tac pi="[(a,aa)]" and x="<aa>:Ma" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4593 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4594 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4595 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4596 | apply(drule_tac pi="[(a,ca)]" and x="<aa>:Ma" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4597 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4598 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4599 | apply(drule_tac pi="[(a,ca)]" and x="<a>:Na" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4600 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4601 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4602 | apply(case_tac "a=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4603 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4604 | apply(drule_tac pi="[(aa,ca)]" and x="<aa>:Ma" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4605 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4606 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4607 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4608 | apply(case_tac "ca=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4609 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4610 | apply(drule_tac pi="[(a,aa)]" and x="<aa>:Ma" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4611 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4612 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4613 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4614 | apply(drule_tac pi="[(a,ca)]" and x="<aa>:Ma" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4615 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4616 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4617 | apply(case_tac "a=ba") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4618 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4619 | apply(drule_tac pi="[(ba,ca)]" and x="<ba>:Na" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4620 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4621 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4622 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4623 | apply(case_tac "ca=ba") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4624 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4625 | apply(drule_tac pi="[(a,ba)]" and x="<ba>:Na" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4626 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4627 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4628 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4629 | apply(drule_tac pi="[(a,ca)]" and x="<ba>:Na" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4630 | apply(simp add: CAND_eqvt_coname calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4631 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4632 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4633 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4634 | lemma CAND_OrR1_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4635 | assumes a: "<a>:OrR1 <b>.M a \<in> (\<parallel><B>\<parallel>)" "<a>:OrR1 <b>.M a \<notin> BINDINGc B (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4636 | shows "\<exists>B1 B2. B = B1 OR B2 \<and> <b>:M \<in> (\<parallel><B1>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4637 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4638 | apply(nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4639 | apply(simp_all add: ty.inject AXIOMSc_def ctrm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4640 | apply(auto intro: CANDs_alpha simp add: trm.inject calc_atm abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4641 | apply(drule_tac pi="[(a,ba)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4642 | apply(auto simp add: CAND_eqvt_coname calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4643 | apply(case_tac "a=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4644 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4645 | apply(drule_tac pi="[(aa,ba)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4646 | apply(auto simp add: CAND_eqvt_coname calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4647 | apply(case_tac "ba=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4648 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4649 | apply(drule_tac pi="[(a,aa)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4650 | apply(auto simp add: CAND_eqvt_coname calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4651 | apply(drule_tac pi="[(a,ba)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4652 | apply(auto simp add: CAND_eqvt_coname calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4653 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4654 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4655 | lemma CAND_OrR2_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4656 | assumes a: "<a>:OrR2 <b>.M a \<in> (\<parallel><B>\<parallel>)" "<a>:OrR2 <b>.M a \<notin> BINDINGc B (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4657 | shows "\<exists>B1 B2. B = B1 OR B2 \<and> <b>:M \<in> (\<parallel><B2>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4658 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4659 | apply(nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4660 | apply(simp_all add: ty.inject AXIOMSc_def ctrm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4661 | apply(auto intro: CANDs_alpha simp add: trm.inject calc_atm abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4662 | apply(drule_tac pi="[(a,ba)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4663 | apply(auto simp add: CAND_eqvt_coname calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4664 | apply(case_tac "a=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4665 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4666 | apply(drule_tac pi="[(aa,ba)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4667 | apply(auto simp add: CAND_eqvt_coname calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4668 | apply(case_tac "ba=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4669 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4670 | apply(drule_tac pi="[(a,aa)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4671 | apply(auto simp add: CAND_eqvt_coname calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4672 | apply(drule_tac pi="[(a,ba)]" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4673 | apply(auto simp add: CAND_eqvt_coname calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4674 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4675 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4676 | lemma CAND_OrL_elim_aux: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4677 | assumes a: "(x):(OrL (y).M (z).N x) \<in> NEGn B (\<parallel><B>\<parallel>)" "(x):(OrL (y).M (z).N x) \<notin> BINDINGn B (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4678 | shows "\<exists>B1 B2. B = B1 OR B2 \<and> (y):M \<in> (\<parallel>(B1)\<parallel>) \<and> (z):N \<in> (\<parallel>(B2)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4679 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4680 | apply(nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4681 | apply(simp_all add: ty.inject AXIOMSn_def ntrm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4682 | apply(auto intro: CANDs_alpha simp add: trm.inject calc_atm abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4683 | apply(drule_tac pi="[(x,za)]" and x="(x):Ma" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4684 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4685 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4686 | apply(drule_tac pi="[(x,za)]" and x="(x):Nb" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4687 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4688 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4689 | apply(drule_tac pi="[(x,za)]" and x="(x):Ma" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4690 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4691 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4692 | apply(case_tac "x=ya") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4693 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4694 | apply(drule_tac pi="[(ya,za)]" and x="(ya):Nb" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4695 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4696 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4697 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4698 | apply(case_tac "za=ya") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4699 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4700 | apply(drule_tac pi="[(x,ya)]" and x="(ya):Nb" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4701 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4702 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4703 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4704 | apply(drule_tac pi="[(x,za)]" and x="(ya):Nb" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4705 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4706 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4707 | apply(case_tac "x=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4708 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4709 | apply(drule_tac pi="[(xa,za)]" and x="(xa):Ma" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4710 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4711 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4712 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4713 | apply(case_tac "za=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4714 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4715 | apply(drule_tac pi="[(x,xa)]" and x="(xa):Ma" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4716 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4717 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4718 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4719 | apply(drule_tac pi="[(x,za)]" and x="(xa):Ma" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4720 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4721 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4722 | apply(drule_tac pi="[(x,za)]" and x="(x):Nb" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4723 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4724 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4725 | apply(case_tac "x=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4726 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4727 | apply(drule_tac pi="[(xa,za)]" and x="(xa):Ma" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4728 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4729 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4730 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4731 | apply(case_tac "za=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4732 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4733 | apply(drule_tac pi="[(x,xa)]" and x="(xa):Ma" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4734 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4735 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4736 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4737 | apply(drule_tac pi="[(x,za)]" and x="(xa):Ma" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4738 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4739 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4740 | apply(case_tac "x=ya") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4741 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4742 | apply(drule_tac pi="[(ya,za)]" and x="(ya):Nb" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4743 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4744 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4745 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4746 | apply(case_tac "za=ya") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4747 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4748 | apply(drule_tac pi="[(x,ya)]" and x="(ya):Nb" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4749 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4750 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4751 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4752 | apply(drule_tac pi="[(x,za)]" and x="(ya):Nb" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4753 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4754 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4755 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4756 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4757 | lemmas CAND_OrL_elim = CAND_OrL_elim_aux[OF NEG_elim(2)] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4758 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4759 | lemma CAND_AndL1_elim_aux: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4760 | assumes a: "(x):(AndL1 (y).M x) \<in> NEGn B (\<parallel><B>\<parallel>)" "(x):(AndL1 (y).M x) \<notin> BINDINGn B (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4761 | shows "\<exists>B1 B2. B = B1 AND B2 \<and> (y):M \<in> (\<parallel>(B1)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4762 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4763 | apply(nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4764 | apply(simp_all add: ty.inject AXIOMSn_def ntrm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4765 | apply(auto intro: CANDs_alpha simp add: trm.inject calc_atm abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4766 | apply(drule_tac pi="[(x,ya)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4767 | apply(auto simp add: CAND_eqvt_name calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4768 | apply(case_tac "x=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4769 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4770 | apply(drule_tac pi="[(xa,ya)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4771 | apply(auto simp add: CAND_eqvt_name calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4772 | apply(case_tac "ya=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4773 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4774 | apply(drule_tac pi="[(x,xa)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4775 | apply(auto simp add: CAND_eqvt_name calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4776 | apply(drule_tac pi="[(x,ya)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4777 | apply(auto simp add: CAND_eqvt_name calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4778 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4779 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4780 | lemmas CAND_AndL1_elim = CAND_AndL1_elim_aux[OF NEG_elim(2)] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4781 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4782 | lemma CAND_AndL2_elim_aux: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4783 | assumes a: "(x):(AndL2 (y).M x) \<in> NEGn B (\<parallel><B>\<parallel>)" "(x):(AndL2 (y).M x) \<notin> BINDINGn B (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4784 | shows "\<exists>B1 B2. B = B1 AND B2 \<and> (y):M \<in> (\<parallel>(B2)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4785 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4786 | apply(nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4787 | apply(simp_all add: ty.inject AXIOMSn_def ntrm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4788 | apply(auto intro: CANDs_alpha simp add: trm.inject calc_atm abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4789 | apply(drule_tac pi="[(x,ya)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4790 | apply(auto simp add: CAND_eqvt_name calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4791 | apply(case_tac "x=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4792 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4793 | apply(drule_tac pi="[(xa,ya)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4794 | apply(auto simp add: CAND_eqvt_name calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4795 | apply(case_tac "ya=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4796 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4797 | apply(drule_tac pi="[(x,xa)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4798 | apply(auto simp add: CAND_eqvt_name calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4799 | apply(drule_tac pi="[(x,ya)]" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4800 | apply(auto simp add: CAND_eqvt_name calc_atm intro: CANDs_alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4801 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4802 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4803 | lemmas CAND_AndL2_elim = CAND_AndL2_elim_aux[OF NEG_elim(2)] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4804 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4805 | lemma CAND_ImpL_elim_aux: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4806 | assumes a: "(x):(ImpL <a>.M (z).N x) \<in> NEGn B (\<parallel><B>\<parallel>)" "(x):(ImpL <a>.M (z).N x) \<notin> BINDINGn B (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4807 | shows "\<exists>B1 B2. B = B1 IMP B2 \<and> <a>:M \<in> (\<parallel><B1>\<parallel>) \<and> (z):N \<in> (\<parallel>(B2)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4808 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4809 | apply(nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4810 | apply(simp_all add: ty.inject AXIOMSn_def ntrm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4811 | apply(auto intro: CANDs_alpha simp add: trm.inject calc_atm abs_fresh fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4812 | apply(drule_tac pi="[(x,y)]" and x="<aa>:Ma" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4813 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4814 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4815 | apply(drule_tac pi="[(x,y)]" and x="(x):Nb" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4816 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4817 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4818 | apply(drule_tac pi="[(x,y)]" and x="<aa>:Ma" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4819 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4820 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4821 | apply(case_tac "x=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4822 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4823 | apply(drule_tac pi="[(xa,y)]" and x="(xa):Nb" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4824 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4825 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4826 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4827 | apply(case_tac "y=xa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4828 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4829 | apply(drule_tac pi="[(x,xa)]" and x="(xa):Nb" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4830 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4831 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4832 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4833 | apply(drule_tac pi="[(x,y)]" and x="(xa):Nb" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4834 | apply(simp add: CAND_eqvt_name calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4835 | apply(auto intro: CANDs_alpha)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4836 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4837 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4838 | lemmas CAND_ImpL_elim = CAND_ImpL_elim_aux[OF NEG_elim(2)] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4839 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4840 | lemma CAND_ImpR_elim: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4841 | assumes a: "<a>:ImpR (x).<b>.M a \<in> (\<parallel><B>\<parallel>)" "<a>:ImpR (x).<b>.M a \<notin> BINDINGc B (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4842 | shows "\<exists>B1 B2. B = B1 IMP B2 \<and> | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4843 |                  (\<forall>z P. x\<sharp>(z,P) \<and> (z):P \<in> \<parallel>(B2)\<parallel> \<longrightarrow> (x):(M{b:=(z).P}) \<in> \<parallel>(B1)\<parallel>) \<and>
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4844 |                  (\<forall>c Q. b\<sharp>(c,Q) \<and> <c>:Q \<in> \<parallel><B1>\<parallel> \<longrightarrow> <b>:(M{x:=<c>.Q}) \<in> \<parallel><B2>\<parallel>)" 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4845 | using a | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4846 | apply(nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4847 | apply(simp_all add: ty.inject AXIOMSc_def ctrm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4848 | apply(auto intro: CANDs_alpha simp add: trm.inject calc_atm abs_fresh fresh_atm fresh_prod fresh_bij) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4849 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4850 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4851 | apply(drule_tac a="ca" and z="c" in alpha_name_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4852 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4853 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4854 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4855 | apply(drule_tac x="[(xa,c)]\<bullet>[(aa,ca)]\<bullet>[(b,ca)]\<bullet>[(x,c)]\<bullet>z" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4856 | apply(drule_tac x="[(xa,c)]\<bullet>[(aa,ca)]\<bullet>[(b,ca)]\<bullet>[(x,c)]\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4857 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4858 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4859 | apply(auto simp add: calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4860 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4861 | apply(auto simp add: fresh_left calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4862 | apply(drule_tac pi="[(x,c)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4863 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4864 | apply(drule_tac pi="[(b,ca)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4865 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4866 | apply(drule_tac pi="[(aa,ca)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4867 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4868 | apply(drule_tac pi="[(xa,c)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4869 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4870 | apply(drule_tac pi="[(xa,c)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4871 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4872 | apply(drule_tac pi="[(aa,ca)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4873 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4874 | apply(drule_tac pi="[(b,ca)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4875 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4876 | apply(drule_tac pi="[(x,c)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4877 | apply(perm_simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4878 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4879 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4880 | apply(drule_tac a="cb" and z="ca" in alpha_name_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4881 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4882 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4883 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4884 | apply(drule_tac x="[(xa,ca)]\<bullet>[(aa,cb)]\<bullet>[(b,cb)]\<bullet>[(x,ca)]\<bullet>c" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4885 | apply(drule_tac x="[(xa,ca)]\<bullet>[(aa,cb)]\<bullet>[(b,cb)]\<bullet>[(x,ca)]\<bullet>Q" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4886 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4887 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4888 | apply(auto simp add: calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4889 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4890 | apply(auto simp add: fresh_left calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4891 | apply(drule_tac pi="[(x,ca)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4892 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4893 | apply(drule_tac pi="[(b,cb)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4894 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4895 | apply(drule_tac pi="[(aa,cb)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4896 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4897 | apply(drule_tac pi="[(xa,ca)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4898 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4899 | apply(drule_tac pi="[(xa,ca)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4900 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4901 | apply(drule_tac pi="[(aa,cb)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4902 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4903 | apply(drule_tac pi="[(b,cb)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4904 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4905 | apply(drule_tac pi="[(x,ca)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4906 | apply(perm_simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4907 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4908 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4909 | apply(drule_tac a="ca" and z="c" in alpha_name_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4910 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4911 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4912 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4913 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4914 | apply(drule_tac x="[(a,ba)]\<bullet>[(xa,c)]\<bullet>[(ba,ca)]\<bullet>[(b,ca)]\<bullet>[(x,c)]\<bullet>z" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4915 | apply(drule_tac x="[(a,ba)]\<bullet>[(xa,c)]\<bullet>[(ba,ca)]\<bullet>[(b,ca)]\<bullet>[(x,c)]\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4916 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4917 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4918 | apply(auto simp add: calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4919 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4920 | apply(auto simp add: fresh_left calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4921 | apply(drule_tac pi="[(x,c)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4922 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4923 | apply(drule_tac pi="[(b,ca)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4924 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4925 | apply(drule_tac pi="[(ba,ca)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4926 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4927 | apply(drule_tac pi="[(xa,c)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4928 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4929 | apply(drule_tac pi="[(a,ba)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4930 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4931 | apply(drule_tac pi="[(a,ba)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4932 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4933 | apply(drule_tac pi="[(xa,c)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4934 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4935 | apply(drule_tac pi="[(ba,ca)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4936 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4937 | apply(drule_tac pi="[(b,ca)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4938 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4939 | apply(drule_tac pi="[(x,c)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4940 | apply(perm_simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4941 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4942 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4943 | apply(drule_tac a="cb" and z="ca" in alpha_name_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4944 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4945 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4946 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4947 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4948 | apply(drule_tac x="[(a,ba)]\<bullet>[(xa,ca)]\<bullet>[(ba,cb)]\<bullet>[(b,cb)]\<bullet>[(x,ca)]\<bullet>c" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4949 | apply(drule_tac x="[(a,ba)]\<bullet>[(xa,ca)]\<bullet>[(ba,cb)]\<bullet>[(b,cb)]\<bullet>[(x,ca)]\<bullet>Q" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4950 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4951 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4952 | apply(auto simp add: calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4953 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4954 | apply(auto simp add: fresh_left calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4955 | apply(drule_tac pi="[(x,ca)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4956 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4957 | apply(drule_tac pi="[(b,cb)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4958 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4959 | apply(drule_tac pi="[(ba,cb)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4960 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4961 | apply(drule_tac pi="[(xa,ca)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4962 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4963 | apply(drule_tac pi="[(a,ba)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4964 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4965 | apply(drule_tac pi="[(a,ba)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4966 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4967 | apply(drule_tac pi="[(xa,ca)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4968 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4969 | apply(drule_tac pi="[(ba,cb)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4970 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4971 | apply(drule_tac pi="[(b,cb)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4972 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4973 | apply(drule_tac pi="[(x,ca)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4974 | apply(perm_simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4975 | apply(case_tac "a=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4976 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4977 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4978 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4979 | apply(drule_tac a="ca" and z="c" in alpha_name_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4980 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4981 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4982 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4983 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4984 | apply(drule_tac x="[(aa,ba)]\<bullet>[(xa,c)]\<bullet>[(ba,ca)]\<bullet>[(b,ca)]\<bullet>[(x,c)]\<bullet>z" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4985 | apply(drule_tac x="[(aa,ba)]\<bullet>[(xa,c)]\<bullet>[(ba,ca)]\<bullet>[(b,ca)]\<bullet>[(x,c)]\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4986 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4987 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4988 | apply(auto simp add: calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4989 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4990 | apply(auto simp add: fresh_left calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4991 | apply(drule_tac pi="[(x,c)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4992 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4993 | apply(drule_tac pi="[(b,ca)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4994 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4995 | apply(drule_tac pi="[(ba,ca)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4996 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4997 | apply(drule_tac pi="[(xa,c)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4998 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 4999 | apply(drule_tac pi="[(aa,ba)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5000 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5001 | apply(drule_tac pi="[(aa,ba)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5002 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5003 | apply(drule_tac pi="[(xa,c)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5004 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5005 | apply(drule_tac pi="[(ba,ca)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5006 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5007 | apply(drule_tac pi="[(b,ca)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5008 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5009 | apply(drule_tac pi="[(x,c)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5010 | apply(perm_simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5011 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5012 | apply(case_tac "ba=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5013 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5014 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5015 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5016 | apply(drule_tac a="ca" and z="c" in alpha_name_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5017 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5018 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5019 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5020 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5021 | apply(drule_tac x="[(a,aa)]\<bullet>[(xa,c)]\<bullet>[(a,ca)]\<bullet>[(b,ca)]\<bullet>[(x,c)]\<bullet>z" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5022 | apply(drule_tac x="[(a,aa)]\<bullet>[(xa,c)]\<bullet>[(a,ca)]\<bullet>[(b,ca)]\<bullet>[(x,c)]\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5023 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5024 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5025 | apply(auto simp add: calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5026 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5027 | apply(auto simp add: fresh_left calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5028 | apply(drule_tac pi="[(x,c)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5029 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5030 | apply(drule_tac pi="[(b,ca)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5031 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5032 | apply(drule_tac pi="[(a,ca)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5033 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5034 | apply(drule_tac pi="[(xa,c)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5035 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5036 | apply(drule_tac pi="[(a,aa)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5037 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5038 | apply(drule_tac pi="[(a,aa)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5039 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5040 | apply(drule_tac pi="[(xa,c)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5041 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5042 | apply(drule_tac pi="[(a,ca)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5043 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5044 | apply(drule_tac pi="[(b,ca)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5045 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5046 | apply(drule_tac pi="[(x,c)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5047 | apply(perm_simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5048 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5049 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5050 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5051 | apply(drule_tac a="ca" and z="c" in alpha_name_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5052 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5053 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5054 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5055 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5056 | apply(drule_tac x="[(a,ba)]\<bullet>[(xa,c)]\<bullet>[(aa,ca)]\<bullet>[(b,ca)]\<bullet>[(x,c)]\<bullet>z" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5057 | apply(drule_tac x="[(a,ba)]\<bullet>[(xa,c)]\<bullet>[(aa,ca)]\<bullet>[(b,ca)]\<bullet>[(x,c)]\<bullet>P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5058 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5059 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5060 | apply(auto simp add: calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5061 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5062 | apply(auto simp add: fresh_left calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5063 | apply(drule_tac pi="[(x,c)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5064 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5065 | apply(drule_tac pi="[(b,ca)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5066 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5067 | apply(drule_tac pi="[(aa,ca)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5068 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5069 | apply(drule_tac pi="[(xa,c)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5070 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5071 | apply(drule_tac pi="[(a,ba)]" and X="\<parallel>(ty2)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5072 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5073 | apply(drule_tac pi="[(a,ba)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5074 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5075 | apply(drule_tac pi="[(xa,c)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5076 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5077 | apply(drule_tac pi="[(aa,ca)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5078 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5079 | apply(drule_tac pi="[(b,ca)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5080 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5081 | apply(drule_tac pi="[(x,c)]" and X="\<parallel>(ty1)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5082 | apply(perm_simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5083 | apply(case_tac "a=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5084 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5085 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5086 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5087 | apply(drule_tac a="cb" and z="ca" in alpha_name_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5088 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5089 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5090 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5091 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5092 | apply(drule_tac x="[(aa,ba)]\<bullet>[(xa,ca)]\<bullet>[(ba,cb)]\<bullet>[(b,cb)]\<bullet>[(x,ca)]\<bullet>c" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5093 | apply(drule_tac x="[(aa,ba)]\<bullet>[(xa,ca)]\<bullet>[(ba,cb)]\<bullet>[(b,cb)]\<bullet>[(x,ca)]\<bullet>Q" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5094 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5095 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5096 | apply(auto simp add: calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5097 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5098 | apply(auto simp add: fresh_left calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5099 | apply(drule_tac pi="[(x,ca)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5100 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5101 | apply(drule_tac pi="[(b,cb)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5102 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5103 | apply(drule_tac pi="[(ba,cb)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5104 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5105 | apply(drule_tac pi="[(xa,ca)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5106 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5107 | apply(drule_tac pi="[(aa,ba)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5108 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5109 | apply(drule_tac pi="[(aa,ba)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5110 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5111 | apply(drule_tac pi="[(xa,ca)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5112 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5113 | apply(drule_tac pi="[(ba,cb)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5114 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5115 | apply(drule_tac pi="[(b,cb)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5116 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5117 | apply(drule_tac pi="[(x,ca)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5118 | apply(perm_simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5119 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5120 | apply(case_tac "ba=aa") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5121 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5122 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5123 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5124 | apply(drule_tac a="cb" and z="ca" in alpha_name_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5125 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5126 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5127 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5128 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5129 | apply(drule_tac x="[(a,aa)]\<bullet>[(xa,ca)]\<bullet>[(a,cb)]\<bullet>[(b,cb)]\<bullet>[(x,ca)]\<bullet>c" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5130 | apply(drule_tac x="[(a,aa)]\<bullet>[(xa,ca)]\<bullet>[(a,cb)]\<bullet>[(b,cb)]\<bullet>[(x,ca)]\<bullet>Q" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5131 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5132 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5133 | apply(auto simp add: calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5134 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5135 | apply(auto simp add: fresh_left calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5136 | apply(drule_tac pi="[(x,ca)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5137 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5138 | apply(drule_tac pi="[(b,cb)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5139 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5140 | apply(drule_tac pi="[(a,cb)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5141 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5142 | apply(drule_tac pi="[(xa,ca)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5143 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5144 | apply(drule_tac pi="[(a,aa)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5145 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5146 | apply(drule_tac pi="[(a,aa)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5147 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5148 | apply(drule_tac pi="[(xa,ca)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5149 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5150 | apply(drule_tac pi="[(a,cb)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5151 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5152 | apply(drule_tac pi="[(b,cb)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5153 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5154 | apply(drule_tac pi="[(x,ca)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5155 | apply(perm_simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5156 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5157 | apply(generate_fresh "name") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5158 | apply(generate_fresh "coname") | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5159 | apply(drule_tac a="cb" and z="ca" in alpha_name_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5160 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5161 | apply(simp add: fresh_left calc_atm fresh_prod fresh_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5162 | apply(auto)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5163 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5164 | apply(drule_tac x="[(a,ba)]\<bullet>[(xa,ca)]\<bullet>[(aa,cb)]\<bullet>[(b,cb)]\<bullet>[(x,ca)]\<bullet>c" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5165 | apply(drule_tac x="[(a,ba)]\<bullet>[(xa,ca)]\<bullet>[(aa,cb)]\<bullet>[(b,cb)]\<bullet>[(x,ca)]\<bullet>Q" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5166 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5167 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5168 | apply(auto simp add: calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5169 | apply(rule conjI) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5170 | apply(auto simp add: fresh_left calc_atm fresh_prod fresh_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5171 | apply(drule_tac pi="[(x,ca)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5172 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5173 | apply(drule_tac pi="[(b,cb)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5174 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5175 | apply(drule_tac pi="[(aa,cb)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5176 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5177 | apply(drule_tac pi="[(xa,ca)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5178 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5179 | apply(drule_tac pi="[(a,ba)]" and X="\<parallel><ty1>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5180 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5181 | apply(drule_tac pi="[(a,ba)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5182 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5183 | apply(drule_tac pi="[(xa,ca)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5184 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5185 | apply(drule_tac pi="[(aa,cb)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5186 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5187 | apply(drule_tac pi="[(b,cb)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_coname_inst, OF at_coname_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5188 | apply(simp add: CAND_eqvt_name CAND_eqvt_coname) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5189 | apply(drule_tac pi="[(x,ca)]" and X="\<parallel><ty2>\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst]) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5190 | apply(perm_simp add: CAND_eqvt_name CAND_eqvt_coname csubst_eqvt nsubst_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5191 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5192 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5193 | text {* Main lemma 1 *}
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5194 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5195 | lemma AXIOMS_imply_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5196 | shows "<a>:M \<in> AXIOMSc B \<Longrightarrow> SNa M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5197 | and "(x):M \<in> AXIOMSn B \<Longrightarrow> SNa M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5198 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5199 | apply(auto simp add: AXIOMSn_def AXIOMSc_def ntrm.inject ctrm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5200 | apply(rule Ax_in_SNa)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5201 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5202 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5203 | lemma BINDING_imply_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5204 | shows "<a>:M \<in> BINDINGc B (\<parallel>(B)\<parallel>) \<Longrightarrow> SNa M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5205 | and "(x):M \<in> BINDINGn B (\<parallel><B>\<parallel>) \<Longrightarrow> SNa M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5206 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5207 | apply(auto simp add: BINDINGn_def BINDINGc_def ntrm.inject ctrm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5208 | apply(drule_tac x="x" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5209 | apply(drule_tac x="Ax x a" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5210 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5211 | apply(rule Ax_in_CANDs) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5212 | apply(drule a_star_preserves_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5213 | apply(rule subst_with_ax2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5214 | apply(simp add: crename_id) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5215 | apply(drule_tac x="x" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5216 | apply(drule_tac x="Ax x aa" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5217 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5218 | apply(rule Ax_in_CANDs) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5219 | apply(drule a_star_preserves_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5220 | apply(rule subst_with_ax2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5221 | apply(simp add: crename_id SNa_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5222 | apply(drule_tac x="a" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5223 | apply(drule_tac x="Ax x a" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5224 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5225 | apply(rule Ax_in_CANDs) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5226 | apply(drule a_star_preserves_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5227 | apply(rule subst_with_ax1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5228 | apply(simp add: nrename_id) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5229 | apply(drule_tac x="a" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5230 | apply(drule_tac x="Ax xa a" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5231 | apply(drule mp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5232 | apply(rule Ax_in_CANDs) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5233 | apply(drule a_star_preserves_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5234 | apply(rule subst_with_ax1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5235 | apply(simp add: nrename_id SNa_eqvt) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5236 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5237 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5238 | lemma CANDs_imply_SNa: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5239 | shows "<a>:M \<in> \<parallel><B>\<parallel> \<Longrightarrow> SNa M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5240 | and "(x):M \<in> \<parallel>(B)\<parallel> \<Longrightarrow> SNa M" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5241 | proof(induct B arbitrary: a x M rule: ty.induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5242 | case (PR X) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5243 |   { case 1 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5244 | have "<a>:M \<in> \<parallel><PR X>\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5245 | then have "<a>:M \<in> NEGc (PR X) (\<parallel>(PR X)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5246 | then have "<a>:M \<in> AXIOMSc (PR X) \<union> BINDINGc (PR X) (\<parallel>(PR X)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5247 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5248 |     { assume "<a>:M \<in> AXIOMSc (PR X)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5249 | then have "SNa M" by (simp add: AXIOMS_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5250 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5251 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5252 |     { assume "<a>:M \<in> BINDINGc (PR X) (\<parallel>(PR X)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5253 | then have "SNa M" by (simp add: BINDING_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5254 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5255 | ultimately show "SNa M" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5256 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5257 | case 2 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5258 | have "(x):M \<in> (\<parallel>(PR X)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5259 | then have "(x):M \<in> NEGn (PR X) (\<parallel><PR X>\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5260 | then have "(x):M \<in> AXIOMSn (PR X) \<union> BINDINGn (PR X) (\<parallel><PR X>\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5261 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5262 |     { assume "(x):M \<in> AXIOMSn (PR X)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5263 | then have "SNa M" by (simp add: AXIOMS_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5264 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5265 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5266 |     { assume "(x):M \<in> BINDINGn (PR X) (\<parallel><PR X>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5267 | then have "SNa M" by (simp only: BINDING_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5268 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5269 | ultimately show "SNa M" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5270 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5271 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5272 | case (NOT B) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5273 | have ih1: "\<And>a M. <a>:M \<in> \<parallel><B>\<parallel> \<Longrightarrow> SNa M" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5274 | have ih2: "\<And>x M. (x):M \<in> \<parallel>(B)\<parallel> \<Longrightarrow> SNa M" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5275 |   { case 1
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5276 | have "<a>:M \<in> (\<parallel><NOT B>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5277 | then have "<a>:M \<in> NEGc (NOT B) (\<parallel>(NOT B)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5278 | then have "<a>:M \<in> AXIOMSc (NOT B) \<union> BINDINGc (NOT B) (\<parallel>(NOT B)\<parallel>) \<union> NOTRIGHT (NOT B) (\<parallel>(B)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5279 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5280 |     { assume "<a>:M \<in> AXIOMSc (NOT B)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5281 | then have "SNa M" by (simp add: AXIOMS_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5282 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5283 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5284 |     { assume "<a>:M \<in> BINDINGc (NOT B) (\<parallel>(NOT B)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5285 | then have "SNa M" by (simp only: BINDING_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5286 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5287 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5288 |     { assume "<a>:M \<in> NOTRIGHT (NOT B) (\<parallel>(B)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5289 | then obtain x' M' where eq: "M = NotR (x').M' a" and "(x'):M' \<in> (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5290 | using NOTRIGHT_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5291 | then have "SNa M'" using ih2 by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5292 | then have "SNa M" using eq by (simp add: NotR_in_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5293 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5294 | ultimately show "SNa M" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5295 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5296 | case 2 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5297 | have "(x):M \<in> (\<parallel>(NOT B)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5298 | then have "(x):M \<in> NEGn (NOT B) (\<parallel><NOT B>\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5299 | then have "(x):M \<in> AXIOMSn (NOT B) \<union> BINDINGn (NOT B) (\<parallel><NOT B>\<parallel>) \<union> NOTLEFT (NOT B) (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5300 | by (simp only: NEGn.simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5301 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5302 |     { assume "(x):M \<in> AXIOMSn (NOT B)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5303 | then have "SNa M" by (simp add: AXIOMS_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5304 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5305 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5306 |     { assume "(x):M \<in> BINDINGn (NOT B) (\<parallel><NOT B>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5307 | then have "SNa M" by (simp only: BINDING_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5308 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5309 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5310 |     { assume "(x):M \<in> NOTLEFT (NOT B) (\<parallel><B>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5311 | then obtain a' M' where eq: "M = NotL <a'>.M' x" and "<a'>:M' \<in> (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5312 | using NOTLEFT_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5313 | then have "SNa M'" using ih1 by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5314 | then have "SNa M" using eq by (simp add: NotL_in_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5315 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5316 | ultimately show "SNa M" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5317 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5318 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5319 | case (AND A B) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5320 | have ih1: "\<And>a M. <a>:M \<in> \<parallel><A>\<parallel> \<Longrightarrow> SNa M" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5321 | have ih2: "\<And>x M. (x):M \<in> \<parallel>(A)\<parallel> \<Longrightarrow> SNa M" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5322 | have ih3: "\<And>a M. <a>:M \<in> \<parallel><B>\<parallel> \<Longrightarrow> SNa M" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5323 | have ih4: "\<And>x M. (x):M \<in> \<parallel>(B)\<parallel> \<Longrightarrow> SNa M" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5324 |   { case 1
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5325 | have "<a>:M \<in> (\<parallel><A AND B>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5326 | then have "<a>:M \<in> NEGc (A AND B) (\<parallel>(A AND B)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5327 | then have "<a>:M \<in> AXIOMSc (A AND B) \<union> BINDINGc (A AND B) (\<parallel>(A AND B)\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5328 | \<union> ANDRIGHT (A AND B) (\<parallel><A>\<parallel>) (\<parallel><B>\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5329 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5330 |     { assume "<a>:M \<in> AXIOMSc (A AND B)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5331 | then have "SNa M" by (simp add: AXIOMS_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5332 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5333 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5334 |     { assume "<a>:M \<in> BINDINGc (A AND B) (\<parallel>(A AND B)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5335 | then have "SNa M" by (simp only: BINDING_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5336 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5337 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5338 |     { assume "<a>:M \<in> ANDRIGHT (A AND B) (\<parallel><A>\<parallel>) (\<parallel><B>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5339 | then obtain a' M' b' N' where eq: "M = AndR <a'>.M' <b'>.N' a" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5340 | and "<a'>:M' \<in> (\<parallel><A>\<parallel>)" and "<b'>:N' \<in> (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5341 | by (erule_tac ANDRIGHT_elim, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5342 | then have "SNa M'" and "SNa N'" using ih1 ih3 by blast+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5343 | then have "SNa M" using eq by (simp add: AndR_in_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5344 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5345 | ultimately show "SNa M" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5346 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5347 | case 2 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5348 | have "(x):M \<in> (\<parallel>(A AND B)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5349 | then have "(x):M \<in> NEGn (A AND B) (\<parallel><A AND B>\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5350 | then have "(x):M \<in> AXIOMSn (A AND B) \<union> BINDINGn (A AND B) (\<parallel><A AND B>\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5351 | \<union> ANDLEFT1 (A AND B) (\<parallel>(A)\<parallel>) \<union> ANDLEFT2 (A AND B) (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5352 | by (simp only: NEGn.simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5353 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5354 |     { assume "(x):M \<in> AXIOMSn (A AND B)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5355 | then have "SNa M" by (simp add: AXIOMS_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5356 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5357 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5358 |     { assume "(x):M \<in> BINDINGn (A AND B) (\<parallel><A AND B>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5359 | then have "SNa M" by (simp only: BINDING_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5360 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5361 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5362 |     { assume "(x):M \<in> ANDLEFT1 (A AND B) (\<parallel>(A)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5363 | then obtain x' M' where eq: "M = AndL1 (x').M' x" and "(x'):M' \<in> (\<parallel>(A)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5364 | using ANDLEFT1_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5365 | then have "SNa M'" using ih2 by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5366 | then have "SNa M" using eq by (simp add: AndL1_in_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5367 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5368 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5369 |     { assume "(x):M \<in> ANDLEFT2 (A AND B) (\<parallel>(B)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5370 | then obtain x' M' where eq: "M = AndL2 (x').M' x" and "(x'):M' \<in> (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5371 | using ANDLEFT2_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5372 | then have "SNa M'" using ih4 by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5373 | then have "SNa M" using eq by (simp add: AndL2_in_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5374 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5375 | ultimately show "SNa M" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5376 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5377 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5378 | case (OR A B) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5379 | have ih1: "\<And>a M. <a>:M \<in> \<parallel><A>\<parallel> \<Longrightarrow> SNa M" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5380 | have ih2: "\<And>x M. (x):M \<in> \<parallel>(A)\<parallel> \<Longrightarrow> SNa M" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5381 | have ih3: "\<And>a M. <a>:M \<in> \<parallel><B>\<parallel> \<Longrightarrow> SNa M" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5382 | have ih4: "\<And>x M. (x):M \<in> \<parallel>(B)\<parallel> \<Longrightarrow> SNa M" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5383 |   { case 1
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5384 | have "<a>:M \<in> (\<parallel><A OR B>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5385 | then have "<a>:M \<in> NEGc (A OR B) (\<parallel>(A OR B)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5386 | then have "<a>:M \<in> AXIOMSc (A OR B) \<union> BINDINGc (A OR B) (\<parallel>(A OR B)\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5387 | \<union> ORRIGHT1 (A OR B) (\<parallel><A>\<parallel>) \<union> ORRIGHT2 (A OR B) (\<parallel><B>\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5388 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5389 |     { assume "<a>:M \<in> AXIOMSc (A OR B)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5390 | then have "SNa M" by (simp add: AXIOMS_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5391 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5392 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5393 |     { assume "<a>:M \<in> BINDINGc (A OR B) (\<parallel>(A OR B)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5394 | then have "SNa M" by (simp only: BINDING_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5395 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5396 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5397 |     { assume "<a>:M \<in> ORRIGHT1 (A OR B) (\<parallel><A>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5398 | then obtain a' M' where eq: "M = OrR1 <a'>.M' a" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5399 | and "<a'>:M' \<in> (\<parallel><A>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5400 | by (erule_tac ORRIGHT1_elim, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5401 | then have "SNa M'" using ih1 by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5402 | then have "SNa M" using eq by (simp add: OrR1_in_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5403 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5404 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5405 |     { assume "<a>:M \<in> ORRIGHT2 (A OR B) (\<parallel><B>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5406 | then obtain a' M' where eq: "M = OrR2 <a'>.M' a" and "<a'>:M' \<in> (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5407 | using ORRIGHT2_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5408 | then have "SNa M'" using ih3 by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5409 | then have "SNa M" using eq by (simp add: OrR2_in_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5410 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5411 | ultimately show "SNa M" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5412 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5413 | case 2 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5414 | have "(x):M \<in> (\<parallel>(A OR B)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5415 | then have "(x):M \<in> NEGn (A OR B) (\<parallel><A OR B>\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5416 | then have "(x):M \<in> AXIOMSn (A OR B) \<union> BINDINGn (A OR B) (\<parallel><A OR B>\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5417 | \<union> ORLEFT (A OR B) (\<parallel>(A)\<parallel>) (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5418 | by (simp only: NEGn.simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5419 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5420 |     { assume "(x):M \<in> AXIOMSn (A OR B)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5421 | then have "SNa M" by (simp add: AXIOMS_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5422 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5423 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5424 |     { assume "(x):M \<in> BINDINGn (A OR B) (\<parallel><A OR B>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5425 | then have "SNa M" by (simp only: BINDING_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5426 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5427 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5428 |     { assume "(x):M \<in> ORLEFT (A OR B) (\<parallel>(A)\<parallel>) (\<parallel>(B)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5429 | then obtain x' M' y' N' where eq: "M = OrL (x').M' (y').N' x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5430 | and "(x'):M' \<in> (\<parallel>(A)\<parallel>)" and "(y'):N' \<in> (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5431 | by (erule_tac ORLEFT_elim, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5432 | then have "SNa M'" and "SNa N'" using ih2 ih4 by blast+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5433 | then have "SNa M" using eq by (simp add: OrL_in_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5434 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5435 | ultimately show "SNa M" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5436 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5437 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5438 | case (IMP A B) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5439 | have ih1: "\<And>a M. <a>:M \<in> \<parallel><A>\<parallel> \<Longrightarrow> SNa M" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5440 | have ih2: "\<And>x M. (x):M \<in> \<parallel>(A)\<parallel> \<Longrightarrow> SNa M" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5441 | have ih3: "\<And>a M. <a>:M \<in> \<parallel><B>\<parallel> \<Longrightarrow> SNa M" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5442 | have ih4: "\<And>x M. (x):M \<in> \<parallel>(B)\<parallel> \<Longrightarrow> SNa M" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5443 |   { case 1
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5444 | have "<a>:M \<in> (\<parallel><A IMP B>\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5445 | then have "<a>:M \<in> NEGc (A IMP B) (\<parallel>(A IMP B)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5446 | then have "<a>:M \<in> AXIOMSc (A IMP B) \<union> BINDINGc (A IMP B) (\<parallel>(A IMP B)\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5447 | \<union> IMPRIGHT (A IMP B) (\<parallel>(A)\<parallel>) (\<parallel><B>\<parallel>) (\<parallel>(B)\<parallel>) (\<parallel><A>\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5448 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5449 |     { assume "<a>:M \<in> AXIOMSc (A IMP B)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5450 | then have "SNa M" by (simp add: AXIOMS_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5451 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5452 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5453 |     { assume "<a>:M \<in> BINDINGc (A IMP B) (\<parallel>(A IMP B)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5454 | then have "SNa M" by (simp only: BINDING_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5455 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5456 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5457 |     { assume "<a>:M \<in> IMPRIGHT (A IMP B) (\<parallel>(A)\<parallel>) (\<parallel><B>\<parallel>) (\<parallel>(B)\<parallel>) (\<parallel><A>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5458 | then obtain x' a' M' where eq: "M = ImpR (x').<a'>.M' a" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5459 |                            and imp: "\<forall>z P. x'\<sharp>(z,P) \<and> (z):P \<in> \<parallel>(B)\<parallel> \<longrightarrow> (x'):(M'{a':=(z).P}) \<in> \<parallel>(A)\<parallel>"    
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5460 | by (erule_tac IMPRIGHT_elim, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5461 | obtain z::"name" where fs: "z\<sharp>x'" by (rule_tac exists_fresh, rule fin_supp, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5462 | have "(z):Ax z a'\<in> \<parallel>(B)\<parallel>" by (simp add: Ax_in_CANDs) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5463 |       with imp fs have "(x'):(M'{a':=(z).Ax z a'}) \<in> \<parallel>(A)\<parallel>" by (simp add: fresh_prod fresh_atm)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5464 |       then have "SNa (M'{a':=(z).Ax z a'})" using ih2 by blast
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5465 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5466 |       have "M'{a':=(z).Ax z a'} \<longrightarrow>\<^isub>a* M'[a'\<turnstile>c>a']" by (simp add: subst_with_ax2)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5467 | ultimately have "SNa (M'[a'\<turnstile>c>a'])" by (simp add: a_star_preserves_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5468 | then have "SNa M'" by (simp add: crename_id) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5469 | then have "SNa M" using eq by (simp add: ImpR_in_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5470 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5471 | ultimately show "SNa M" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5472 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5473 | case 2 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5474 | have "(x):M \<in> (\<parallel>(A IMP B)\<parallel>)" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5475 | then have "(x):M \<in> NEGn (A IMP B) (\<parallel><A IMP B>\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5476 | then have "(x):M \<in> AXIOMSn (A IMP B) \<union> BINDINGn (A IMP B) (\<parallel><A IMP B>\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5477 | \<union> IMPLEFT (A IMP B) (\<parallel><A>\<parallel>) (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5478 | by (simp only: NEGn.simps) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5479 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5480 |     { assume "(x):M \<in> AXIOMSn (A IMP B)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5481 | then have "SNa M" by (simp add: AXIOMS_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5482 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5483 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5484 |     { assume "(x):M \<in> BINDINGn (A IMP B) (\<parallel><A IMP B>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5485 | then have "SNa M" by (simp only: BINDING_imply_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5486 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5487 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5488 |     { assume "(x):M \<in> IMPLEFT (A IMP B) (\<parallel><A>\<parallel>) (\<parallel>(B)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5489 | then obtain a' M' y' N' where eq: "M = ImpL <a'>.M' (y').N' x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5490 | and "<a'>:M' \<in> (\<parallel><A>\<parallel>)" and "(y'):N' \<in> (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5491 | by (erule_tac IMPLEFT_elim, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5492 | then have "SNa M'" and "SNa N'" using ih1 ih4 by blast+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5493 | then have "SNa M" using eq by (simp add: ImpL_in_SNa) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5494 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5495 | ultimately show "SNa M" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5496 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5497 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5498 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5499 | text {* Main lemma 2 *}
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5500 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5501 | lemma AXIOMS_preserved: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5502 | shows "<a>:M \<in> AXIOMSc B \<Longrightarrow> M \<longrightarrow>\<^isub>a* M' \<Longrightarrow> <a>:M' \<in> AXIOMSc B" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5503 | and "(x):M \<in> AXIOMSn B \<Longrightarrow> M \<longrightarrow>\<^isub>a* M' \<Longrightarrow> (x):M' \<in> AXIOMSn B" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5504 | apply(simp_all add: AXIOMSc_def AXIOMSn_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5505 | apply(auto simp add: ntrm.inject ctrm.inject alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5506 | apply(drule ax_do_not_a_star_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5507 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5508 | apply(drule ax_do_not_a_star_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5509 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5510 | apply(drule ax_do_not_a_star_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5511 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5512 | apply(drule ax_do_not_a_star_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5513 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5514 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5515 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5516 | lemma BINDING_preserved: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5517 | shows "<a>:M \<in> BINDINGc B (\<parallel>(B)\<parallel>) \<Longrightarrow> M \<longrightarrow>\<^isub>a* M' \<Longrightarrow> <a>:M' \<in> BINDINGc B (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5518 | and "(x):M \<in> BINDINGn B (\<parallel><B>\<parallel>) \<Longrightarrow> M \<longrightarrow>\<^isub>a* M' \<Longrightarrow> (x):M' \<in> BINDINGn B (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5519 | proof - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5520 | assume red: "M \<longrightarrow>\<^isub>a* M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5521 | assume asm: "<a>:M \<in> BINDINGc B (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5522 |   {
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5523 | fix x::"name" and P::"trm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5524 |     from asm have "((x):P) \<in> (\<parallel>(B)\<parallel>) \<Longrightarrow> SNa (M{a:=(x).P})" by (simp add: BINDINGc_elim)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5525 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5526 |     have "M{a:=(x).P} \<longrightarrow>\<^isub>a* M'{a:=(x).P}" using red by (simp add: a_star_subst2)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5527 | ultimately | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5528 |     have "((x):P) \<in> (\<parallel>(B)\<parallel>) \<Longrightarrow> SNa (M'{a:=(x).P})" by (simp add: a_star_preserves_SNa)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5529 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5530 | then show "<a>:M' \<in> BINDINGc B (\<parallel>(B)\<parallel>)" by (auto simp add: BINDINGc_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5531 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5532 | assume red: "M \<longrightarrow>\<^isub>a* M'" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5533 | assume asm: "(x):M \<in> BINDINGn B (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5534 |   {
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5535 | fix c::"coname" and P::"trm" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5536 |     from asm have "(<c>:P) \<in> (\<parallel><B>\<parallel>) \<Longrightarrow> SNa (M{x:=<c>.P})" by (simp add: BINDINGn_elim)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5537 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5538 |     have "M{x:=<c>.P} \<longrightarrow>\<^isub>a* M'{x:=<c>.P}" using red by (simp add: a_star_subst1)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5539 | ultimately | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5540 |     have "(<c>:P) \<in> (\<parallel><B>\<parallel>) \<Longrightarrow> SNa (M'{x:=<c>.P})" by (simp add: a_star_preserves_SNa)
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5541 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5542 | then show "(x):M' \<in> BINDINGn B (\<parallel><B>\<parallel>)" by (auto simp add: BINDINGn_def) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5543 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5544 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5545 | lemma CANDs_preserved: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5546 | shows "<a>:M \<in> \<parallel><B>\<parallel> \<Longrightarrow> M \<longrightarrow>\<^isub>a* M' \<Longrightarrow> <a>:M' \<in> \<parallel><B>\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5547 | and "(x):M \<in> \<parallel>(B)\<parallel> \<Longrightarrow> M \<longrightarrow>\<^isub>a* M' \<Longrightarrow> (x):M' \<in> \<parallel>(B)\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5548 | proof(nominal_induct B arbitrary: a x M M' rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5549 | case (PR X) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5550 |   { case 1 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5551 | have asm: "M \<longrightarrow>\<^isub>a* M'" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5552 | have "<a>:M \<in> \<parallel><PR X>\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5553 | then have "<a>:M \<in> NEGc (PR X) (\<parallel>(PR X)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5554 | then have "<a>:M \<in> AXIOMSc (PR X) \<union> BINDINGc (PR X) (\<parallel>(PR X)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5555 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5556 |     { assume "<a>:M \<in> AXIOMSc (PR X)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5557 | then have "<a>:M' \<in> AXIOMSc (PR X)" using asm by (simp only: AXIOMS_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5558 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5559 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5560 |     { assume "<a>:M \<in> BINDINGc (PR X) (\<parallel>(PR X)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5561 | then have "<a>:M' \<in> BINDINGc (PR X) (\<parallel>(PR X)\<parallel>)" using asm by (simp add: BINDING_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5562 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5563 | ultimately have "<a>:M' \<in> AXIOMSc (PR X) \<union> BINDINGc (PR X) (\<parallel>(PR X)\<parallel>)" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5564 | then have "<a>:M' \<in> NEGc (PR X) (\<parallel>(PR X)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5565 | then show "<a>:M' \<in> (\<parallel><PR X>\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5566 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5567 | case 2 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5568 | have asm: "M \<longrightarrow>\<^isub>a* M'" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5569 | have "(x):M \<in> \<parallel>(PR X)\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5570 | then have "(x):M \<in> NEGn (PR X) (\<parallel><PR X>\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5571 | then have "(x):M \<in> AXIOMSn (PR X) \<union> BINDINGn (PR X) (\<parallel><PR X>\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5572 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5573 |     { assume "(x):M \<in> AXIOMSn (PR X)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5574 | then have "(x):M' \<in> AXIOMSn (PR X)" using asm by (simp only: AXIOMS_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5575 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5576 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5577 |     { assume "(x):M \<in> BINDINGn (PR X) (\<parallel><PR X>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5578 | then have "(x):M' \<in> BINDINGn (PR X) (\<parallel><PR X>\<parallel>)" using asm by (simp only: BINDING_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5579 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5580 | ultimately have "(x):M' \<in> AXIOMSn (PR X) \<union> BINDINGn (PR X) (\<parallel><PR X>\<parallel>)" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5581 | then have "(x):M' \<in> NEGn (PR X) (\<parallel><PR X>\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5582 | then show "(x):M' \<in> (\<parallel>(PR X)\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5583 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5584 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5585 | case (IMP A B) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5586 | have ih1: "\<And>a M M'. \<lbrakk><a>:M \<in> \<parallel><A>\<parallel>; M \<longrightarrow>\<^isub>a* M'\<rbrakk> \<Longrightarrow> <a>:M' \<in> \<parallel><A>\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5587 | have ih2: "\<And>x M M'. \<lbrakk>(x):M \<in> \<parallel>(A)\<parallel>; M \<longrightarrow>\<^isub>a* M'\<rbrakk> \<Longrightarrow> (x):M' \<in> \<parallel>(A)\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5588 | have ih3: "\<And>a M M'. \<lbrakk><a>:M \<in> \<parallel><B>\<parallel>; M \<longrightarrow>\<^isub>a* M'\<rbrakk> \<Longrightarrow> <a>:M' \<in> \<parallel><B>\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5589 | have ih4: "\<And>x M M'. \<lbrakk>(x):M \<in> \<parallel>(B)\<parallel>; M \<longrightarrow>\<^isub>a* M'\<rbrakk> \<Longrightarrow> (x):M' \<in> \<parallel>(B)\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5590 |   { case 1 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5591 | have asm: "M \<longrightarrow>\<^isub>a* M'" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5592 | have "<a>:M \<in> \<parallel><A IMP B>\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5593 | then have "<a>:M \<in> NEGc (A IMP B) (\<parallel>(A IMP B)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5594 | then have "<a>:M \<in> AXIOMSc (A IMP B) \<union> BINDINGc (A IMP B) (\<parallel>(A IMP B)\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5595 | \<union> IMPRIGHT (A IMP B) (\<parallel>(A)\<parallel>) (\<parallel><B>\<parallel>) (\<parallel>(B)\<parallel>) (\<parallel><A>\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5596 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5597 |     { assume "<a>:M \<in> AXIOMSc (A IMP B)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5598 | then have "<a>:M' \<in> AXIOMSc (A IMP B)" using asm by (simp only: AXIOMS_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5599 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5600 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5601 |     { assume "<a>:M \<in> BINDINGc (A IMP B) (\<parallel>(A IMP B)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5602 | then have "<a>:M' \<in> BINDINGc (A IMP B) (\<parallel>(A IMP B)\<parallel>)" using asm by (simp only: BINDING_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5603 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5604 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5605 |     { assume "<a>:M \<in> IMPRIGHT (A IMP B) (\<parallel>(A)\<parallel>) (\<parallel><B>\<parallel>) (\<parallel>(B)\<parallel>) (\<parallel><A>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5606 | then obtain x' a' N' where eq: "M = ImpR (x').<a'>.N' a" and fic: "fic (ImpR (x').<a'>.N' a) a" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5607 |                            and imp1: "\<forall>z P. x'\<sharp>(z,P) \<and> (z):P \<in> \<parallel>(B)\<parallel> \<longrightarrow> (x'):(N'{a':=(z).P}) \<in> \<parallel>(A)\<parallel>" 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5608 |                            and imp2: "\<forall>c Q. a'\<sharp>(c,Q) \<and> <c>:Q \<in> \<parallel><A>\<parallel> \<longrightarrow> <a'>:(N'{x':=<c>.Q}) \<in> \<parallel><B>\<parallel>"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5609 | using IMPRIGHT_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5610 | from eq asm obtain N'' where eq': "M' = ImpR (x').<a'>.N'' a" and red: "N' \<longrightarrow>\<^isub>a* N''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5611 | using a_star_redu_ImpR_elim by (blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5612 |       from imp1 have "\<forall>z P. x'\<sharp>(z,P) \<and> (z):P \<in> \<parallel>(B)\<parallel> \<longrightarrow> (x'):(N''{a':=(z).P}) \<in> \<parallel>(A)\<parallel>" using red ih2
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5613 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5614 | apply(drule_tac x="z" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5615 | apply(drule_tac x="P" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5616 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5617 | apply(drule_tac a_star_subst2) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5618 | apply(blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5619 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5620 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5621 |       from imp2 have "\<forall>c Q. a'\<sharp>(c,Q) \<and> <c>:Q \<in> \<parallel><A>\<parallel> \<longrightarrow> <a'>:(N''{x':=<c>.Q}) \<in> \<parallel><B>\<parallel>" using red ih3
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5622 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5623 | apply(drule_tac x="c" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5624 | apply(drule_tac x="Q" in spec) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5625 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5626 | apply(drule_tac a_star_subst1) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5627 | apply(blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5628 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5629 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5630 | from fic have "fic M' a" using eq asm by (simp add: fic_a_star_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5631 | ultimately have "<a>:M' \<in> IMPRIGHT (A IMP B) (\<parallel>(A)\<parallel>) (\<parallel><B>\<parallel>) (\<parallel>(B)\<parallel>) (\<parallel><A>\<parallel>)" using eq' by auto | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5632 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5633 | ultimately have "<a>:M' \<in> AXIOMSc (A IMP B) \<union> BINDINGc (A IMP B) (\<parallel>(A IMP B)\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5634 | \<union> IMPRIGHT (A IMP B) (\<parallel>(A)\<parallel>) (\<parallel><B>\<parallel>) (\<parallel>(B)\<parallel>) (\<parallel><A>\<parallel>)" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5635 | then have "<a>:M' \<in> NEGc (A IMP B) (\<parallel>(A IMP B)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5636 | then show "<a>:M' \<in> (\<parallel><A IMP B>\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5637 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5638 | case 2 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5639 | have asm: "M \<longrightarrow>\<^isub>a* M'" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5640 | have "(x):M \<in> \<parallel>(A IMP B)\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5641 | then have "(x):M \<in> NEGn (A IMP B) (\<parallel><A IMP B>\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5642 | then have "(x):M \<in> AXIOMSn (A IMP B) \<union> BINDINGn (A IMP B) (\<parallel><A IMP B>\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5643 | \<union> IMPLEFT (A IMP B) (\<parallel><A>\<parallel>) (\<parallel>(B)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5644 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5645 |     { assume "(x):M \<in> AXIOMSn (A IMP B)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5646 | then have "(x):M' \<in> AXIOMSn (A IMP B)" using asm by (simp only: AXIOMS_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5647 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5648 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5649 |     { assume "(x):M \<in> BINDINGn (A IMP B) (\<parallel><A IMP B>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5650 | then have "(x):M' \<in> BINDINGn (A IMP B) (\<parallel><A IMP B>\<parallel>)" using asm by (simp only: BINDING_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5651 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5652 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5653 |     { assume "(x):M \<in> IMPLEFT (A IMP B) (\<parallel><A>\<parallel>) (\<parallel>(B)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5654 | then obtain a' T' y' N' where eq: "M = ImpL <a'>.T' (y').N' x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5655 | and fin: "fin (ImpL <a'>.T' (y').N' x) x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5656 | and imp1: "<a'>:T' \<in> \<parallel><A>\<parallel>" and imp2: "(y'):N' \<in> \<parallel>(B)\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5657 | by (erule_tac IMPLEFT_elim, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5658 | from eq asm obtain T'' N'' where eq': "M' = ImpL <a'>.T'' (y').N'' x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5659 | and red1: "T' \<longrightarrow>\<^isub>a* T''" and red2: "N' \<longrightarrow>\<^isub>a* N''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5660 | using a_star_redu_ImpL_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5661 | from fin have "fin M' x" using eq asm by (simp add: fin_a_star_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5662 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5663 | from imp1 red1 have "<a'>:T'' \<in> \<parallel><A>\<parallel>" using ih1 by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5664 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5665 | from imp2 red2 have "(y'):N'' \<in> \<parallel>(B)\<parallel>" using ih4 by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5666 | ultimately have "(x):M' \<in> IMPLEFT (A IMP B) (\<parallel><A>\<parallel>) (\<parallel>(B)\<parallel>)" using eq' by (simp, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5667 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5668 | ultimately have "(x):M' \<in> AXIOMSn (A IMP B) \<union> BINDINGn (A IMP B) (\<parallel><A IMP B>\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5669 | \<union> IMPLEFT (A IMP B) (\<parallel><A>\<parallel>) (\<parallel>(B)\<parallel>)" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5670 | then have "(x):M' \<in> NEGn (A IMP B) (\<parallel><A IMP B>\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5671 | then show "(x):M' \<in> (\<parallel>(A IMP B)\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5672 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5673 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5674 | case (AND A B) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5675 | have ih1: "\<And>a M M'. \<lbrakk><a>:M \<in> \<parallel><A>\<parallel>; M \<longrightarrow>\<^isub>a* M'\<rbrakk> \<Longrightarrow> <a>:M' \<in> \<parallel><A>\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5676 | have ih2: "\<And>x M M'. \<lbrakk>(x):M \<in> \<parallel>(A)\<parallel>; M \<longrightarrow>\<^isub>a* M'\<rbrakk> \<Longrightarrow> (x):M' \<in> \<parallel>(A)\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5677 | have ih3: "\<And>a M M'. \<lbrakk><a>:M \<in> \<parallel><B>\<parallel>; M \<longrightarrow>\<^isub>a* M'\<rbrakk> \<Longrightarrow> <a>:M' \<in> \<parallel><B>\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5678 | have ih4: "\<And>x M M'. \<lbrakk>(x):M \<in> \<parallel>(B)\<parallel>; M \<longrightarrow>\<^isub>a* M'\<rbrakk> \<Longrightarrow> (x):M' \<in> \<parallel>(B)\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5679 |   { case 1 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5680 | have asm: "M \<longrightarrow>\<^isub>a* M'" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5681 | have "<a>:M \<in> \<parallel><A AND B>\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5682 | then have "<a>:M \<in> NEGc (A AND B) (\<parallel>(A AND B)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5683 | then have "<a>:M \<in> AXIOMSc (A AND B) \<union> BINDINGc (A AND B) (\<parallel>(A AND B)\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5684 | \<union> ANDRIGHT (A AND B) (\<parallel><A>\<parallel>) (\<parallel><B>\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5685 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5686 |     { assume "<a>:M \<in> AXIOMSc (A AND B)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5687 | then have "<a>:M' \<in> AXIOMSc (A AND B)" using asm by (simp only: AXIOMS_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5688 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5689 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5690 |     { assume "<a>:M \<in> BINDINGc (A AND B) (\<parallel>(A AND B)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5691 | then have "<a>:M' \<in> BINDINGc (A AND B) (\<parallel>(A AND B)\<parallel>)" using asm by (simp only: BINDING_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5692 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5693 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5694 |     { assume "<a>:M \<in> ANDRIGHT (A AND B) (\<parallel><A>\<parallel>) (\<parallel><B>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5695 | then obtain a' T' b' N' where eq: "M = AndR <a'>.T' <b'>.N' a" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5696 | and fic: "fic (AndR <a'>.T' <b'>.N' a) a" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5697 | and imp1: "<a'>:T' \<in> \<parallel><A>\<parallel>" and imp2: "<b'>:N' \<in> \<parallel><B>\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5698 | using ANDRIGHT_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5699 | from eq asm obtain T'' N'' where eq': "M' = AndR <a'>.T'' <b'>.N'' a" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5700 | and red1: "T' \<longrightarrow>\<^isub>a* T''" and red2: "N' \<longrightarrow>\<^isub>a* N''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5701 | using a_star_redu_AndR_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5702 | from fic have "fic M' a" using eq asm by (simp add: fic_a_star_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5703 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5704 | from imp1 red1 have "<a'>:T'' \<in> \<parallel><A>\<parallel>" using ih1 by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5705 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5706 | from imp2 red2 have "<b'>:N'' \<in> \<parallel><B>\<parallel>" using ih3 by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5707 | ultimately have "<a>:M' \<in> ANDRIGHT (A AND B) (\<parallel><A>\<parallel>) (\<parallel><B>\<parallel>)" using eq' by (simp, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5708 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5709 | ultimately have "<a>:M' \<in> AXIOMSc (A AND B) \<union> BINDINGc (A AND B) (\<parallel>(A AND B)\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5710 | \<union> ANDRIGHT (A AND B) (\<parallel><A>\<parallel>) (\<parallel><B>\<parallel>)" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5711 | then have "<a>:M' \<in> NEGc (A AND B) (\<parallel>(A AND B)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5712 | then show "<a>:M' \<in> (\<parallel><A AND B>\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5713 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5714 | case 2 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5715 | have asm: "M \<longrightarrow>\<^isub>a* M'" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5716 | have "(x):M \<in> \<parallel>(A AND B)\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5717 | then have "(x):M \<in> NEGn (A AND B) (\<parallel><A AND B>\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5718 | then have "(x):M \<in> AXIOMSn (A AND B) \<union> BINDINGn (A AND B) (\<parallel><A AND B>\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5719 | \<union> ANDLEFT1 (A AND B) (\<parallel>(A)\<parallel>) \<union> ANDLEFT2 (A AND B) (\<parallel>(B)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5720 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5721 |     { assume "(x):M \<in> AXIOMSn (A AND B)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5722 | then have "(x):M' \<in> AXIOMSn (A AND B)" using asm by (simp only: AXIOMS_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5723 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5724 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5725 |     { assume "(x):M \<in> BINDINGn (A AND B) (\<parallel><A AND B>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5726 | then have "(x):M' \<in> BINDINGn (A AND B) (\<parallel><A AND B>\<parallel>)" using asm by (simp only: BINDING_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5727 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5728 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5729 |     { assume "(x):M \<in> ANDLEFT1 (A AND B) (\<parallel>(A)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5730 | then obtain y' N' where eq: "M = AndL1 (y').N' x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5731 | and fin: "fin (AndL1 (y').N' x) x" and imp: "(y'):N' \<in> \<parallel>(A)\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5732 | by (erule_tac ANDLEFT1_elim, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5733 | from eq asm obtain N'' where eq': "M' = AndL1 (y').N'' x" and red1: "N' \<longrightarrow>\<^isub>a* N''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5734 | using a_star_redu_AndL1_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5735 | from fin have "fin M' x" using eq asm by (simp add: fin_a_star_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5736 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5737 | from imp red1 have "(y'):N'' \<in> \<parallel>(A)\<parallel>" using ih2 by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5738 | ultimately have "(x):M' \<in> ANDLEFT1 (A AND B) (\<parallel>(A)\<parallel>)" using eq' by (simp, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5739 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5740 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5741 |     { assume "(x):M \<in> ANDLEFT2 (A AND B) (\<parallel>(B)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5742 | then obtain y' N' where eq: "M = AndL2 (y').N' x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5743 | and fin: "fin (AndL2 (y').N' x) x" and imp: "(y'):N' \<in> \<parallel>(B)\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5744 | by (erule_tac ANDLEFT2_elim, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5745 | from eq asm obtain N'' where eq': "M' = AndL2 (y').N'' x" and red1: "N' \<longrightarrow>\<^isub>a* N''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5746 | using a_star_redu_AndL2_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5747 | from fin have "fin M' x" using eq asm by (simp add: fin_a_star_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5748 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5749 | from imp red1 have "(y'):N'' \<in> \<parallel>(B)\<parallel>" using ih4 by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5750 | ultimately have "(x):M' \<in> ANDLEFT2 (A AND B) (\<parallel>(B)\<parallel>)" using eq' by (simp, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5751 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5752 | ultimately have "(x):M' \<in> AXIOMSn (A AND B) \<union> BINDINGn (A AND B) (\<parallel><A AND B>\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5753 | \<union> ANDLEFT1 (A AND B) (\<parallel>(A)\<parallel>) \<union> ANDLEFT2 (A AND B) (\<parallel>(B)\<parallel>)" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5754 | then have "(x):M' \<in> NEGn (A AND B) (\<parallel><A AND B>\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5755 | then show "(x):M' \<in> (\<parallel>(A AND B)\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5756 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5757 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5758 | case (OR A B) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5759 | have ih1: "\<And>a M M'. \<lbrakk><a>:M \<in> \<parallel><A>\<parallel>; M \<longrightarrow>\<^isub>a* M'\<rbrakk> \<Longrightarrow> <a>:M' \<in> \<parallel><A>\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5760 | have ih2: "\<And>x M M'. \<lbrakk>(x):M \<in> \<parallel>(A)\<parallel>; M \<longrightarrow>\<^isub>a* M'\<rbrakk> \<Longrightarrow> (x):M' \<in> \<parallel>(A)\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5761 | have ih3: "\<And>a M M'. \<lbrakk><a>:M \<in> \<parallel><B>\<parallel>; M \<longrightarrow>\<^isub>a* M'\<rbrakk> \<Longrightarrow> <a>:M' \<in> \<parallel><B>\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5762 | have ih4: "\<And>x M M'. \<lbrakk>(x):M \<in> \<parallel>(B)\<parallel>; M \<longrightarrow>\<^isub>a* M'\<rbrakk> \<Longrightarrow> (x):M' \<in> \<parallel>(B)\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5763 |   { case 1 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5764 | have asm: "M \<longrightarrow>\<^isub>a* M'" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5765 | have "<a>:M \<in> \<parallel><A OR B>\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5766 | then have "<a>:M \<in> NEGc (A OR B) (\<parallel>(A OR B)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5767 | then have "<a>:M \<in> AXIOMSc (A OR B) \<union> BINDINGc (A OR B) (\<parallel>(A OR B)\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5768 | \<union> ORRIGHT1 (A OR B) (\<parallel><A>\<parallel>) \<union> ORRIGHT2 (A OR B) (\<parallel><B>\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5769 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5770 |     { assume "<a>:M \<in> AXIOMSc (A OR B)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5771 | then have "<a>:M' \<in> AXIOMSc (A OR B)" using asm by (simp only: AXIOMS_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5772 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5773 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5774 |     { assume "<a>:M \<in> BINDINGc (A OR B) (\<parallel>(A OR B)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5775 | then have "<a>:M' \<in> BINDINGc (A OR B) (\<parallel>(A OR B)\<parallel>)" using asm by (simp only: BINDING_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5776 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5777 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5778 |     { assume "<a>:M \<in> ORRIGHT1 (A OR B) (\<parallel><A>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5779 | then obtain a' N' where eq: "M = OrR1 <a'>.N' a" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5780 | and fic: "fic (OrR1 <a'>.N' a) a" and imp1: "<a'>:N' \<in> \<parallel><A>\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5781 | using ORRIGHT1_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5782 | from eq asm obtain N'' where eq': "M' = OrR1 <a'>.N'' a" and red1: "N' \<longrightarrow>\<^isub>a* N''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5783 | using a_star_redu_OrR1_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5784 | from fic have "fic M' a" using eq asm by (simp add: fic_a_star_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5785 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5786 | from imp1 red1 have "<a'>:N'' \<in> \<parallel><A>\<parallel>" using ih1 by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5787 | ultimately have "<a>:M' \<in> ORRIGHT1 (A OR B) (\<parallel><A>\<parallel>)" using eq' by (simp, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5788 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5789 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5790 |     { assume "<a>:M \<in> ORRIGHT2 (A OR B) (\<parallel><B>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5791 | then obtain a' N' where eq: "M = OrR2 <a'>.N' a" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5792 | and fic: "fic (OrR2 <a'>.N' a) a" and imp1: "<a'>:N' \<in> \<parallel><B>\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5793 | using ORRIGHT2_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5794 | from eq asm obtain N'' where eq': "M' = OrR2 <a'>.N'' a" and red1: "N' \<longrightarrow>\<^isub>a* N''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5795 | using a_star_redu_OrR2_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5796 | from fic have "fic M' a" using eq asm by (simp add: fic_a_star_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5797 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5798 | from imp1 red1 have "<a'>:N'' \<in> \<parallel><B>\<parallel>" using ih3 by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5799 | ultimately have "<a>:M' \<in> ORRIGHT2 (A OR B) (\<parallel><B>\<parallel>)" using eq' by (simp, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5800 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5801 | ultimately have "<a>:M' \<in> AXIOMSc (A OR B) \<union> BINDINGc (A OR B) (\<parallel>(A OR B)\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5802 | \<union> ORRIGHT1 (A OR B) (\<parallel><A>\<parallel>) \<union> ORRIGHT2 (A OR B) (\<parallel><B>\<parallel>)" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5803 | then have "<a>:M' \<in> NEGc (A OR B) (\<parallel>(A OR B)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5804 | then show "<a>:M' \<in> (\<parallel><A OR B>\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5805 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5806 | case 2 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5807 | have asm: "M \<longrightarrow>\<^isub>a* M'" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5808 | have "(x):M \<in> \<parallel>(A OR B)\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5809 | then have "(x):M \<in> NEGn (A OR B) (\<parallel><A OR B>\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5810 | then have "(x):M \<in> AXIOMSn (A OR B) \<union> BINDINGn (A OR B) (\<parallel><A OR B>\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5811 | \<union> ORLEFT (A OR B) (\<parallel>(A)\<parallel>) (\<parallel>(B)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5812 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5813 |     { assume "(x):M \<in> AXIOMSn (A OR B)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5814 | then have "(x):M' \<in> AXIOMSn (A OR B)" using asm by (simp only: AXIOMS_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5815 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5816 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5817 |     { assume "(x):M \<in> BINDINGn (A OR B) (\<parallel><A OR B>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5818 | then have "(x):M' \<in> BINDINGn (A OR B) (\<parallel><A OR B>\<parallel>)" using asm by (simp only: BINDING_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5819 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5820 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5821 |     { assume "(x):M \<in> ORLEFT (A OR B) (\<parallel>(A)\<parallel>) (\<parallel>(B)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5822 | then obtain y' T' z' N' where eq: "M = OrL (y').T' (z').N' x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5823 | and fin: "fin (OrL (y').T' (z').N' x) x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5824 | and imp1: "(y'):T' \<in> \<parallel>(A)\<parallel>" and imp2: "(z'):N' \<in> \<parallel>(B)\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5825 | by (erule_tac ORLEFT_elim, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5826 | from eq asm obtain T'' N'' where eq': "M' = OrL (y').T'' (z').N'' x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5827 | and red1: "T' \<longrightarrow>\<^isub>a* T''" and red2: "N' \<longrightarrow>\<^isub>a* N''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5828 | using a_star_redu_OrL_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5829 | from fin have "fin M' x" using eq asm by (simp add: fin_a_star_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5830 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5831 | from imp1 red1 have "(y'):T'' \<in> \<parallel>(A)\<parallel>" using ih2 by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5832 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5833 | from imp2 red2 have "(z'):N'' \<in> \<parallel>(B)\<parallel>" using ih4 by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5834 | ultimately have "(x):M' \<in> ORLEFT (A OR B) (\<parallel>(A)\<parallel>) (\<parallel>(B)\<parallel>)" using eq' by (simp, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5835 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5836 | ultimately have "(x):M' \<in> AXIOMSn (A OR B) \<union> BINDINGn (A OR B) (\<parallel><A OR B>\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5837 | \<union> ORLEFT (A OR B) (\<parallel>(A)\<parallel>) (\<parallel>(B)\<parallel>)" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5838 | then have "(x):M' \<in> NEGn (A OR B) (\<parallel><A OR B>\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5839 | then show "(x):M' \<in> (\<parallel>(A OR B)\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5840 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5841 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5842 | case (NOT A) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5843 | have ih1: "\<And>a M M'. \<lbrakk><a>:M \<in> \<parallel><A>\<parallel>; M \<longrightarrow>\<^isub>a* M'\<rbrakk> \<Longrightarrow> <a>:M' \<in> \<parallel><A>\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5844 | have ih2: "\<And>x M M'. \<lbrakk>(x):M \<in> \<parallel>(A)\<parallel>; M \<longrightarrow>\<^isub>a* M'\<rbrakk> \<Longrightarrow> (x):M' \<in> \<parallel>(A)\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5845 |   { case 1 
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5846 | have asm: "M \<longrightarrow>\<^isub>a* M'" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5847 | have "<a>:M \<in> \<parallel><NOT A>\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5848 | then have "<a>:M \<in> NEGc (NOT A) (\<parallel>(NOT A)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5849 | then have "<a>:M \<in> AXIOMSc (NOT A) \<union> BINDINGc (NOT A) (\<parallel>(NOT A)\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5850 | \<union> NOTRIGHT (NOT A) (\<parallel>(A)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5851 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5852 |     { assume "<a>:M \<in> AXIOMSc (NOT A)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5853 | then have "<a>:M' \<in> AXIOMSc (NOT A)" using asm by (simp only: AXIOMS_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5854 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5855 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5856 |     { assume "<a>:M \<in> BINDINGc (NOT A) (\<parallel>(NOT A)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5857 | then have "<a>:M' \<in> BINDINGc (NOT A) (\<parallel>(NOT A)\<parallel>)" using asm by (simp only: BINDING_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5858 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5859 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5860 |     { assume "<a>:M \<in> NOTRIGHT (NOT A) (\<parallel>(A)\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5861 | then obtain y' N' where eq: "M = NotR (y').N' a" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5862 | and fic: "fic (NotR (y').N' a) a" and imp: "(y'):N' \<in> \<parallel>(A)\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5863 | using NOTRIGHT_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5864 | from eq asm obtain N'' where eq': "M' = NotR (y').N'' a" and red: "N' \<longrightarrow>\<^isub>a* N''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5865 | using a_star_redu_NotR_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5866 | from fic have "fic M' a" using eq asm by (simp add: fic_a_star_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5867 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5868 | from imp red have "(y'):N'' \<in> \<parallel>(A)\<parallel>" using ih2 by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5869 | ultimately have "<a>:M' \<in> NOTRIGHT (NOT A) (\<parallel>(A)\<parallel>)" using eq' by (simp, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5870 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5871 | ultimately have "<a>:M' \<in> AXIOMSc (NOT A) \<union> BINDINGc (NOT A) (\<parallel>(NOT A)\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5872 | \<union> NOTRIGHT (NOT A) (\<parallel>(A)\<parallel>)" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5873 | then have "<a>:M' \<in> NEGc (NOT A) (\<parallel>(NOT A)\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5874 | then show "<a>:M' \<in> (\<parallel><NOT A>\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5875 | next | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5876 | case 2 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5877 | have asm: "M \<longrightarrow>\<^isub>a* M'" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5878 | have "(x):M \<in> \<parallel>(NOT A)\<parallel>" by fact | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5879 | then have "(x):M \<in> NEGn (NOT A) (\<parallel><NOT A>\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5880 | then have "(x):M \<in> AXIOMSn (NOT A) \<union> BINDINGn (NOT A) (\<parallel><NOT A>\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5881 | \<union> NOTLEFT (NOT A) (\<parallel><A>\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5882 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5883 |     { assume "(x):M \<in> AXIOMSn (NOT A)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5884 | then have "(x):M' \<in> AXIOMSn (NOT A)" using asm by (simp only: AXIOMS_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5885 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5886 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5887 |     { assume "(x):M \<in> BINDINGn (NOT A) (\<parallel><NOT A>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5888 | then have "(x):M' \<in> BINDINGn (NOT A) (\<parallel><NOT A>\<parallel>)" using asm by (simp only: BINDING_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5889 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5890 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5891 |     { assume "(x):M \<in> NOTLEFT (NOT A) (\<parallel><A>\<parallel>)"
 | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5892 | then obtain a' N' where eq: "M = NotL <a'>.N' x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5893 | and fin: "fin (NotL <a'>.N' x) x" and imp: "<a'>:N' \<in> \<parallel><A>\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5894 | by (erule_tac NOTLEFT_elim, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5895 | from eq asm obtain N'' where eq': "M' = NotL <a'>.N'' x" and red1: "N' \<longrightarrow>\<^isub>a* N''" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5896 | using a_star_redu_NotL_elim by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5897 | from fin have "fin M' x" using eq asm by (simp add: fin_a_star_reduce) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5898 | moreover | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5899 | from imp red1 have "<a'>:N'' \<in> \<parallel><A>\<parallel>" using ih1 by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5900 | ultimately have "(x):M' \<in> NOTLEFT (NOT A) (\<parallel><A>\<parallel>)" using eq' by (simp, blast) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5901 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5902 | ultimately have "(x):M' \<in> AXIOMSn (NOT A) \<union> BINDINGn (NOT A) (\<parallel><NOT A>\<parallel>) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5903 | \<union> NOTLEFT (NOT A) (\<parallel><A>\<parallel>)" by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5904 | then have "(x):M' \<in> NEGn (NOT A) (\<parallel><NOT A>\<parallel>)" by simp | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5905 | then show "(x):M' \<in> (\<parallel>(NOT A)\<parallel>)" using NEG_simp by blast | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5906 | } | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5907 | qed | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5908 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5909 | lemma CANDs_preserved_single: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5910 | shows "<a>:M \<in> \<parallel><B>\<parallel> \<Longrightarrow> M \<longrightarrow>\<^isub>a M' \<Longrightarrow> <a>:M' \<in> \<parallel><B>\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5911 | and "(x):M \<in> \<parallel>(B)\<parallel> \<Longrightarrow> M \<longrightarrow>\<^isub>a M' \<Longrightarrow> (x):M' \<in> \<parallel>(B)\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5912 | by (auto simp add: a_starI CANDs_preserved) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5913 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5914 | lemma fic_CANDS: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5915 | assumes a: "\<not>fic M a" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5916 | and b: "<a>:M \<in> \<parallel><B>\<parallel>" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5917 | shows "<a>:M \<in> AXIOMSc B \<or> <a>:M \<in> BINDINGc B (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5918 | using a b | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5919 | apply(nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5920 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5921 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5922 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5923 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5924 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5925 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5926 | apply(auto simp add: ctrm.inject)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5927 | apply(simp add: alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5928 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5929 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5930 | apply(auto simp add: calc_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5931 | apply(drule_tac pi="[(a,aa)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5932 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5933 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5934 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5935 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5936 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5937 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5938 | apply(auto simp add: ctrm.inject)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5939 | apply(simp add: alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5940 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5941 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5942 | apply(erule conjE)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5943 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5944 | apply(drule_tac pi="[(a,c)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5945 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5946 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5947 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5948 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5949 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5950 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5951 | apply(auto simp add: ctrm.inject)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5952 | apply(simp add: alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5953 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5954 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5955 | apply(erule conjE)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5956 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5957 | apply(drule_tac pi="[(a,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5958 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5959 | apply(simp add: alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5960 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5961 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5962 | apply(erule conjE)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5963 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5964 | apply(drule_tac pi="[(a,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5965 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5966 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5967 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5968 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5969 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5970 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5971 | apply(auto simp add: ctrm.inject)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5972 | apply(simp add: alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5973 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5974 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5975 | apply(erule conjE)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5976 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5977 | apply(drule_tac pi="[(a,b)]" in fic.eqvt(2)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5978 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5979 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5980 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5981 | lemma fin_CANDS_aux: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5982 | assumes a: "\<not>fin M x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5983 | and b: "(x):M \<in> (NEGn B (\<parallel><B>\<parallel>))" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5984 | shows "(x):M \<in> AXIOMSn B \<or> (x):M \<in> BINDINGn B (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5985 | using a b | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5986 | apply(nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5987 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5988 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5989 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5990 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5991 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5992 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5993 | apply(auto simp add: ntrm.inject)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5994 | apply(simp add: alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5995 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5996 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5997 | apply(auto simp add: calc_atm)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5998 | apply(drule_tac pi="[(x,xa)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 5999 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6000 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6001 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6002 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6003 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6004 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6005 | apply(auto simp add: ntrm.inject)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6006 | apply(simp add: alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6007 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6008 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6009 | apply(erule conjE)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6010 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6011 | apply(drule_tac pi="[(x,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6012 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6013 | apply(simp add: alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6014 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6015 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6016 | apply(erule conjE)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6017 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6018 | apply(drule_tac pi="[(x,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6019 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6020 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6021 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6022 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6023 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6024 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6025 | apply(auto simp add: ntrm.inject)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6026 | apply(simp add: alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6027 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6028 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6029 | apply(erule conjE)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6030 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6031 | apply(drule_tac pi="[(x,z)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6032 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6033 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6034 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6035 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6036 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6037 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6038 | apply(auto simp add: ntrm.inject)[1] | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6039 | apply(simp add: alpha) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6040 | apply(erule disjE) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6041 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6042 | apply(erule conjE)+ | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6043 | apply(simp) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6044 | apply(drule_tac pi="[(x,y)]" in fin.eqvt(1)) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6045 | apply(simp add: calc_atm) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6046 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6047 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6048 | lemma fin_CANDS: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6049 | assumes a: "\<not>fin M x" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6050 | and b: "(x):M \<in> (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6051 | shows "(x):M \<in> AXIOMSn B \<or> (x):M \<in> BINDINGn B (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6052 | apply(rule fin_CANDS_aux) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6053 | apply(rule a) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6054 | apply(rule NEG_elim) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6055 | apply(rule b) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6056 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6057 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6058 | lemma BINDING_implies_CAND: | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6059 | shows "<c>:M \<in> BINDINGc B (\<parallel>(B)\<parallel>) \<Longrightarrow> <c>:M \<in> (\<parallel><B>\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6060 | and "(x):N \<in> BINDINGn B (\<parallel><B>\<parallel>) \<Longrightarrow> (x):N \<in> (\<parallel>(B)\<parallel>)" | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6061 | apply - | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6062 | apply(nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6063 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6064 | apply(rule NEG_intro) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6065 | apply(nominal_induct B rule: ty.strong_induct) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6066 | apply(auto) | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6067 | done | 
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6068 | |
| 
9be4ab2acc13
split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
 wenzelm parents: diff
changeset | 6069 | end |