src/HOL/Nominal/Examples/Class3.thy
author nipkow
Tue, 17 Jun 2025 06:29:55 +0200
changeset 82732 71574900b6ba
parent 80914 d97fdabd9e2b
permissions -rw-r--r--
merged
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 Class3
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
     2
  imports Class2
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
     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
63167
0909deb8059b isabelle update_cartouches -c -t;
wenzelm
parents: 61943
diff changeset
     5
text \<open>3rd Main Lemma\<close>
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
     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 Cut_a_redu_elim:
53015
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
     8
  assumes a: "Cut <a>.M (x).N \<longrightarrow>\<^sub>a R"
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
     9
  shows "(\<exists>M'. R = Cut <a>.M' (x).N \<and> M \<longrightarrow>\<^sub>a M') \<or>
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
    10
         (\<exists>N'. R = Cut <a>.M (x).N' \<and> N \<longrightarrow>\<^sub>a N') \<or>
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
    11
         (Cut <a>.M (x).N \<longrightarrow>\<^sub>c R) \<or>
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
    12
         (Cut <a>.M (x).N \<longrightarrow>\<^sub>l R)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    13
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    14
  apply(erule_tac a_redu.cases)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    15
                  apply(simp_all)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    16
   apply(simp_all add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    17
   apply(rule disjI1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    18
   apply(auto simp add: alpha)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    19
    apply(rule_tac x="[(a,aa)]\<bullet>M'" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    20
    apply(perm_simp add: fresh_left calc_atm a_redu.eqvt fresh_a_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    21
   apply(rule_tac x="[(a,aa)]\<bullet>M'" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    22
   apply(perm_simp add: fresh_left calc_atm a_redu.eqvt fresh_a_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    23
  apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    24
  apply(rule disjI1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    25
  apply(auto simp add: alpha)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    26
   apply(rule_tac x="[(x,xa)]\<bullet>N'" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    27
   apply(perm_simp add: fresh_left calc_atm a_redu.eqvt fresh_a_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    28
  apply(rule_tac x="[(x,xa)]\<bullet>N'" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    29
  apply(perm_simp add: fresh_left calc_atm a_redu.eqvt fresh_a_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    30
  done
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
    31
9be4ab2acc13 split Class.thy into parts to 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
lemma Cut_c_redu_elim:
53015
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
    33
  assumes a: "Cut <a>.M (x).N \<longrightarrow>\<^sub>c 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
    34
  shows "(R = M{a:=(x).N} \<and> \<not>fic M a) \<or>
9be4ab2acc13 split Class.thy into parts to 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
         (R = N{x:=<a>.M} \<and> \<not>fin N x)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    36
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    37
  apply(erule_tac c_redu.cases)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    38
   apply(simp_all)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    39
   apply(simp_all add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    40
   apply(rule disjI1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    41
   apply(auto simp add: alpha)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    42
       apply(simp add: subst_rename fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    43
      apply(simp add: subst_rename fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    44
     apply(drule_tac pi="[(a,aa)]" in fic.eqvt(2))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    45
     apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    46
    apply(simp add: subst_rename fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    47
   apply(drule_tac pi="[(a,aa)]" in fic.eqvt(2))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    48
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    49
  apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    50
  apply(auto simp add: alpha)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    51
      apply(simp add: subst_rename fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    52
     apply(drule_tac pi="[(x,xa)]" in fin.eqvt(1))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    53
     apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    54
    apply(simp add: subst_rename fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    55
   apply(simp add: subst_rename fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    56
  apply(drule_tac pi="[(x,xa)]" in fin.eqvt(1))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    57
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    58
  done
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
    59
9be4ab2acc13 split Class.thy into parts to 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
lemma not_fic_crename_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
    61
  assumes a: "fic M c" "c\<sharp>(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
    62
  shows "fic (M[a\<turnstile>c>b]) c" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    63
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    64
  apply(nominal_induct M avoiding: c a b rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    65
             apply(auto dest!: fic_elims intro!: fic.intros simp add: fresh_prod fresh_atm rename_fresh abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    66
  done
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
    67
9be4ab2acc13 split Class.thy into parts to 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
lemma not_fic_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
    69
  assumes a: "\<not>(fic (M[a\<turnstile>c>b]) c)" "c\<sharp>(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
    70
  shows "\<not>(fic M c)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    71
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    72
  apply(auto dest:  not_fic_crename_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    73
  done
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
    74
9be4ab2acc13 split Class.thy into parts to 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
lemma not_fin_crename_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
    76
  assumes a: "fin 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
    77
  shows "fin (M[a\<turnstile>c>b]) y" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    78
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    79
  apply(nominal_induct M avoiding: a b rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    80
             apply(auto dest!: fin_elims intro!: fin.intros simp add: fresh_prod fresh_atm rename_fresh abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    81
  done
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
    82
9be4ab2acc13 split Class.thy into parts to 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
lemma not_fin_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
    84
  assumes a: "\<not>(fin (M[a\<turnstile>c>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
    85
  shows "\<not>(fin M y)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    86
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    87
  apply(auto dest:  not_fin_crename_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    88
  done
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
    89
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_fresh_interesting1:
9be4ab2acc13 split Class.thy into parts to 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
  fixes c::"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
    92
  assumes a: "c\<sharp>(M[a\<turnstile>c>b])" "c\<sharp>(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
    93
  shows "c\<sharp>M"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    94
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    95
  apply(nominal_induct M avoiding: c a b rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    96
             apply(auto split: if_splits simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
    97
  done
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
    98
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_fresh_interesting2:
9be4ab2acc13 split Class.thy into parts to 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
  fixes x::"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
   101
  assumes a: "x\<sharp>(M[a\<turnstile>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
   102
  shows "x\<sharp>M"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   103
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   104
  apply(nominal_induct M avoiding: x a b rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   105
             apply(auto split: if_splits simp add: abs_fresh abs_supp fin_supp fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   106
  done
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
   107
9be4ab2acc13 split Class.thy into parts to 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
9be4ab2acc13 split Class.thy into parts to 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
lemma fic_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
   110
  assumes a: "fic (M[a\<turnstile>c>b]) c" "c\<sharp>(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
   111
  shows "fic M c" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   112
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   113
  apply(nominal_induct M avoiding: c a b rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   114
             apply(auto dest!: fic_elims intro!: fic.intros simp add: fresh_prod fresh_atm rename_fresh abs_fresh
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   115
      split: if_splits)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   116
       apply(auto dest: crename_fresh_interesting1 simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   117
  done
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
   118
9be4ab2acc13 split Class.thy into parts to 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
lemma fin_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
   120
  assumes a: "fin (M[a\<turnstile>c>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
   121
  shows "fin M x" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   122
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   123
  apply(nominal_induct M avoiding: x a b rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   124
             apply(auto dest!: fin_elims intro!: fin.intros simp add: fresh_prod fresh_atm rename_fresh abs_fresh
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   125
      split: if_splits)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   126
        apply(auto dest: crename_fresh_interesting2 simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   127
  done
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
   128
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_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
   130
  assumes a: "R[a\<turnstile>c>b] = Cut <c>.M (x).N" "c\<sharp>(a,b,N,R)" "x\<sharp>(M,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
   131
  shows "\<exists>M' N'. R = Cut <c>.M' (x).N' \<and> M'[a\<turnstile>c>b] = M \<and> N'[a\<turnstile>c>b] = N \<and> c\<sharp>N' \<and> x\<sharp>M'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   132
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   133
  apply(nominal_induct R avoiding: a b c x M N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   134
             apply(auto split: if_splits)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   135
  apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   136
  apply(auto simp add: alpha)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   137
    apply(rule_tac x="[(name,x)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   138
    apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   139
    apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   140
    apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   141
    apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   142
    apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   143
   apply(rule_tac x="[(coname,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   144
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   145
   apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   146
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   147
   apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   148
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   149
   apply(auto simp add: fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   150
  apply(rule_tac x="[(coname,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   151
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   152
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   153
  apply(rule_tac x="[(name,x)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   154
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   155
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   156
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   157
  apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   158
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   159
  apply(auto simp add: fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   160
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   161
   apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   162
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   163
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   164
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   165
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   166
  done
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
   167
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_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
   169
  assumes a: "R[a\<turnstile>c>b] = NotR (x).N c" "x\<sharp>R" "c\<sharp>(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
   170
  shows "\<exists>N'. (R = NotR (x).N' c) \<and> N'[a\<turnstile>c>b] = N" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   171
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   172
  apply(nominal_induct R avoiding: a b c x N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   173
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   174
  apply(rule_tac x="[(name,x)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   175
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   176
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   177
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   178
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   179
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   180
  done
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
   181
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_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
   183
  assumes a: "R[a\<turnstile>c>b] = NotR (x).N c" "x\<sharp>R" "c\<sharp>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
   184
  shows "(\<exists>N'. (R = NotR (x).N' c) \<and> N'[a\<turnstile>c>b] = N) \<or> (\<exists>N'. (R = NotR (x).N' a) \<and> b=c \<and> N'[a\<turnstile>c>b] = N)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   185
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   186
  apply(nominal_induct R avoiding: a b c x N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   187
             apply(auto split: if_splits simp add: fresh_prod fresh_atm abs_fresh alpha trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   188
   apply(rule_tac x="[(name,x)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   189
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   190
   apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   191
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   192
   apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   193
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   194
  apply(rule_tac x="[(name,x)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   195
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   196
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   197
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   198
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   199
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   200
  done
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
   201
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_NotR_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
   203
  assumes a: "R[a\<turnstile>c>b] = NotR (x).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
   204
  shows "(a=c \<and> a=b) \<or> (a\<noteq>c)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   205
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   206
  apply(nominal_induct R avoiding: a b c x N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   207
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   208
  done
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
   209
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_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
   211
  assumes a: "R[a\<turnstile>c>b] = NotL <c>.N y" "c\<sharp>(R,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
   212
  shows "\<exists>N'. (R = NotL <c>.N' y) \<and> N'[a\<turnstile>c>b] = N" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   213
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   214
  apply(nominal_induct R avoiding: a b c y N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   215
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   216
  apply(rule_tac x="[(coname,c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   217
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   218
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   219
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   220
  apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   221
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   222
  done
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
   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 crename_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
   225
  assumes a: "R[a\<turnstile>c>b] = AndL1 (x).N y" "x\<sharp>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
   226
  shows "\<exists>N'. (R = AndL1 (x).N' y) \<and> N'[a\<turnstile>c>b] = N" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   227
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   228
  apply(nominal_induct R avoiding: a b x y N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   229
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   230
  apply(rule_tac x="[(name1,x)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   231
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   232
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   233
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   234
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   235
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   236
  done
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
   237
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_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
   239
  assumes a: "R[a\<turnstile>c>b] = AndL2 (x).N y" "x\<sharp>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
   240
  shows "\<exists>N'. (R = AndL2 (x).N' y) \<and> N'[a\<turnstile>c>b] = N" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   241
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   242
  apply(nominal_induct R avoiding: a b x y N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   243
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   244
  apply(rule_tac x="[(name1,x)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   245
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   246
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   247
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   248
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   249
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   250
  done
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
   251
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_AndR_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
   253
  assumes a: "R[a\<turnstile>c>b] = AndR <c>.M <d>.N e" 
9be4ab2acc13 split Class.thy into parts to 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
  shows "(a=e \<and> a=b) \<or> (a\<noteq>e)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   255
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   256
  apply(nominal_induct R avoiding: a b c d e M N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   257
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   258
  done
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
   259
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_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
   261
  assumes a: "R[a\<turnstile>c>b] = AndR <c>.M <d>.N e" "c\<sharp>(a,b,d,e,N,R)" "d\<sharp>(a,b,c,e,M,R)" "e\<sharp>(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
   262
  shows "\<exists>M' N'. R = AndR <c>.M' <d>.N' e \<and> M'[a\<turnstile>c>b] = M \<and> N'[a\<turnstile>c>b] = N \<and> c\<sharp>N' \<and> d\<sharp>M'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   263
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   264
  apply(nominal_induct R avoiding: a b c d e M N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   265
             apply(auto split: if_splits simp add: trm.inject alpha)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   266
        apply(simp add: fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   267
       apply(rule_tac x="[(coname2,d)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   268
       apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   269
       apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   270
      apply(rule_tac x="[(coname1,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   271
      apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   272
      apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   273
     apply(rule_tac x="[(coname1,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   274
     apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   275
     apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   276
    apply(rule_tac x="[(coname2,d)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   277
    apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   278
    apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   279
   apply(rule_tac x="[(coname1,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   280
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   281
   apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   282
  apply(rule_tac x="[(coname1,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   283
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   284
  apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   285
  apply(rule_tac x="[(coname2,d)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   286
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   287
  apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   288
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   289
   apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   290
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   291
  apply(drule_tac s="trm2[a\<turnstile>c>b]" in  sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   292
  apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   293
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   294
  done
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
   295
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_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
   297
  assumes a: "R[a\<turnstile>c>b] = AndR <c>.M <d>.N e" "c\<sharp>(a,b,d,e,N,R)" "d\<sharp>(a,b,c,e,M,R)" "e\<sharp>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
   298
  shows "(\<exists>M' N'. R = AndR <c>.M' <d>.N' e \<and> M'[a\<turnstile>c>b] = M \<and> N'[a\<turnstile>c>b] = N \<and> c\<sharp>N' \<and> d\<sharp>M') \<or>
9be4ab2acc13 split Class.thy into parts to 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
         (\<exists>M' N'. R = AndR <c>.M' <d>.N' a \<and> b=e \<and> M'[a\<turnstile>c>b] = M \<and> N'[a\<turnstile>c>b] = N \<and> c\<sharp>N' \<and> d\<sharp>M')"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   300
  using a [[simproc del: defined_all]]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   301
  apply(nominal_induct R avoiding: a b c d e M N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   302
             apply(auto split: if_splits simp add: trm.inject alpha)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   303
            apply(auto split: if_splits simp add: trm.inject alpha)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   304
           apply(auto split: if_splits simp add: trm.inject alpha)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   305
          apply(auto split: if_splits simp add: trm.inject alpha)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   306
         apply(simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm trm.inject alpha)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   307
         apply(case_tac "coname3=a")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   308
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   309
          apply(rule_tac x="[(coname1,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   310
          apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   311
          apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   312
          apply(rule_tac x="[(coname2,d)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   313
          apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   314
          apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm trm.inject alpha split: if_splits)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   315
           apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   316
           apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   317
           apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   318
          apply(drule_tac s="trm2[a\<turnstile>c>e]" in  sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   319
          apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   320
          apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   321
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   322
         apply(rule_tac x="[(coname1,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   323
         apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   324
         apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   325
         apply(rule_tac x="[(coname2,d)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   326
         apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   327
         apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm trm.inject alpha split: if_splits)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   328
          apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   329
          apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   330
          apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   331
         apply(drule_tac s="trm2[a\<turnstile>c>b]" in  sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   332
         apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   333
         apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   334
        apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   335
  done
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
   336
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_OrR1_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
   338
  assumes a: "R[a\<turnstile>c>b] = OrR1 <c>.M e" 
9be4ab2acc13 split Class.thy into parts to 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
  shows "(a=e \<and> a=b) \<or> (a\<noteq>e)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   340
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   341
  apply(nominal_induct R avoiding: a b c e M rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   342
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   343
  done
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
   344
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_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
   346
  assumes a: "R[a\<turnstile>c>b] = OrR1 <c>.N d" "c\<sharp>(R,a,b)" "d\<sharp>(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
   347
  shows "\<exists>N'. (R = OrR1 <c>.N' d) \<and> N'[a\<turnstile>c>b] = N" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   348
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   349
  apply(nominal_induct R avoiding: a b c d N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   350
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   351
  apply(rule_tac x="[(coname1,c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   352
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   353
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   354
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   355
  apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   356
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   357
  done
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
   358
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_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
   360
  assumes a: "R[a\<turnstile>c>b] = OrR1 <c>.N d" "c\<sharp>(R,a,b)" "d\<sharp>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
   361
  shows "(\<exists>N'. (R = OrR1 <c>.N' d) \<and> N'[a\<turnstile>c>b] = N) \<or>
9be4ab2acc13 split Class.thy into parts to 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
         (\<exists>N'. (R = OrR1 <c>.N' a) \<and> b=d \<and> N'[a\<turnstile>c>b] = N)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   363
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   364
  apply(nominal_induct R avoiding: a b c d N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   365
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   366
   apply(rule_tac x="[(coname1,c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   367
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   368
   apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   369
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   370
   apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   371
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   372
  apply(rule_tac x="[(coname1,c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   373
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   374
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   375
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   376
  apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   377
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   378
  done
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
   379
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_OrR2_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
   381
  assumes a: "R[a\<turnstile>c>b] = OrR2 <c>.M e" 
9be4ab2acc13 split Class.thy into parts to 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
  shows "(a=e \<and> a=b) \<or> (a\<noteq>e)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   383
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   384
  apply(nominal_induct R avoiding: a b c e M rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   385
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   386
  done
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
   387
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_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
   389
  assumes a: "R[a\<turnstile>c>b] = OrR2 <c>.N d" "c\<sharp>(R,a,b)" "d\<sharp>(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
   390
  shows "\<exists>N'. (R = OrR2 <c>.N' d) \<and> N'[a\<turnstile>c>b] = N" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   391
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   392
  apply(nominal_induct R avoiding: a b c d N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   393
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   394
  apply(rule_tac x="[(coname1,c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   395
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   396
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   397
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   398
  apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   399
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   400
  done
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
   401
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_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
   403
  assumes a: "R[a\<turnstile>c>b] = OrR2 <c>.N d" "c\<sharp>(R,a,b)" "d\<sharp>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
   404
  shows "(\<exists>N'. (R = OrR2 <c>.N' d) \<and> N'[a\<turnstile>c>b] = N) \<or>
9be4ab2acc13 split Class.thy into parts to 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
         (\<exists>N'. (R = OrR2 <c>.N' a) \<and> b=d \<and> N'[a\<turnstile>c>b] = N)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   406
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   407
  apply(nominal_induct R avoiding: a b c d N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   408
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   409
   apply(rule_tac x="[(coname1,c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   410
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   411
   apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   412
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   413
   apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   414
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   415
  apply(rule_tac x="[(coname1,c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   416
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   417
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   418
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   419
  apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   420
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   421
  done
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
   422
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_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
   424
  assumes a: "R[a\<turnstile>c>b] = OrL (x).M (y).N z" "x\<sharp>(y,z,N,R)" "y\<sharp>(x,z,M,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
   425
  shows "\<exists>M' N'. R = OrL (x).M' (y).N' z \<and> M'[a\<turnstile>c>b] = M \<and> N'[a\<turnstile>c>b] = N \<and> x\<sharp>N' \<and> y\<sharp>M'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   426
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   427
  apply(nominal_induct R avoiding: a b x y z M N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   428
             apply(auto split: if_splits simp add: trm.inject alpha)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   429
    apply(rule_tac x="[(name2,y)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   430
    apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   431
    apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   432
   apply(rule_tac x="[(name1,x)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   433
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   434
   apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   435
  apply(rule_tac x="[(name1,x)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   436
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   437
  apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   438
  apply(rule_tac x="[(name2,y)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   439
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   440
  apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   441
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   442
   apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   443
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   444
  apply(drule_tac s="trm2[a\<turnstile>c>b]" in  sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   445
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   446
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   447
  done
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
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
   449
lemma crename_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
   450
  assumes a: "R[a\<turnstile>c>b] = ImpL <c>.M (y).N z" "c\<sharp>(a,b,N,R)" "y\<sharp>(z,M,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
   451
  shows "\<exists>M' N'. R = ImpL <c>.M' (y).N' z \<and> M'[a\<turnstile>c>b] = M \<and> N'[a\<turnstile>c>b] = N \<and> c\<sharp>N' \<and> y\<sharp>M'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   452
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   453
  apply(nominal_induct R avoiding: a b c y z M N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   454
             apply(auto split: if_splits simp add: trm.inject alpha)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   455
    apply(rule_tac x="[(name1,y)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   456
    apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   457
    apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   458
   apply(rule_tac x="[(coname,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   459
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   460
   apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   461
  apply(rule_tac x="[(coname,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   462
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   463
  apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   464
  apply(rule_tac x="[(name1,y)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   465
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   466
  apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   467
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   468
   apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   469
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   470
  apply(drule_tac s="trm2[a\<turnstile>c>b]" in  sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   471
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   472
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   473
  done
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
   474
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_ImpR_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
   476
  assumes a: "R[a\<turnstile>c>b] = ImpR (x).<c>.M e" 
9be4ab2acc13 split Class.thy into parts to 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
  shows "(a=e \<and> a=b) \<or> (a\<noteq>e)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   478
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   479
  apply(nominal_induct R avoiding: x a b c e M rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   480
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   481
  done
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
   482
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_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
   484
  assumes a: "R[a\<turnstile>c>b] = ImpR (x).<c>.N d" "c\<sharp>(R,a,b)" "d\<sharp>(a,b)" "x\<sharp>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
   485
  shows "\<exists>N'. (R = ImpR (x).<c>.N' d) \<and> N'[a\<turnstile>c>b] = N" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   486
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   487
  apply(nominal_induct R avoiding: a b x c d N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   488
             apply(auto split: if_splits simp add: fresh_prod fresh_atm abs_perm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   489
   apply(rule_tac x="[(name,x)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   490
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   491
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   492
  apply(rule_tac x="[(name,x)]\<bullet>[(coname1, c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   493
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   494
  apply(simp add: abs_supp fin_supp abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   495
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   496
  apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   497
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   498
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   499
  done
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
   500
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
   501
lemma crename_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
   502
  assumes a: "R[a\<turnstile>c>b] = ImpR (x).<c>.N d" "c\<sharp>(R,a,b)" "x\<sharp>R" "d\<sharp>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
   503
  shows "(\<exists>N'. (R = ImpR (x).<c>.N' d) \<and> N'[a\<turnstile>c>b] = N) \<or>
9be4ab2acc13 split Class.thy into parts to 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
         (\<exists>N'. (R = ImpR (x).<c>.N' a) \<and> b=d \<and> N'[a\<turnstile>c>b] = N)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   505
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   506
  apply(nominal_induct R avoiding: x a b c d N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   507
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject abs_perm calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   508
   apply(rule_tac x="[(name,x)]\<bullet>[(coname1,c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   509
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   510
   apply(simp add: abs_fresh fresh_left calc_atm fresh_prod abs_supp fin_supp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   511
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   512
   apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   513
   apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   514
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   515
  apply(rule_tac x="[(name,x)]\<bullet>[(coname1,c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   516
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   517
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod abs_supp fin_supp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   518
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   519
  apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   520
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   521
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   522
  done
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
   523
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_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
   525
  assumes a: "N[a\<turnstile>c>b] = 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
   526
  shows "\<exists>d. N = Ax x d"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   527
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   528
  apply(nominal_induct N avoiding: a b rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   529
             apply(auto split: if_splits)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   530
  apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   531
  done
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
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_interesting1:
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "distinct [a,b,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
   535
  shows "M[a\<turnstile>c>c][c\<turnstile>c>b] = M[c\<turnstile>c>b][a\<turnstile>c>b]"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   536
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   537
  apply(nominal_induct M avoiding: a c b rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   538
             apply(auto simp add: rename_fresh simp add: trm.inject alpha)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   539
     apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   540
    apply(rotate_tac 12)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   541
    apply(drule_tac x="a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   542
    apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   543
    apply(drule_tac x="c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   544
    apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   545
    apply(drule_tac x="b" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   546
    apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   547
   apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   548
  apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   549
  done
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
   550
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_interesting2:
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "a\<noteq>c" "a\<noteq>d" "a\<noteq>b" "c\<noteq>d" "b\<noteq>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
  shows "M[a\<turnstile>c>b][c\<turnstile>c>d] = M[c\<turnstile>c>d][a\<turnstile>c>b]"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   554
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   555
  apply(nominal_induct M avoiding: a c b d rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   556
             apply(auto simp add: rename_fresh simp add: trm.inject alpha)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   557
  done
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
   558
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_interesting3:
9be4ab2acc13 split Class.thy into parts to 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
  shows "M[a\<turnstile>c>c][x\<turnstile>n>y] = M[x\<turnstile>n>y][a\<turnstile>c>c]"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   561
  apply(nominal_induct M avoiding: a c x y rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   562
             apply(auto simp add: rename_fresh simp add: trm.inject alpha)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   563
  done
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
   564
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_credu:
53015
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
   566
  assumes a: "(M[a\<turnstile>c>b]) \<longrightarrow>\<^sub>c M'"
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
   567
  shows "\<exists>M0. M0[a\<turnstile>c>b]=M' \<and> M \<longrightarrow>\<^sub>c M0"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   568
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   569
  apply(nominal_induct M\<equiv>"M[a\<turnstile>c>b]" M' avoiding: M a b rule: c_redu.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   570
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   571
   apply(drule crename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   572
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   573
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   574
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   575
   apply(rule_tac x="M'{a:=(x).N'}" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   576
   apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   577
    apply(simp add: fresh_atm abs_fresh subst_comm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   578
   apply(rule c_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   579
     apply(auto dest: not_fic_crename)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   580
    apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   581
   apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   582
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   583
  apply(drule crename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   584
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   585
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   586
  apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   587
  apply(rule_tac x="N'{x:=<a>.M'}" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   588
  apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   589
   apply(simp add: fresh_atm abs_fresh subst_comm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   590
  apply(rule c_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   591
    apply(auto dest: not_fin_crename)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   592
   apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   593
  apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   594
  done
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
   595
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_lredu:
53015
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
   597
  assumes a: "(M[a\<turnstile>c>b]) \<longrightarrow>\<^sub>l M'"
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
   598
  shows "\<exists>M0. M0[a\<turnstile>c>b]=M' \<and> M \<longrightarrow>\<^sub>l M0"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   599
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   600
  apply(nominal_induct M\<equiv>"M[a\<turnstile>c>b]" M' avoiding: M a b rule: l_redu.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   601
         apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   602
         apply(drule crename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   603
           apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   604
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   605
         apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   606
         apply(case_tac "aa=ba")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   607
          apply(simp add: crename_id)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   608
          apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   609
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   610
           apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   611
          apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   612
         apply(frule crename_ax2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   613
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   614
         apply(case_tac "d=aa")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   615
          apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   616
          apply(rule_tac x="M'[a\<turnstile>c>aa]" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   617
          apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   618
           apply(rule crename_interesting1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   619
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   620
          apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   621
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   622
           apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   623
          apply(auto dest: fic_crename simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   624
         apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   625
         apply(rule_tac x="M'[a\<turnstile>c>b]" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   626
         apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   627
          apply(rule crename_interesting2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   628
              apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   629
             apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   630
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   631
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   632
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   633
         apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   634
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   635
          apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   636
         apply(auto dest: fic_crename simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   637
        apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   638
        apply(drule crename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   639
          apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   640
         apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   641
        apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   642
        apply(case_tac "aa=b")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   643
         apply(simp add: crename_id)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   644
         apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   645
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   646
          apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   647
         apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   648
        apply(frule crename_ax2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   649
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   650
        apply(case_tac "d=aa")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   651
         apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   652
        apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   653
        apply(rule_tac x="N'[x\<turnstile>n>y]" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   654
        apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   655
         apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   656
         apply(rule crename_interesting3)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   657
        apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   658
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   659
         apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   660
        apply(auto dest: fin_crename simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   661
    (* LNot *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   662
       apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   663
       apply(drule crename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   664
         apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   665
        apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   666
       apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   667
       apply(drule crename_NotR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   668
         apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   669
        apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   670
       apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   671
       apply(drule crename_NotL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   672
        apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   673
       apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   674
       apply(rule_tac x="Cut <b>.N'b (x).N'a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   675
       apply(simp add: fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   676
       apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   677
            apply(auto simp add: fresh_prod intro: crename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   678
           apply(auto simp add: fresh_atm fresh_prod intro: crename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   679
          apply(auto simp add: fresh_atm fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   680
         apply(auto simp add: fresh_atm fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   681
        apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   682
       apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   683
    (* LAnd1 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   684
      apply(auto dest: fin_crename simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   685
      apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   686
      apply(drule crename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   687
        apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   688
       apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   689
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   690
      apply(drule crename_AndR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   691
         apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   692
        apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   693
       apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   694
      apply(drule crename_AndL1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   695
       apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   696
      apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   697
      apply(rule_tac x="Cut <a1>.M'a (x).N'a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   698
      apply(simp add: fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   699
      apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   700
           apply(auto simp add: fresh_atm abs_fresh fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   701
          apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: crename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   702
         apply(auto simp add: fresh_atm fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   703
        apply(auto simp add: fresh_atm fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   704
       apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   705
      apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   706
    (* LAnd2 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   707
     apply(auto dest: fin_crename simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   708
     apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   709
     apply(drule crename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   710
       apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   711
      apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   712
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   713
     apply(drule crename_AndR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   714
        apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   715
       apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   716
      apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   717
     apply(drule crename_AndL2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   718
      apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   719
     apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   720
     apply(rule_tac x="Cut <a2>.N'b (x).N'a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   721
     apply(simp add: fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   722
     apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   723
          apply(auto simp add: fresh_atm abs_fresh fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   724
         apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: crename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   725
        apply(auto simp add: fresh_atm fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   726
       apply(auto simp add: fresh_atm fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   727
      apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   728
     apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   729
    (* LOr1 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   730
    apply(auto dest: fin_crename simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   731
    apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   732
    apply(drule crename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   733
      apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   734
     apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   735
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   736
    apply(drule crename_OrL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   737
      apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   738
     apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   739
    apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   740
    apply(drule crename_OrR1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   741
      apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   742
     apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   743
    apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   744
    apply(rule_tac x="Cut <a>.N' (x1).M'a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   745
    apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   746
     apply(simp add: abs_fresh fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   747
    apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   748
         apply(auto simp add: fresh_atm abs_fresh fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   749
        apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: crename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   750
       apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   751
      apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   752
     apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   753
    apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   754
    (* LOr2 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   755
   apply(auto dest: fin_crename simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   756
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   757
   apply(drule crename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   758
     apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   759
    apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   760
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   761
   apply(drule crename_OrL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   762
     apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   763
    apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   764
   apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   765
   apply(drule crename_OrR2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   766
     apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   767
    apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   768
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   769
   apply(rule_tac x="Cut <a>.N' (x2).N'a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   770
   apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   771
    apply(simp add: abs_fresh fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   772
   apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   773
        apply(auto simp add: fresh_atm abs_fresh fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   774
       apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: crename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   775
      apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   776
     apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   777
    apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   778
   apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   779
    (* ImpL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   780
  apply(auto dest: fin_crename simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   781
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   782
  apply(drule crename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   783
    apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   784
   apply(simp add: fresh_prod abs_fresh fresh_atm abs_supp fin_supp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   785
  apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   786
  apply(drule crename_ImpL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   787
    apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   788
   apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   789
  apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   790
  apply(drule crename_ImpR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   791
     apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   792
    apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   793
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   794
  apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   795
  apply(rule_tac x="Cut <a>.(Cut <c>.M'a (x).N') (y).N'a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   796
  apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   797
   apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   798
  apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   799
       apply(auto simp add: fresh_atm abs_fresh abs_supp fin_supp fresh_prod intro: crename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   800
      apply(auto simp add: abs_fresh fresh_atm abs_supp fin_supp fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   801
     apply(auto simp add: abs_fresh fresh_atm abs_supp fin_supp fresh_prod intro: crename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   802
    apply(auto simp add: abs_fresh fresh_atm abs_supp fin_supp fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   803
   apply(auto simp add: abs_fresh fresh_atm abs_supp fin_supp fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   804
  apply(auto simp add: abs_fresh fresh_atm abs_supp fin_supp fresh_prod intro: crename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   805
  done
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
   806
9be4ab2acc13 split Class.thy into parts to 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
lemma crename_aredu:
53015
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
   808
  assumes a: "(M[a\<turnstile>c>b]) \<longrightarrow>\<^sub>a M'" "a\<noteq>b"
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
   809
  shows "\<exists>M0. M0[a\<turnstile>c>b]=M' \<and> M \<longrightarrow>\<^sub>a M0"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   810
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   811
  apply(nominal_induct "M[a\<turnstile>c>b]" M' avoiding: M a b rule: a_redu.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   812
                  apply(drule  crename_lredu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   813
                  apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   814
                 apply(drule  crename_credu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   815
                 apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   816
    (* Cut *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   817
                apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   818
                apply(drule crename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   819
                  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   820
                 apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   821
                apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   822
                apply(drule_tac x="M'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   823
                apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   824
                apply(drule_tac x="b" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   825
                apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   826
                apply(rule_tac x="Cut <a>.M0 (x).N'" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   827
                apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   828
                apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   829
                 apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   830
                  apply(rule crename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   831
                   apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   832
                  apply(drule crename_fresh_interesting2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   833
                  apply(simp add: fresh_a_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   834
                 apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   835
                apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   836
               apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   837
               apply(drule crename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   838
                 apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   839
                apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   840
               apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   841
               apply(drule_tac x="N'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   842
               apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   843
               apply(drule_tac x="b" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   844
               apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   845
               apply(rule_tac x="Cut <a>.M' (x).M0" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   846
               apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   847
               apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   848
                apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   849
                 apply(rule crename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   850
                  apply(simp add: abs_fresh abs_supp fin_supp fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   851
                  apply(drule crename_fresh_interesting1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   852
                   apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   853
                  apply(simp add: fresh_a_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   854
                 apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   855
                apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   856
               apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   857
    (* NotL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   858
              apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   859
              apply(drule crename_NotL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   860
               apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   861
              apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   862
              apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   863
              apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   864
              apply(drule_tac x="b" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   865
              apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   866
              apply(rule_tac x="NotL <a>.M0 x" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   867
              apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   868
              apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   869
    (* NotR *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   870
             apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   871
             apply(frule crename_NotR_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   872
             apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   873
              apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   874
             apply(drule crename_NotR')
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   875
               apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   876
              apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   877
             apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   878
              apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   879
              apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   880
              apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   881
              apply(drule_tac x="b" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   882
              apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   883
              apply(rule_tac x="NotR (x).M0 a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   884
              apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   885
              apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   886
             apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   887
             apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   888
             apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   889
             apply(drule_tac x="a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   890
             apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   891
             apply(rule_tac x="NotR (x).M0 aa" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   892
             apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   893
             apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   894
    (* AndR *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   895
            apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   896
            apply(frule crename_AndR_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   897
            apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   898
             apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   899
            apply(drule crename_AndR')
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   900
               apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   901
              apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   902
             apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   903
            apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   904
             apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   905
             apply(drule_tac x="M'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   906
             apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   907
             apply(drule_tac x="ba" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   908
             apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   909
             apply(rule_tac x="AndR <a>.M0 <b>.N' c" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   910
             apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   911
             apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   912
             apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   913
              apply(rule crename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   914
                apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   915
               apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   916
               apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   917
              apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   918
             apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   919
            apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   920
            apply(drule_tac x="M'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   921
            apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   922
            apply(drule_tac x="c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   923
            apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   924
            apply(rule_tac x="AndR <a>.M0 <b>.N' aa" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   925
            apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   926
            apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   927
            apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   928
             apply(rule crename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   929
               apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   930
              apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   931
              apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   932
             apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   933
            apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   934
           apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   935
           apply(frule crename_AndR_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   936
           apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   937
            apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   938
           apply(drule crename_AndR')
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   939
              apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   940
             apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   941
            apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   942
           apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   943
            apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   944
            apply(drule_tac x="N'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   945
            apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   946
            apply(drule_tac x="ba" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   947
            apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   948
            apply(rule_tac x="AndR <a>.M' <b>.M0 c" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   949
            apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   950
            apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   951
            apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   952
             apply(rule crename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   953
               apply(simp add: abs_fresh abs_supp fin_supp fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   954
               apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   955
              apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   956
             apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   957
            apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   958
           apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   959
           apply(drule_tac x="N'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   960
           apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   961
           apply(drule_tac x="c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   962
           apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   963
           apply(rule_tac x="AndR <a>.M' <b>.M0 aa" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   964
           apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   965
           apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   966
           apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   967
            apply(rule crename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   968
              apply(simp add: abs_fresh abs_supp fin_supp fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   969
              apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   970
             apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   971
            apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   972
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   973
    (* AndL1 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   974
          apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   975
          apply(drule crename_AndL1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   976
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   977
          apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   978
          apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   979
          apply(drule_tac x="a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   980
          apply(drule_tac x="b" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   981
          apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   982
          apply(rule_tac x="AndL1 (x).M0 y" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   983
          apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   984
          apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   985
    (* AndL2 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   986
         apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   987
         apply(drule crename_AndL2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   988
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   989
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   990
         apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   991
         apply(drule_tac x="a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   992
         apply(drule_tac x="b" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   993
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   994
         apply(rule_tac x="AndL2 (x).M0 y" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   995
         apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   996
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   997
    (* OrL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   998
        apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
   999
        apply(drule crename_OrL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1000
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1001
          apply(auto simp add: fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1002
         apply(auto simp add: fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1003
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1004
        apply(drule_tac x="M'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1005
        apply(drule_tac x="a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1006
        apply(drule_tac x="b" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1007
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1008
        apply(rule_tac x="OrL (x).M0 (y).N' z" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1009
        apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1010
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1011
        apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1012
         apply(rule crename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1013
           apply(simp add: abs_fresh abs_supp fin_supp fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1014
          apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1015
          apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1016
         apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1017
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1018
       apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1019
       apply(drule crename_OrL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1020
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1021
         apply(auto simp add: fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1022
        apply(auto simp add: fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1023
       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1024
       apply(drule_tac x="N'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1025
       apply(drule_tac x="a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1026
       apply(drule_tac x="b" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1027
       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1028
       apply(rule_tac x="OrL (x).M' (y).M0 z" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1029
       apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1030
       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1031
       apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1032
        apply(rule crename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1033
          apply(simp add: abs_fresh abs_supp fin_supp fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1034
          apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1035
         apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1036
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1037
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1038
    (* OrR1 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1039
      apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1040
      apply(frule crename_OrR1_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1041
      apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1042
       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1043
      apply(drule crename_OrR1')
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1044
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1045
       apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1046
      apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1047
       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1048
       apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1049
       apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1050
       apply(drule_tac x="ba" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1051
       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1052
       apply(rule_tac x="OrR1 <a>.M0 b" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1053
       apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1054
       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1055
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1056
      apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1057
      apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1058
      apply(drule_tac x="b" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1059
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1060
      apply(rule_tac x="OrR1 <a>.M0 aa" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1061
      apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1062
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1063
    (* OrR2 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1064
     apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1065
     apply(frule crename_OrR2_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1066
     apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1067
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1068
     apply(drule crename_OrR2')
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1069
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1070
      apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1071
     apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1072
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1073
      apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1074
      apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1075
      apply(drule_tac x="ba" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1076
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1077
      apply(rule_tac x="OrR2 <a>.M0 b" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1078
      apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1079
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1080
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1081
     apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1082
     apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1083
     apply(drule_tac x="b" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1084
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1085
     apply(rule_tac x="OrR2 <a>.M0 aa" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1086
     apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1087
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1088
    (* ImpL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1089
    apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1090
    apply(drule crename_ImpL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1091
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1092
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1093
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1094
    apply(drule_tac x="M'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1095
    apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1096
    apply(drule_tac x="b" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1097
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1098
    apply(rule_tac x="ImpL <a>.M0 (x).N' y" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1099
    apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1100
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1101
    apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1102
     apply(rule crename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1103
      apply(simp add: abs_fresh abs_supp fin_supp fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1104
     apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1105
     apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1106
    apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1107
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1108
   apply(drule crename_ImpL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1109
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1110
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1111
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1112
   apply(drule_tac x="N'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1113
   apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1114
   apply(drule_tac x="b" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1115
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1116
   apply(rule_tac x="ImpL <a>.M' (x).M0 y" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1117
   apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1118
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1119
   apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1120
    apply(rule crename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1121
     apply(simp add: abs_fresh abs_supp fin_supp fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1122
     apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1123
    apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1124
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1125
    (* ImpR *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1126
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1127
  apply(frule crename_ImpR_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1128
  apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1129
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1130
  apply(drule crename_ImpR')
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1131
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1132
    apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1133
   apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1134
  apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1135
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1136
   apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1137
   apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1138
   apply(drule_tac x="ba" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1139
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1140
   apply(rule_tac x="ImpR (x).<a>.M0 b" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1141
   apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1142
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1143
  apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1144
  apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1145
  apply(drule_tac x="aa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1146
  apply(drule_tac x="b" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1147
  apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1148
  apply(rule_tac x="ImpR (x).<a>.M0 aa" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1149
  apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1150
  apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1151
  done
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
  1152
9be4ab2acc13 split Class.thy into parts to 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
lemma SNa_preserved_renaming1:
9be4ab2acc13 split Class.thy into parts to 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
  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
  1155
  shows "SNa (M[a\<turnstile>c>b])"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1156
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1157
  apply(induct rule: SNa_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1158
  apply(case_tac "a=b")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1159
   apply(simp add: crename_id)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1160
  apply(rule SNaI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1161
  apply(drule crename_aredu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1162
   apply(blast)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1163
  done
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
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_interesting1:
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "distinct [x,y,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
  1167
  shows "M[x\<turnstile>n>z][z\<turnstile>n>y] = M[z\<turnstile>n>y][x\<turnstile>n>y]"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1168
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1169
  apply(nominal_induct M avoiding: x y z rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1170
             apply(auto simp add: rename_fresh simp add: trm.inject alpha)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1171
     apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1172
    apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1173
   apply(rotate_tac 12)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1174
   apply(drule_tac x="x" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1175
   apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1176
   apply(drule_tac x="y" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1177
   apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1178
   apply(drule_tac x="z" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1179
   apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1180
  apply(rotate_tac 11)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1181
  apply(drule_tac x="x" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1182
  apply(rotate_tac 14)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1183
  apply(drule_tac x="y" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1184
  apply(rotate_tac 14)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1185
  apply(drule_tac x="z" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1186
  apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1187
  done
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
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_interesting2:
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "x\<noteq>z" "x\<noteq>u" "x\<noteq>y" "z\<noteq>u" "y\<noteq>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
  1191
  shows "M[x\<turnstile>n>y][z\<turnstile>n>u] = M[z\<turnstile>n>u][x\<turnstile>n>y]"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1192
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1193
  apply(nominal_induct M avoiding: x y z u rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1194
             apply(auto simp add: rename_fresh simp add: trm.inject alpha)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1195
  done
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
  1196
9be4ab2acc13 split Class.thy into parts to 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
lemma not_fic_nrename_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
  1198
  assumes a: "fic M 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
  1199
  shows "fic (M[x\<turnstile>n>y]) c" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1200
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1201
  apply(nominal_induct M avoiding: c x y rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1202
             apply(auto dest!: fic_elims intro!: fic.intros simp add: fresh_prod fresh_atm rename_fresh abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1203
  done
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
  1204
9be4ab2acc13 split Class.thy into parts to 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
lemma not_fic_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
  1206
  assumes a: "\<not>(fic (M[x\<turnstile>n>y]) 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
  1207
  shows "\<not>(fic M c)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1208
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1209
  apply(auto dest:  not_fic_nrename_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1210
  done
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
  1211
9be4ab2acc13 split Class.thy into parts to 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
lemma fin_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
  1213
  assumes a: "fin M z" "z\<sharp>(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
  1214
  shows "fin (M[x\<turnstile>n>y]) z" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1215
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1216
  apply(nominal_induct M avoiding: x y z rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1217
             apply(auto dest!: fin_elims intro!: fin.intros simp add: fresh_prod fresh_atm rename_fresh abs_fresh
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1218
      split: if_splits)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1219
  done
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
  1220
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_fresh_interesting1:
9be4ab2acc13 split Class.thy into parts to 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
  fixes z::"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
  1223
  assumes a: "z\<sharp>(M[x\<turnstile>n>y])" "z\<sharp>(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
  1224
  shows "z\<sharp>M"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1225
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1226
  apply(nominal_induct M avoiding: x y z rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1227
             apply(auto split: if_splits simp add: abs_fresh abs_supp fin_supp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1228
  done
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
  1229
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_fresh_interesting2:
9be4ab2acc13 split Class.thy into parts to 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
  fixes c::"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
  1232
  assumes a: "c\<sharp>(M[x\<turnstile>n>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
  1233
  shows "c\<sharp>M"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1234
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1235
  apply(nominal_induct M avoiding: x y c rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1236
             apply(auto split: if_splits simp add: abs_fresh abs_supp fin_supp fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1237
  done
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
  1238
9be4ab2acc13 split Class.thy into parts to 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
lemma fin_nrename2:
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "fin (M[x\<turnstile>n>y]) z" "z\<sharp>(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
  1241
  shows "fin M z" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1242
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1243
  apply(nominal_induct M avoiding: x y z rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1244
             apply(auto dest!: fin_elims intro!: fin.intros simp add: fresh_prod fresh_atm rename_fresh abs_fresh
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1245
      split: if_splits)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1246
        apply(auto dest: nrename_fresh_interesting1 simp add: fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1247
  done
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
  1248
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1250
  assumes a: "R[x\<turnstile>n>y] = Cut <c>.M (z).N" "c\<sharp>(N,R)" "z\<sharp>(x,y,M,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
  1251
  shows "\<exists>M' N'. R = Cut <c>.M' (z).N' \<and> M'[x\<turnstile>n>y] = M \<and> N'[x\<turnstile>n>y] = N \<and> c\<sharp>N' \<and> z\<sharp>M'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1252
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1253
  apply(nominal_induct R avoiding: c y x z M N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1254
             apply(auto split: if_splits)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1255
  apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1256
  apply(auto simp add: alpha fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1257
  apply(rule_tac x="[(coname,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1258
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1259
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1260
  apply(rule_tac x="[(name,z)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1261
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1262
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1263
  apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1264
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1265
   apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1266
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1267
  apply(auto simp add: fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1268
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1269
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1270
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1271
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1272
  done
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
  1273
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1275
  assumes a: "R[x\<turnstile>n>y] = NotR (z).N c" "z\<sharp>(R,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
  1276
  shows "\<exists>N'. (R = NotR (z).N' c) \<and> N'[x\<turnstile>n>y] = N" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1277
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1278
  apply(nominal_induct R avoiding: x y c z N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1279
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1280
  apply(rule_tac x="[(name,z)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1281
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1282
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1283
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1284
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1285
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1286
  done
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
  1287
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1289
  assumes a: "R[x\<turnstile>n>y] = NotL <c>.N z" "c\<sharp>R" "z\<sharp>(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
  1290
  shows "\<exists>N'. (R = NotL <c>.N' z) \<and> N'[x\<turnstile>n>y] = N" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1291
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1292
  apply(nominal_induct R avoiding: x y c z N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1293
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1294
  apply(rule_tac x="[(coname,c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1295
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1296
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1297
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1298
  apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1299
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1300
  done
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
  1301
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1303
  assumes a: "R[x\<turnstile>n>y] = NotL <c>.N u" "c\<sharp>R" "x\<noteq>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
  1304
  shows "(\<exists>N'. (R = NotL <c>.N' u) \<and> N'[x\<turnstile>n>y] = N) \<or> (\<exists>N'. (R = NotL <c>.N' x) \<and> y=u \<and> N'[x\<turnstile>n>y] = N)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1305
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1306
  apply(nominal_induct R avoiding: y u c x N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1307
             apply(auto split: if_splits simp add: fresh_prod fresh_atm abs_fresh alpha trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1308
   apply(rule_tac x="[(coname,c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1309
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1310
   apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1311
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1312
   apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1313
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1314
  apply(rule_tac x="[(coname,c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1315
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1316
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1317
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1318
  apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1319
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1320
  done
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
  1321
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_NotL_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
  1323
  assumes a: "R[x\<turnstile>n>y] = NotL <c>.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
  1324
  shows "(x=u \<and> x=y) \<or> (x\<noteq>u)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1325
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1326
  apply(nominal_induct R avoiding: y u c x N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1327
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1328
  done
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
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1331
  assumes a: "R[x\<turnstile>n>y] = AndL1 (z).N u" "z\<sharp>(R,x,y)" "u\<sharp>(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
  1332
  shows "\<exists>N'. (R = AndL1 (z).N' u) \<and> N'[x\<turnstile>n>y] = N" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1333
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1334
  apply(nominal_induct R avoiding: z u x y N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1335
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1336
  apply(rule_tac x="[(name1,z)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1337
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1338
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1339
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1340
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1341
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1342
  done
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
  1343
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1345
  assumes a: "R[x\<turnstile>n>y] = AndL1 (v).N u" "v\<sharp>(R,u,x,y)" "x\<noteq>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
  1346
  shows "(\<exists>N'. (R = AndL1 (v).N' u) \<and> N'[x\<turnstile>n>y] = N) \<or> (\<exists>N'. (R = AndL1 (v).N' x) \<and> y=u \<and> N'[x\<turnstile>n>y] = N)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1347
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1348
  apply(nominal_induct R avoiding: y u v x N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1349
             apply(auto split: if_splits simp add: fresh_prod fresh_atm abs_fresh alpha trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1350
   apply(rule_tac x="[(name1,v)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1351
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1352
   apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1353
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1354
   apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1355
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1356
  apply(rule_tac x="[(name1,v)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1357
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1358
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1359
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1360
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1361
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1362
  done
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
  1363
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_AndL1_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
  1365
  assumes a: "R[x\<turnstile>n>y] = AndL1 (v).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
  1366
  shows "(x=u \<and> x=y) \<or> (x\<noteq>u)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1367
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1368
  apply(nominal_induct R avoiding: y u v x N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1369
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1370
  done
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
  1371
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1373
  assumes a: "R[x\<turnstile>n>y] = AndL2 (z).N u" "z\<sharp>(R,x,y)" "u\<sharp>(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
  1374
  shows "\<exists>N'. (R = AndL2 (z).N' u) \<and> N'[x\<turnstile>n>y] = N" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1375
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1376
  apply(nominal_induct R avoiding: z u x y N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1377
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1378
  apply(rule_tac x="[(name1,z)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1379
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1380
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1381
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1382
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1383
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1384
  done
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
  1385
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1387
  assumes a: "R[x\<turnstile>n>y] = AndL2 (v).N u" "v\<sharp>(R,u,x,y)" "x\<noteq>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
  1388
  shows "(\<exists>N'. (R = AndL2 (v).N' u) \<and> N'[x\<turnstile>n>y] = N) \<or> (\<exists>N'. (R = AndL2 (v).N' x) \<and> y=u \<and> N'[x\<turnstile>n>y] = N)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1389
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1390
  apply(nominal_induct R avoiding: y u v x N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1391
             apply(auto split: if_splits simp add: fresh_prod fresh_atm abs_fresh alpha trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1392
   apply(rule_tac x="[(name1,v)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1393
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1394
   apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1395
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1396
   apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1397
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1398
  apply(rule_tac x="[(name1,v)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1399
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1400
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1401
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1402
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1403
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1404
  done
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
  1405
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_AndL2_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
  1407
  assumes a: "R[x\<turnstile>n>y] = AndL2 (v).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
  1408
  shows "(x=u \<and> x=y) \<or> (x\<noteq>u)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1409
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1410
  apply(nominal_induct R avoiding: y u v x N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1411
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1412
  done
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
  1413
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1415
  assumes a: "R[x\<turnstile>n>y] = AndR <c>.M <d>.N e" "c\<sharp>(d,e,N,R)" "d\<sharp>(c,e,M,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
  1416
  shows "\<exists>M' N'. R = AndR <c>.M' <d>.N' e \<and> M'[x\<turnstile>n>y] = M \<and> N'[x\<turnstile>n>y] = N \<and> c\<sharp>N' \<and> d\<sharp>M'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1417
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1418
  apply(nominal_induct R avoiding: x y c d e M N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1419
             apply(auto split: if_splits simp add: trm.inject alpha)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1420
    apply(simp add: fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1421
   apply(rule_tac x="[(coname1,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1422
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1423
   apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1424
  apply(rule_tac x="[(coname1,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1425
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1426
  apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1427
  apply(rule_tac x="[(coname2,d)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1428
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1429
  apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1430
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1431
   apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1432
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1433
  apply(drule_tac s="trm2[x\<turnstile>n>y]" in  sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1434
  apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1435
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1436
  done
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
  1437
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1439
  assumes a: "R[x\<turnstile>n>y] = OrR1 <c>.N d" "c\<sharp>(R,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
  1440
  shows "\<exists>N'. (R = OrR1 <c>.N' d) \<and> N'[x\<turnstile>n>y] = N" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1441
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1442
  apply(nominal_induct R avoiding: x y c d N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1443
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1444
  apply(rule_tac x="[(coname1,c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1445
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1446
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1447
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1448
  apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1449
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1450
  done
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
  1451
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1453
  assumes a: "R[x\<turnstile>n>y] = OrR2 <c>.N d" "c\<sharp>(R,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
  1454
  shows "\<exists>N'. (R = OrR2 <c>.N' d) \<and> N'[x\<turnstile>n>y] = N" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1455
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1456
  apply(nominal_induct R avoiding: x y c d N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1457
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1458
  apply(rule_tac x="[(coname1,c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1459
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1460
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1461
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1462
  apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1463
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1464
  done
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
  1465
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1467
  assumes a: "R[u\<turnstile>n>v] = OrL (x).M (y).N z" "x\<sharp>(y,z,u,v,N,R)" "y\<sharp>(x,z,u,v,M,R)" "z\<sharp>(u,v)"
9be4ab2acc13 split Class.thy into parts to 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
  shows "\<exists>M' N'. R = OrL (x).M' (y).N' z \<and> M'[u\<turnstile>n>v] = M \<and> N'[u\<turnstile>n>v] = N \<and> x\<sharp>N' \<and> y\<sharp>M'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1469
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1470
  apply(nominal_induct R avoiding: u v x y z M N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1471
             apply(auto split: if_splits simp add: trm.inject alpha fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1472
  apply(rule_tac x="[(name1,x)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1473
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1474
  apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1475
  apply(rule_tac x="[(name2,y)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1476
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1477
  apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1478
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1479
   apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1480
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1481
  apply(drule_tac s="trm2[u\<turnstile>n>v]" in  sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1482
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1483
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1484
  done
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
  1485
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1487
  assumes a: "R[x\<turnstile>n>y] = OrL (v).M (w).N u" "v\<sharp>(R,N,u,x,y)" "w\<sharp>(R,M,u,x,y)" "x\<noteq>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
  1488
  shows "(\<exists>M' N'. (R = OrL (v).M' (w).N' u) \<and> M'[x\<turnstile>n>y] = M \<and> N'[x\<turnstile>n>y] = N) \<or> 
9be4ab2acc13 split Class.thy into parts to 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
         (\<exists>M' N'. (R = OrL (v).M' (w).N' x) \<and> y=u \<and> M'[x\<turnstile>n>y] = M \<and> N'[x\<turnstile>n>y] = N)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1490
  using a [[simproc del: defined_all]]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1491
  apply(nominal_induct R avoiding: y x u v w M N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1492
             apply(auto split: if_splits simp add: fresh_prod fresh_atm abs_fresh alpha trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1493
   apply(rule_tac x="[(name1,v)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1494
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1495
   apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1496
   apply(rule_tac x="[(name2,w)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1497
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1498
   apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1499
   apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1500
    apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1501
    apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1502
    apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1503
   apply(drule_tac s="trm2[x\<turnstile>n>u]" in sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1504
   apply(drule_tac pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1505
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1506
  apply(rule_tac x="[(name1,v)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1507
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1508
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1509
  apply(rule_tac x="[(name2,w)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1510
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1511
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1512
  apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1513
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1514
   apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1515
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1516
  apply(drule_tac s="trm2[x\<turnstile>n>y]" in sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1517
  apply(drule_tac pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1518
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1519
  done
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
  1520
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_OrL_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
  1522
  assumes a: "R[x\<turnstile>n>y] = OrL (v).M (w).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
  1523
  shows "(x=u \<and> x=y) \<or> (x\<noteq>u)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1524
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1525
  apply(nominal_induct R avoiding: y x w u v M N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1526
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1527
  done
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
  1528
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1530
  assumes a: "R[x\<turnstile>n>y] = ImpL <c>.M (u).N z" "c\<sharp>(N,R)" "u\<sharp>(y,x,z,M,R)" "z\<sharp>(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
  1531
  shows "\<exists>M' N'. R = ImpL <c>.M' (u).N' z \<and> M'[x\<turnstile>n>y] = M \<and> N'[x\<turnstile>n>y] = N \<and> c\<sharp>N' \<and> u\<sharp>M'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1532
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1533
  apply(nominal_induct R avoiding: u x c y z M N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1534
             apply(auto split: if_splits simp add: trm.inject alpha fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1535
  apply(rule_tac x="[(coname,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1536
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1537
  apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1538
  apply(rule_tac x="[(name1,u)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1539
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1540
  apply(auto simp add: abs_fresh fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1541
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1542
   apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1543
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1544
  apply(drule_tac s="trm2[x\<turnstile>n>y]" in  sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1545
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1546
  apply(simp add: eqvts calc_atm fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1547
  done
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
  1548
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1550
  assumes a: "R[x\<turnstile>n>y] = ImpL <c>.M (w).N u" "c\<sharp>(R,N)" "w\<sharp>(R,M,u,x,y)" "x\<noteq>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
  1551
  shows "(\<exists>M' N'. (R = ImpL <c>.M' (w).N' u) \<and> M'[x\<turnstile>n>y] = M \<and> N'[x\<turnstile>n>y] = N) \<or> 
9be4ab2acc13 split Class.thy into parts to 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
         (\<exists>M' N'. (R = ImpL <c>.M' (w).N' x) \<and> y=u \<and> M'[x\<turnstile>n>y] = M \<and> N'[x\<turnstile>n>y] = N)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1553
  using a [[simproc del: defined_all]]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1554
  apply(nominal_induct R avoiding: y x u c w M N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1555
             apply(auto split: if_splits simp add: fresh_prod fresh_atm abs_fresh alpha trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1556
   apply(rule_tac x="[(coname,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1557
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1558
   apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1559
   apply(rule_tac x="[(name1,w)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1560
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1561
   apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1562
   apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1563
    apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1564
    apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1565
    apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1566
   apply(drule_tac s="trm2[x\<turnstile>n>u]" in sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1567
   apply(drule_tac pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1568
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1569
  apply(rule_tac x="[(coname,c)]\<bullet>trm1" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1570
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1571
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1572
  apply(rule_tac x="[(name1,w)]\<bullet>trm2" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1573
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1574
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1575
  apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1576
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1577
   apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1578
   apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1579
  apply(drule_tac s="trm2[x\<turnstile>n>y]" in sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1580
  apply(drule_tac pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1581
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1582
  done
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
  1583
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_ImpL_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
  1585
  assumes a: "R[x\<turnstile>n>y] = ImpL <c>.M (w).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
  1586
  shows "(x=u \<and> x=y) \<or> (x\<noteq>u)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1587
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1588
  apply(nominal_induct R avoiding: y x w u c M N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1589
             apply(auto split: if_splits simp add: fresh_prod fresh_atm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1590
  done
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
  1591
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1593
  assumes a: "R[u\<turnstile>n>v] = ImpR (x).<c>.N d" "c\<sharp>(R,d)" "x\<sharp>(R,u,v)" 
9be4ab2acc13 split Class.thy into parts to 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
  shows "\<exists>N'. (R = ImpR (x).<c>.N' d) \<and> N'[u\<turnstile>n>v] = N" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1595
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1596
  apply(nominal_induct R avoiding: u v x c d N rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1597
             apply(auto split: if_splits simp add: fresh_prod fresh_atm abs_perm alpha abs_fresh trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1598
   apply(rule_tac x="[(name,x)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1599
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1600
  apply(simp add: abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1601
  apply(rule_tac x="[(name,x)]\<bullet>[(coname1, c)]\<bullet>trm" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1602
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1603
  apply(simp add: abs_supp fin_supp abs_fresh fresh_left calc_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1604
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1605
  apply(drule pt_bij1[OF pt_coname_inst,OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1606
  apply(drule pt_bij1[OF pt_name_inst,OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1607
  apply(simp add: eqvts calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1608
  done
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
  1609
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_credu:
53015
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
  1611
  assumes a: "(M[x\<turnstile>n>y]) \<longrightarrow>\<^sub>c M'"
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
  1612
  shows "\<exists>M0. M0[x\<turnstile>n>y]=M' \<and> M \<longrightarrow>\<^sub>c M0"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1613
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1614
  apply(nominal_induct M\<equiv>"M[x\<turnstile>n>y]" M' avoiding: M x y rule: c_redu.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1615
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1616
   apply(drule nrename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1617
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1618
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1619
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1620
   apply(rule_tac x="M'{a:=(x).N'}" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1621
   apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1622
    apply(simp add: fresh_atm abs_fresh subst_comm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1623
   apply(rule c_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1624
     apply(auto dest: not_fic_nrename)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1625
    apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1626
   apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1627
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1628
  apply(drule nrename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1629
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1630
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1631
  apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1632
  apply(rule_tac x="N'{x:=<a>.M'}" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1633
  apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1634
   apply(simp add: fresh_atm abs_fresh subst_comm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1635
  apply(rule c_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1636
    apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1637
  apply(drule_tac x="xa" and y="y" in fin_nrename)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1638
   apply(auto simp add: fresh_prod abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1639
  done
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
  1640
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_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
  1642
  assumes a: "N[x\<turnstile>n>y] = Ax z 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
  1643
  shows "\<exists>z. N = Ax z c"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1644
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1645
  apply(nominal_induct N avoiding: x y rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1646
             apply(auto split: if_splits)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1647
  apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1648
  done
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
  1649
9be4ab2acc13 split Class.thy into parts to 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
lemma fic_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
  1651
  assumes a: "fic (M[x\<turnstile>n>y]) 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
  1652
  shows "fic M c" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1653
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1654
  apply(nominal_induct M avoiding: c x y rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1655
             apply(auto dest!: fic_elims intro!: fic.intros simp add: fresh_prod fresh_atm rename_fresh abs_fresh
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1656
      split: if_splits)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1657
       apply(auto dest: nrename_fresh_interesting2 simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1658
  done
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
  1659
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_lredu:
53015
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
  1661
  assumes a: "(M[x\<turnstile>n>y]) \<longrightarrow>\<^sub>l M'"
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
  1662
  shows "\<exists>M0. M0[x\<turnstile>n>y]=M' \<and> M \<longrightarrow>\<^sub>l M0"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1663
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1664
  apply(nominal_induct M\<equiv>"M[x\<turnstile>n>y]" M' avoiding: M x y rule: l_redu.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1665
         apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1666
         apply(drule nrename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1667
           apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1668
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1669
         apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1670
         apply(case_tac "xa=y")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1671
          apply(simp add: nrename_id)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1672
          apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1673
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1674
           apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1675
          apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1676
         apply(frule nrename_ax2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1677
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1678
         apply(case_tac "z=xa")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1679
          apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1680
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1681
         apply(rule_tac x="M'[a\<turnstile>c>b]" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1682
         apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1683
          apply(rule crename_interesting3)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1684
         apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1685
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1686
          apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1687
         apply(auto dest: fic_nrename simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1688
        apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1689
        apply(drule nrename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1690
          apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1691
         apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1692
        apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1693
        apply(case_tac "xa=ya")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1694
         apply(simp add: nrename_id)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1695
         apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1696
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1697
          apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1698
         apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1699
        apply(frule nrename_ax2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1700
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1701
        apply(case_tac "z=xa")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1702
         apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1703
         apply(rule_tac x="N'[x\<turnstile>n>xa]" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1704
         apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1705
          apply(rule nrename_interesting1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1706
          apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1707
         apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1708
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1709
          apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1710
         apply(auto dest: fin_nrename2 simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1711
        apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1712
        apply(rule_tac x="N'[x\<turnstile>n>y]" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1713
        apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1714
         apply(rule nrename_interesting2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1715
             apply(simp_all)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1716
        apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1717
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1718
         apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1719
        apply(auto dest: fin_nrename2 simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1720
    (* LNot *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1721
       apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1722
       apply(drule nrename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1723
         apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1724
        apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1725
       apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1726
       apply(drule nrename_NotR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1727
        apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1728
       apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1729
       apply(drule nrename_NotL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1730
         apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1731
        apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1732
       apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1733
       apply(rule_tac x="Cut <b>.N'b (x).N'a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1734
       apply(simp add: fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1735
       apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1736
            apply(auto simp add: fresh_prod fresh_atm intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1737
           apply(auto simp add: fresh_atm fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1738
          apply(auto simp add: fresh_atm fresh_prod intro: nrename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1739
         apply(auto simp add: fresh_atm fresh_prod intro: nrename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1740
        apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1741
       apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1742
    (* LAnd1 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1743
      apply(auto dest: fin_crename simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1744
      apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1745
      apply(drule nrename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1746
        apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1747
       apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1748
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1749
      apply(drule nrename_AndR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1750
        apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1751
       apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1752
      apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1753
      apply(drule nrename_AndL1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1754
        apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1755
       apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1756
      apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1757
      apply(rule_tac x="Cut <a1>.M'a (x).N'b" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1758
      apply(simp add: fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1759
      apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1760
           apply(auto simp add: fresh_atm abs_fresh fresh_prod intro: nrename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1761
          apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1762
         apply(auto simp add: fresh_atm fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1763
        apply(auto simp add: fresh_atm fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1764
       apply(auto simp add: fresh_atm fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1765
      apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1766
    (* LAnd2 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1767
     apply(auto dest: fin_crename simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1768
     apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1769
     apply(drule nrename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1770
       apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1771
      apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1772
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1773
     apply(drule nrename_AndR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1774
       apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1775
      apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1776
     apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1777
     apply(drule nrename_AndL2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1778
       apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1779
      apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1780
     apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1781
     apply(rule_tac x="Cut <a2>.N'a (x).N'b" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1782
     apply(simp add: fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1783
     apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1784
          apply(auto simp add: fresh_atm abs_fresh fresh_prod intro: nrename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1785
         apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1786
        apply(auto simp add: fresh_atm fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1787
       apply(auto simp add: fresh_atm fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1788
      apply(auto simp add: fresh_atm fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1789
     apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1790
    (* LOr1 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1791
    apply(auto dest: fin_crename simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1792
    apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1793
    apply(drule nrename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1794
      apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1795
     apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1796
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1797
    apply(drule nrename_OrL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1798
       apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1799
      apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1800
     apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1801
    apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1802
    apply(drule nrename_OrR1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1803
     apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1804
    apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1805
    apply(rule_tac x="Cut <a>.N' (x1).M'a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1806
    apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1807
     apply(simp add: abs_fresh fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1808
    apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1809
         apply(auto simp add: fresh_atm abs_fresh fresh_prod intro: nrename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1810
        apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1811
       apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1812
      apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1813
     apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1814
    apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1815
    (* LOr2 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1816
   apply(auto dest: fin_crename simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1817
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1818
   apply(drule nrename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1819
     apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1820
    apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1821
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1822
   apply(drule nrename_OrL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1823
      apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1824
     apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1825
    apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1826
   apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1827
   apply(drule nrename_OrR2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1828
    apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1829
   apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1830
   apply(rule_tac x="Cut <a>.N' (x2).N'a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1831
   apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1832
    apply(simp add: abs_fresh fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1833
   apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1834
        apply(auto simp add: fresh_atm abs_fresh fresh_prod intro: nrename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1835
       apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1836
      apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1837
     apply(auto simp add: abs_fresh fresh_atm fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1838
    apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1839
   apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1840
    (* ImpL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1841
  apply(auto dest: fin_crename simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1842
  apply(drule sym) 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1843
  apply(drule nrename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1844
    apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1845
   apply(simp add: fresh_prod abs_fresh fresh_atm abs_supp fin_supp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1846
  apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1847
  apply(drule nrename_ImpL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1848
     apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1849
    apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1850
   apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1851
  apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1852
  apply(drule nrename_ImpR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1853
    apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1854
   apply(simp add: fresh_prod abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1855
  apply(auto simp add: abs_fresh fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1856
  apply(rule_tac x="Cut <a>.(Cut <c>.M'a (x).N') (y).N'a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1857
  apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1858
   apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1859
  apply(rule l_redu.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1860
       apply(auto simp add: fresh_atm abs_fresh abs_supp fin_supp fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1861
      apply(auto simp add: abs_fresh fresh_atm abs_supp fin_supp fresh_prod intro: nrename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1862
     apply(auto simp add: abs_fresh fresh_atm abs_supp fin_supp fresh_prod intro: nrename_fresh_interesting1)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1863
    apply(auto simp add: abs_fresh fresh_atm abs_supp fin_supp fresh_prod intro: nrename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1864
   apply(auto simp add: abs_fresh fresh_atm abs_supp fin_supp fresh_prod intro: nrename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1865
  apply(auto simp add: abs_fresh fresh_atm abs_supp fin_supp fresh_prod intro: nrename_fresh_interesting2)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1866
  done
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
  1867
9be4ab2acc13 split Class.thy into parts to 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
lemma nrename_aredu:
53015
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
  1869
  assumes a: "(M[x\<turnstile>n>y]) \<longrightarrow>\<^sub>a M'" "x\<noteq>y"
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
  1870
  shows "\<exists>M0. M0[x\<turnstile>n>y]=M' \<and> M \<longrightarrow>\<^sub>a M0"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1871
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1872
  apply(nominal_induct "M[x\<turnstile>n>y]" M' avoiding: M x y rule: a_redu.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1873
                  apply(drule  nrename_lredu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1874
                  apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1875
                 apply(drule  nrename_credu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1876
                 apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1877
    (* Cut *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1878
                apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1879
                apply(drule nrename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1880
                  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1881
                 apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1882
                apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1883
                apply(drule_tac x="M'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1884
                apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1885
                apply(drule_tac x="y" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1886
                apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1887
                apply(rule_tac x="Cut <a>.M0 (x).N'" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1888
                apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1889
                apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1890
                 apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1891
                  apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1892
                   apply(drule nrename_fresh_interesting2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1893
                   apply(simp add: fresh_a_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1894
                  apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1895
                  apply(drule nrename_fresh_interesting1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1896
                   apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1897
                  apply(simp add: fresh_a_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1898
                 apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1899
                apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1900
               apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1901
               apply(drule nrename_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1902
                 apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1903
                apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1904
               apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1905
               apply(drule_tac x="N'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1906
               apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1907
               apply(drule_tac x="y" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1908
               apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1909
               apply(rule_tac x="Cut <a>.M' (x).M0" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1910
               apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1911
               apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1912
                apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1913
                 apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1914
                  apply(simp add: fresh_a_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1915
                 apply(simp add: abs_fresh abs_supp fin_supp fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1916
                apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1917
               apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1918
    (* NotL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1919
              apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1920
              apply(frule nrename_NotL_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1921
              apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1922
               apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1923
              apply(drule nrename_NotL')
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1924
                apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1925
               apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1926
              apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1927
               apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1928
               apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1929
               apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1930
               apply(drule_tac x="y" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1931
               apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1932
               apply(rule_tac x="NotL <a>.M0 x" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1933
               apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1934
               apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1935
              apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1936
              apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1937
              apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1938
              apply(drule_tac x="x" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1939
              apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1940
              apply(rule_tac x="NotL <a>.M0 xa" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1941
              apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1942
              apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1943
    (* NotR *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1944
             apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1945
             apply(drule nrename_NotR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1946
              apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1947
             apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1948
             apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1949
             apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1950
             apply(drule_tac x="y" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1951
             apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1952
             apply(rule_tac x="NotR (x).M0 a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1953
             apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1954
             apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1955
    (* AndR *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1956
            apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1957
            apply(drule nrename_AndR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1958
              apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1959
              apply(auto simp add: fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1960
             apply(auto simp add: fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1961
            apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1962
            apply(drule_tac x="M'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1963
            apply(drule_tac x="x" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1964
            apply(drule_tac x="y" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1965
            apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1966
            apply(rule_tac x="AndR <a>.M0 <b>.N' c" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1967
            apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1968
            apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1969
            apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1970
             apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1971
               apply(simp add: abs_fresh abs_supp fin_supp fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1972
              apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1973
              apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1974
             apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1975
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1976
           apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1977
           apply(drule nrename_AndR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1978
             apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1979
             apply(auto simp add: fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1980
            apply(auto simp add: fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1981
           apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1982
           apply(drule_tac x="N'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1983
           apply(drule_tac x="x" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1984
           apply(drule_tac x="y" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1985
           apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1986
           apply(rule_tac x="AndR <a>.M' <b>.M0 c" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1987
           apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1988
           apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1989
           apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1990
            apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1991
              apply(simp add: abs_fresh abs_supp fin_supp fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1992
              apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1993
             apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1994
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1995
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1996
    (* AndL1 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1997
          apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1998
          apply(frule nrename_AndL1_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  1999
          apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2000
           apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2001
          apply(drule nrename_AndL1')
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2002
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2003
           apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2004
          apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2005
           apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2006
           apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2007
           apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2008
           apply(drule_tac x="ya" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2009
           apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2010
           apply(rule_tac x="AndL1 (x).M0 y" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2011
           apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2012
           apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2013
          apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2014
          apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2015
          apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2016
          apply(drule_tac x="y" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2017
          apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2018
          apply(rule_tac x="AndL1 (x).M0 xa" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2019
          apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2020
          apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2021
    (* AndL2 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2022
         apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2023
         apply(frule nrename_AndL2_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2024
         apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2025
          apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2026
         apply(drule nrename_AndL2')
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2027
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2028
          apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2029
         apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2030
          apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2031
          apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2032
          apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2033
          apply(drule_tac x="ya" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2034
          apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2035
          apply(rule_tac x="AndL2 (x).M0 y" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2036
          apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2037
          apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2038
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2039
         apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2040
         apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2041
         apply(drule_tac x="y" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2042
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2043
         apply(rule_tac x="AndL2 (x).M0 xa" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2044
         apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2045
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2046
    (* OrL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2047
        apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2048
        apply(frule nrename_OrL_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2049
        apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2050
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2051
        apply(drule nrename_OrL')
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2052
           apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2053
          apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2054
         apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2055
        apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2056
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2057
         apply(drule_tac x="M'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2058
         apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2059
         apply(drule_tac x="ya" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2060
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2061
         apply(rule_tac x="OrL (x).M0 (y).N' z" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2062
         apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2063
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2064
         apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2065
          apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2066
            apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2067
           apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2068
           apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2069
          apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2070
         apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2071
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2072
        apply(drule_tac x="M'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2073
        apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2074
        apply(drule_tac x="z" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2075
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2076
        apply(rule_tac x="OrL (x).M0 (y).N' xa" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2077
        apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2078
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2079
        apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2080
         apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2081
           apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2082
          apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2083
          apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2084
         apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2085
        apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2086
       apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2087
       apply(frule nrename_OrL_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2088
       apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2089
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2090
       apply(drule nrename_OrL')
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2091
          apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2092
         apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2093
        apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2094
       apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2095
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2096
        apply(drule_tac x="N'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2097
        apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2098
        apply(drule_tac x="ya" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2099
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2100
        apply(rule_tac x="OrL (x).M' (y).M0 z" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2101
        apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2102
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2103
        apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2104
         apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2105
           apply(simp add: abs_fresh abs_supp fin_supp fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2106
           apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2107
          apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2108
         apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2109
        apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2110
       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2111
       apply(drule_tac x="N'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2112
       apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2113
       apply(drule_tac x="z" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2114
       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2115
       apply(rule_tac x="OrL (x).M' (y).M0 xa" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2116
       apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2117
       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2118
       apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2119
        apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2120
          apply(simp add: abs_fresh abs_supp fin_supp fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2121
          apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2122
         apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2123
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2124
       apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2125
    (* OrR1 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2126
      apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2127
      apply(drule nrename_OrR1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2128
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2129
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2130
      apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2131
      apply(drule_tac x="x" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2132
      apply(drule_tac x="y" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2133
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2134
      apply(rule_tac x="OrR1 <a>.M0 b" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2135
      apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2136
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2137
    (* OrR2 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2138
     apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2139
     apply(drule nrename_OrR2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2140
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2141
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2142
     apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2143
     apply(drule_tac x="x" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2144
     apply(drule_tac x="y" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2145
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2146
     apply(rule_tac x="OrR2 <a>.M0 b" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2147
     apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2148
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2149
    (* ImpL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2150
    apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2151
    apply(frule nrename_ImpL_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2152
    apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2153
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2154
    apply(drule nrename_ImpL')
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2155
       apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2156
      apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2157
     apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2158
    apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2159
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2160
     apply(drule_tac x="M'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2161
     apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2162
     apply(drule_tac x="ya" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2163
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2164
     apply(rule_tac x="ImpL <a>.M0 (x).N' y" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2165
     apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2166
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2167
     apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2168
      apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2169
       apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2170
      apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2171
      apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2172
     apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2173
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2174
    apply(drule_tac x="M'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2175
    apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2176
    apply(drule_tac x="y" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2177
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2178
    apply(rule_tac x="ImpL <a>.M0 (x).N' xa" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2179
    apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2180
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2181
    apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2182
     apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2183
      apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2184
     apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2185
     apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2186
    apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2187
   apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2188
   apply(frule nrename_ImpL_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2189
   apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2190
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2191
   apply(drule nrename_ImpL')
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2192
      apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2193
     apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2194
    apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2195
   apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2196
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2197
    apply(drule_tac x="N'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2198
    apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2199
    apply(drule_tac x="ya" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2200
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2201
    apply(rule_tac x="ImpL <a>.M' (x).M0 y" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2202
    apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2203
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2204
    apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2205
     apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2206
      apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2207
     apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2208
    apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2209
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2210
   apply(drule_tac x="N'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2211
   apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2212
   apply(drule_tac x="y" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2213
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2214
   apply(rule_tac x="ImpL <a>.M' (x).M0 xa" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2215
   apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2216
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2217
   apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2218
    apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2219
     apply(auto intro: fresh_a_redu)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2220
    apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2221
   apply(simp add: fresh_prod abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2222
    (* ImpR *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2223
  apply(drule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2224
  apply(drule nrename_ImpR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2225
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2226
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2227
  apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2228
  apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2229
  apply(drule_tac x="xa" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2230
  apply(drule_tac x="y" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2231
  apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2232
  apply(rule_tac x="ImpR (x).<a>.M0 b" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2233
  apply(simp add: abs_fresh abs_supp fin_supp fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2234
  apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2235
  done
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
  2236
9be4ab2acc13 split Class.thy into parts to 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
lemma SNa_preserved_renaming2:
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "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
  2239
  shows "SNa (N[x\<turnstile>n>y])"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2240
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2241
  apply(induct rule: SNa_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2242
  apply(case_tac "x=y")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2243
   apply(simp add: nrename_id)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2244
  apply(rule SNaI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2245
  apply(drule nrename_aredu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2246
   apply(blast)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2247
  done
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
  2248
63167
0909deb8059b isabelle update_cartouches -c -t;
wenzelm
parents: 61943
diff changeset
  2249
text \<open>helper-stuff to set up the induction\<close>
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
  2250
9be4ab2acc13 split Class.thy into parts to 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
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
  2252
  SNa_set :: "trm set"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2253
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2254
    "SNa_set \<equiv> {M. SNa M}"
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
  2255
9be4ab2acc13 split Class.thy into parts to 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
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
  2257
  A_Redu_set :: "(trm\<times>trm) set"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2258
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2259
    "A_Redu_set \<equiv> {(N,M)| M N. M \<longrightarrow>\<^sub>a N}"
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
  2260
9be4ab2acc13 split Class.thy into parts to 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
lemma SNa_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
  2262
  assumes a: "SNa M"
53015
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
  2263
  shows "(\<forall>M. (\<forall>N. M \<longrightarrow>\<^sub>a N \<longrightarrow> P N)\<longrightarrow> P M) \<longrightarrow> P M"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2264
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2265
  by (induct rule: SNa.induct) (blast)
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
  2266
9be4ab2acc13 split Class.thy into parts to 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
lemma wf_SNa_restricted:
61943
7fba644ed827 discontinued ASCII replacement syntax <*>;
wenzelm
parents: 55417
diff changeset
  2268
  shows "wf (A_Redu_set \<inter> (UNIV \<times> SNa_set))"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2269
  apply(unfold wf_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2270
  apply(intro strip)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2271
  apply(case_tac "SNa x")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2272
   apply(simp (no_asm_use))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2273
   apply(drule_tac P="P" in SNa_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2274
   apply(erule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2275
   apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2276
    (* other case *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2277
  apply(drule_tac x="x" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2278
  apply(erule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2279
  apply(fast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2280
  done
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
  2281
9be4ab2acc13 split Class.thy into parts to 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
definition SNa_Redu :: "(trm \<times> trm) set" where
61943
7fba644ed827 discontinued ASCII replacement syntax <*>;
wenzelm
parents: 55417
diff changeset
  2283
  "SNa_Redu \<equiv> A_Redu_set \<inter> (UNIV \<times> SNa_set)"
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
  2284
9be4ab2acc13 split Class.thy into parts to 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
lemma wf_SNa_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
  2286
  shows "wf SNa_Redu"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2287
  apply(unfold SNa_Redu_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2288
  apply(rule wf_SNa_restricted)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2289
  done
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
  2290
9be4ab2acc13 split Class.thy into parts to 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
lemma wf_measure_triple:
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2292
  shows "wf ((measure size) <*lex*> SNa_Redu <*lex*> SNa_Redu)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2293
  by (auto intro: wf_SNa_Redu)
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
  2294
9be4ab2acc13 split Class.thy into parts to 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
lemma my_wf_induct_triple: 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2296
  assumes a: " wf(r1 <*lex*> r2 <*lex*> r3)"           
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2297
    and     b: "\<And>x. \<lbrakk>\<And>y. ((fst y,fst (snd y),snd (snd y)),(fst x,fst (snd x), snd (snd x))) 
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
  2298
                                    \<in> (r1 <*lex*> r2 <*lex*> r3) \<longrightarrow> P y\<rbrakk> \<Longrightarrow> P x"  
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2299
  shows "P x"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2300
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2301
  apply(induct x rule: wf_induct_rule)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2302
  apply(rule b)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2303
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2304
  done
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
  2305
9be4ab2acc13 split Class.thy into parts to 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
lemma my_wf_induct_triple': 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2307
  assumes a: " wf(r1 <*lex*> r2 <*lex*> r3)"           
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2308
    and    b: "\<And>x1 x2 x3. \<lbrakk>\<And>y1 y2 y3. ((y1,y2,y3),(x1,x2,x3)) \<in> (r1 <*lex*> r2 <*lex*> r3) \<longrightarrow> P (y1,y2,y3)\<rbrakk> 
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
  2309
             \<Longrightarrow> P (x1,x2,x3)"  
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2310
  shows "P (x1,x2,x3)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2311
  apply(rule_tac my_wf_induct_triple[OF a])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2312
  apply(case_tac x rule: prod.exhaust)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2313
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2314
  apply(rename_tac p a b)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2315
  apply(case_tac b)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2316
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2317
  apply(rule b)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2318
  apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2319
  done
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
  2320
9be4ab2acc13 split Class.thy into parts to 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
lemma my_wf_induct_triple'': 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2322
  assumes a: " wf(r1 <*lex*> r2 <*lex*> r3)"           
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2323
    and     b: "\<And>x1 x2 x3. \<lbrakk>\<And>y1 y2 y3. ((y1,y2,y3),(x1,x2,x3)) \<in> (r1 <*lex*> r2 <*lex*> r3) \<longrightarrow> P y1 y2 y3\<rbrakk>
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
  2324
               \<Longrightarrow> P x1 x2 x3"  
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2325
  shows "P x1 x2 x3"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2326
  apply(rule_tac my_wf_induct_triple'[where P="\<lambda>(x1,x2,x3). P x1 x2 x3", simplified])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2327
   apply(rule a)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2328
  apply(rule b)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2329
  apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2330
  done
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
  2331
9be4ab2acc13 split Class.thy into parts to 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
lemma excluded_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
  2333
  assumes a: "<a>:M \<in> (\<parallel><B>\<parallel>)" "(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
  2334
  shows "(<a>:M \<in> BINDINGc B (\<parallel>(B)\<parallel>) \<or> (x):N \<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
  2335
      \<or>\<not>(<a>:M \<in> BINDINGc B (\<parallel>(B)\<parallel>) \<or> (x):N \<in> BINDINGn B (\<parallel><B>\<parallel>))"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2336
  by (blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2337
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2338
text \<open>The following two simplification rules are necessary because of the 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2339
      new definition of lexicographic ordering\<close>
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2340
lemma ne_and_SNa_Redu[simp]: "M \<noteq> x \<and> (M,x) \<in> SNa_Redu \<longleftrightarrow> (M,x) \<in> SNa_Redu"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2341
  using wf_SNa_Redu by auto
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2342
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2343
lemma ne_and_less_size [simp]: "A \<noteq> B \<and> size A < size B \<longleftrightarrow> size A < size B"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2344
  by auto
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
  2345
9be4ab2acc13 split Class.thy into parts to 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
lemma tricky_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
  2347
  assumes a1: "b\<sharp>(c,N)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2348
    and     a2: "z\<sharp>(x,P)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2349
    and     a3: "M\<noteq>Ax z b"
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
  2350
  shows "(Cut <c>.N (z).M){b:=(x).P} = Cut <c>.N (z).(M{b:=(x).P})"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2351
  using a1 a2 a3
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2352
  apply -
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2353
  apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2354
  apply(subgoal_tac "Cut <c>.N (z).M = Cut <ca>.([(ca,c)]\<bullet>N) (z).M")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2355
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2356
   apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2357
    apply(rule better_Cut_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2358
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2359
    apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2360
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2361
   apply(subgoal_tac "b\<sharp>([(ca,c)]\<bullet>N)")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2362
    apply(simp add: forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2363
    apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2364
   apply(simp add: fresh_left calc_atm fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2365
  apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2366
  apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2367
  apply(simp add: alpha fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2368
  done
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
  2369
63167
0909deb8059b isabelle update_cartouches -c -t;
wenzelm
parents: 61943
diff changeset
  2370
text \<open>3rd lemma\<close>
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
  2371
9be4ab2acc13 split Class.thy into parts to 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
lemma CUT_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
  2373
  assumes a1: "<a>:M \<in> (\<parallel><B>\<parallel>)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2374
    and     a2: "SNa M"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2375
    and     a3: "(x):N \<in> (\<parallel>(B)\<parallel>)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2376
    and     a4: "SNa N"
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
  2377
  shows   "SNa (Cut <a>.M (x).N)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2378
  using a1 a2 a3 a4 [[simproc del: defined_all]]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2379
  apply(induct B M N arbitrary: a x rule: my_wf_induct_triple''[OF wf_measure_triple])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2380
  apply(rule SNaI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2381
  apply(drule Cut_a_redu_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2382
  apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2383
    (* left-inner reduction *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2384
   apply(erule exE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2385
   apply(erule conjE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2386
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2387
   apply(drule_tac x="x1" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2388
   apply(drule_tac x="M'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2389
   apply(drule_tac x="x3" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2390
   apply(drule conjunct2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2391
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2392
    apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2393
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2394
    apply(rule disjI1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2395
    apply(simp add: SNa_Redu_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2396
   apply(drule_tac x="a" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2397
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2398
    apply(simp add: CANDs_preserved_single)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2399
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2400
    apply(simp add: a_preserves_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2401
   apply(drule_tac x="x" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2402
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2403
  apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2404
    (* right-inner reduction *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2405
   apply(erule exE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2406
   apply(erule conjE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2407
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2408
   apply(drule_tac x="x1" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2409
   apply(drule_tac x="x2" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2410
   apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2411
   apply(drule conjunct2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2412
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2413
    apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2414
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2415
    apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2416
    apply(simp add: SNa_Redu_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2417
   apply(drule_tac x="a" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2418
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2419
    apply(simp add: CANDs_preserved_single)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2420
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2421
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2422
   apply(drule_tac x="x" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2423
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2424
    apply(simp add: CANDs_preserved_single)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2425
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2426
    apply(simp add: a_preserves_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2427
   apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2428
  apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2429
    (******** c-reduction *********)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2430
   apply(drule Cut_c_redu_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2431
    (* c-left reduction*)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2432
   apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2433
    apply(erule conjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2434
    apply(frule_tac B="x1" in fic_CANDS)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2435
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2436
    apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2437
    (* in AXIOMSc *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2438
     apply(simp add: AXIOMSc_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2439
     apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2440
     apply(simp add: ctrm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2441
     apply(simp add: alpha)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2442
     apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2443
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2444
      apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2445
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2446
      apply(subgoal_tac "fic (Ax y b) b")(*A*)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2447
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2448
    (*A*)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2449
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2450
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2451
     apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2452
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2453
     apply(subgoal_tac "fic (Ax ([(a,aa)]\<bullet>y) a) a")(*B*)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2454
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2455
    (*B*)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2456
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2457
    (* in BINDINGc *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2458
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2459
    apply(drule BINDINGc_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2460
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2461
    (* c-right reduction*)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2462
   apply(erule conjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2463
   apply(frule_tac B="x1" in fin_CANDS)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2464
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2465
   apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2466
    (* in AXIOMSc *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2467
    apply(simp add: AXIOMSn_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2468
    apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2469
    apply(simp add: ntrm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2470
    apply(simp add: alpha)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2471
    apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2472
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2473
     apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2474
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2475
     apply(subgoal_tac "fin (Ax xa b) xa")(*A*)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2476
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2477
    (*A*)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2478
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2479
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2480
    apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2481
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2482
    apply(subgoal_tac "fin (Ax x ([(x,xa)]\<bullet>b)) x")(*B*)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2483
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2484
    (*B*)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2485
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2486
    (* in BINDINGc *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2487
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2488
   apply(drule BINDINGn_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2489
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2490
    (*********** l-reductions ************)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2491
  apply(drule Cut_l_redu_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2492
  apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2493
    (* ax1 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2494
   apply(erule exE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2495
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2496
   apply(simp add: SNa_preserved_renaming1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2497
  apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2498
    (* ax2 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2499
   apply(erule exE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2500
   apply(simp add: SNa_preserved_renaming2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2501
  apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2502
    (* LNot *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2503
   apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2504
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2505
   apply(frule_tac excluded_m)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2506
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2507
   apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2508
    (* one of them in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2509
    apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2510
     apply(drule fin_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2511
     apply(drule fic_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2512
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2513
     apply(drule BINDINGc_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2514
     apply(drule_tac x="x" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2515
     apply(drule_tac x="NotL <b>.N' x" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2516
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2517
     apply(simp add: better_NotR_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2518
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2519
     apply(subgoal_tac "fresh_fun (\<lambda>a'. Cut <a'>.NotR (y).M'a a' (x).NotL <b>.N' x) 
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
  2520
                   =  Cut <c>.NotR (y).M'a c (x).NotL <b>.N' x")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2521
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2522
      apply(subgoal_tac "Cut <c>.NotR (y).M'a c (x).NotL <b>.N' x \<longrightarrow>\<^sub>a Cut <b>.N' (y).M'a")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2523
       apply(simp only: a_preserves_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2524
      apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2525
      apply(rule better_LNot_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2526
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2527
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2528
     apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2529
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2530
    (* other case of in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2531
    apply(drule fin_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2532
    apply(drule fic_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2533
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2534
    apply(drule BINDINGn_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2535
    apply(drule_tac x="a" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2536
    apply(drule_tac x="NotR (y).M'a a" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2537
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2538
    apply(simp add: better_NotL_substn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2539
    apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2540
    apply(subgoal_tac "fresh_fun (\<lambda>x'. Cut <a>.NotR (y).M'a a (x').NotL <b>.N' x') 
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
  2541
                   = Cut <a>.NotR (y).M'a a (c).NotL <b>.N' c")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2542
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2543
     apply(subgoal_tac "Cut <a>.NotR (y).M'a a (c).NotL <b>.N' c \<longrightarrow>\<^sub>a Cut <b>.N' (y).M'a")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2544
      apply(simp only: a_preserves_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2545
     apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2546
     apply(rule better_LNot_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2547
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2548
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2549
    apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2550
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2551
    (* none of them in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2552
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2553
   apply(erule conjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2554
   apply(frule CAND_NotR_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2555
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2556
   apply(erule exE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2557
   apply(frule CAND_NotL_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2558
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2559
   apply(erule exE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2560
   apply(simp only: ty.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2561
   apply(drule_tac x="B'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2562
   apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2563
   apply(drule_tac x="M'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2564
   apply(erule conjE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2565
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2566
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2567
   apply(drule_tac x="b" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2568
   apply(rotate_tac 13)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2569
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2570
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2571
   apply(rotate_tac 13)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2572
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2573
    apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2574
   apply(drule_tac x="y" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2575
   apply(rotate_tac 13)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2576
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2577
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2578
   apply(rotate_tac 13)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2579
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2580
    apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2581
   apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2582
    (* LAnd1 case *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2583
  apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2584
   apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2585
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2586
   apply(frule_tac excluded_m)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2587
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2588
   apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2589
    (* one of them in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2590
    apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2591
     apply(drule fin_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2592
     apply(drule fic_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2593
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2594
     apply(drule BINDINGc_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2595
     apply(drule_tac x="x" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2596
     apply(drule_tac x="AndL1 (y).N' x" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2597
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2598
     apply(simp add: better_AndR_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2599
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2600
     apply(subgoal_tac "fresh_fun (\<lambda>a'. Cut <a'>.AndR <b>.M1 <c>.M2 a' (x).AndL1 (y).N' x) 
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
  2601
                   = Cut <ca>.AndR <b>.M1 <c>.M2 ca (x).AndL1 (y).N' x")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2602
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2603
      apply(subgoal_tac "Cut <ca>.AndR <b>.M1 <c>.M2 ca (x).AndL1 (y).N' x \<longrightarrow>\<^sub>a Cut <b>.M1 (y).N'")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2604
       apply(auto intro: a_preserves_SNa)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2605
      apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2606
      apply(rule better_LAnd1_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2607
       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2608
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2609
     apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2610
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2611
    (* other case of in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2612
    apply(drule fin_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2613
    apply(drule fic_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2614
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2615
    apply(drule BINDINGn_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2616
    apply(drule_tac x="a" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2617
    apply(drule_tac x="AndR <b>.M1 <c>.M2 a" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2618
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2619
    apply(simp add: better_AndL1_substn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2620
    apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2621
    apply(subgoal_tac "fresh_fun (\<lambda>z'. Cut <a>.AndR <b>.M1 <c>.M2 a (z').AndL1 (y).N' z') 
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
  2622
                   = Cut <a>.AndR <b>.M1 <c>.M2 a (ca).AndL1 (y).N' ca")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2623
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2624
     apply(subgoal_tac "Cut <a>.AndR <b>.M1 <c>.M2 a (ca).AndL1 (y).N' ca \<longrightarrow>\<^sub>a Cut <b>.M1 (y).N'")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2625
      apply(auto intro: a_preserves_SNa)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2626
     apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2627
     apply(rule better_LAnd1_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2628
      apply(simp add: abs_fresh fresh_prod fresh_atm) 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2629
     apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2630
    apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2631
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2632
    (* none of them in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2633
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2634
   apply(erule conjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2635
   apply(frule CAND_AndR_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2636
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2637
   apply(erule exE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2638
   apply(frule CAND_AndL1_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2639
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2640
   apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2641
   apply(simp only: ty.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2642
   apply(drule_tac x="B1" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2643
   apply(drule_tac x="M1" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2644
   apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2645
   apply(erule conjE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2646
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2647
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2648
   apply(drule_tac x="b" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2649
   apply(rotate_tac 14)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2650
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2651
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2652
   apply(rotate_tac 14)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2653
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2654
    apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2655
   apply(drule_tac x="y" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2656
   apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2657
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2658
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2659
   apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2660
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2661
    apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2662
   apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2663
    (* LAnd2 case *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2664
  apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2665
   apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2666
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2667
   apply(frule_tac excluded_m)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2668
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2669
   apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2670
    (* one of them in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2671
    apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2672
     apply(drule fin_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2673
     apply(drule fic_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2674
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2675
     apply(drule BINDINGc_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2676
     apply(drule_tac x="x" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2677
     apply(drule_tac x="AndL2 (y).N' x" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2678
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2679
     apply(simp add: better_AndR_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2680
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2681
     apply(subgoal_tac "fresh_fun (\<lambda>a'. Cut <a'>.AndR <b>.M1 <c>.M2 a' (x).AndL2 (y).N' x) 
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
  2682
                   = Cut <ca>.AndR <b>.M1 <c>.M2 ca (x).AndL2 (y).N' x")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2683
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2684
      apply(subgoal_tac "Cut <ca>.AndR <b>.M1 <c>.M2 ca (x).AndL2 (y).N' x \<longrightarrow>\<^sub>a Cut <c>.M2 (y).N'")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2685
       apply(auto intro: a_preserves_SNa)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2686
      apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2687
      apply(rule better_LAnd2_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2688
       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2689
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2690
     apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2691
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2692
    (* other case of in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2693
    apply(drule fin_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2694
    apply(drule fic_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2695
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2696
    apply(drule BINDINGn_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2697
    apply(drule_tac x="a" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2698
    apply(drule_tac x="AndR <b>.M1 <c>.M2 a" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2699
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2700
    apply(simp add: better_AndL2_substn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2701
    apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2702
    apply(subgoal_tac "fresh_fun (\<lambda>z'. Cut <a>.AndR <b>.M1 <c>.M2 a (z').AndL2 (y).N' z') 
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
  2703
                   = Cut <a>.AndR <b>.M1 <c>.M2 a (ca).AndL2 (y).N' ca")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2704
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2705
     apply(subgoal_tac "Cut <a>.AndR <b>.M1 <c>.M2 a (ca).AndL2 (y).N' ca \<longrightarrow>\<^sub>a Cut <c>.M2 (y).N'")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2706
      apply(auto intro: a_preserves_SNa)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2707
     apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2708
     apply(rule better_LAnd2_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2709
      apply(simp add: abs_fresh fresh_prod fresh_atm) 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2710
     apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2711
    apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2712
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2713
    (* none of them in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2714
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2715
   apply(erule conjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2716
   apply(frule CAND_AndR_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2717
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2718
   apply(erule exE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2719
   apply(frule CAND_AndL2_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2720
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2721
   apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2722
   apply(simp only: ty.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2723
   apply(drule_tac x="B2" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2724
   apply(drule_tac x="M2" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2725
   apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2726
   apply(erule conjE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2727
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2728
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2729
   apply(drule_tac x="c" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2730
   apply(rotate_tac 14)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2731
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2732
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2733
   apply(rotate_tac 14)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2734
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2735
    apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2736
   apply(drule_tac x="y" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2737
   apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2738
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2739
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2740
   apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2741
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2742
    apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2743
   apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2744
    (* LOr1 case *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2745
  apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2746
   apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2747
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2748
   apply(frule_tac excluded_m)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2749
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2750
   apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2751
    (* one of them in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2752
    apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2753
     apply(drule fin_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2754
     apply(drule fic_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2755
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2756
     apply(drule BINDINGc_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2757
     apply(drule_tac x="x" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2758
     apply(drule_tac x="OrL (z).M1 (y).M2 x" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2759
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2760
     apply(simp add: better_OrR1_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2761
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2762
     apply(subgoal_tac "fresh_fun (\<lambda>a'. Cut <a'>.OrR1 <b>.N' a' (x).OrL (z).M1 (y).M2 x) 
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
  2763
                   = Cut <c>.OrR1 <b>.N' c (x).OrL (z).M1 (y).M2 x")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2764
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2765
      apply(subgoal_tac "Cut <c>.OrR1 <b>.N' c (x).OrL (z).M1 (y).M2 x \<longrightarrow>\<^sub>a Cut <b>.N' (z).M1")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2766
       apply(auto intro: a_preserves_SNa)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2767
      apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2768
      apply(rule better_LOr1_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2769
       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2770
      apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2771
     apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2772
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2773
    (* other case of in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2774
    apply(drule fin_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2775
    apply(drule fic_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2776
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2777
    apply(drule BINDINGn_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2778
    apply(drule_tac x="a" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2779
    apply(drule_tac x="OrR1 <b>.N' a" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2780
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2781
    apply(simp add: better_OrL_substn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2782
    apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2783
    apply(subgoal_tac "fresh_fun (\<lambda>z'. Cut <a>.OrR1 <b>.N' a (z').OrL (z).M1 (y).M2 z') 
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
  2784
                   = Cut <a>.OrR1 <b>.N' a (c).OrL (z).M1 (y).M2 c")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2785
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2786
     apply(subgoal_tac "Cut <a>.OrR1 <b>.N' a (c).OrL (z).M1 (y).M2 c \<longrightarrow>\<^sub>a Cut <b>.N' (z).M1")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2787
      apply(auto intro: a_preserves_SNa)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2788
     apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2789
     apply(rule better_LOr1_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2790
      apply(simp add: abs_fresh fresh_prod fresh_atm) 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2791
     apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2792
    apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2793
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2794
    (* none of them in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2795
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2796
   apply(erule conjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2797
   apply(frule CAND_OrR1_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2798
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2799
   apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2800
   apply(frule CAND_OrL_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2801
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2802
   apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2803
   apply(simp only: ty.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2804
   apply(drule_tac x="B1" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2805
   apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2806
   apply(drule_tac x="M1" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2807
   apply(erule conjE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2808
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2809
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2810
   apply(drule_tac x="b" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2811
   apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2812
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2813
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2814
   apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2815
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2816
    apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2817
   apply(drule_tac x="z" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2818
   apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2819
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2820
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2821
   apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2822
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2823
    apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2824
   apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2825
    (* LOr2 case *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2826
  apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2827
   apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2828
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2829
   apply(frule_tac excluded_m)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2830
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2831
   apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2832
    (* one of them in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2833
    apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2834
     apply(drule fin_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2835
     apply(drule fic_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2836
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2837
     apply(drule BINDINGc_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2838
     apply(drule_tac x="x" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2839
     apply(drule_tac x="OrL (z).M1 (y).M2 x" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2840
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2841
     apply(simp add: better_OrR2_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2842
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2843
     apply(subgoal_tac "fresh_fun (\<lambda>a'. Cut <a'>.OrR2 <b>.N' a' (x).OrL (z).M1 (y).M2 x) 
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
  2844
                   = Cut <c>.OrR2 <b>.N' c (x).OrL (z).M1 (y).M2 x")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2845
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2846
      apply(subgoal_tac "Cut <c>.OrR2 <b>.N' c (x).OrL (z).M1 (y).M2 x \<longrightarrow>\<^sub>a Cut <b>.N' (y).M2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2847
       apply(auto intro: a_preserves_SNa)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2848
      apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2849
      apply(rule better_LOr2_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2850
       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2851
      apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2852
     apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2853
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2854
    (* other case of in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2855
    apply(drule fin_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2856
    apply(drule fic_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2857
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2858
    apply(drule BINDINGn_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2859
    apply(drule_tac x="a" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2860
    apply(drule_tac x="OrR2 <b>.N' a" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2861
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2862
    apply(simp add: better_OrL_substn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2863
    apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2864
    apply(subgoal_tac "fresh_fun (\<lambda>z'. Cut <a>.OrR2 <b>.N' a (z').OrL (z).M1 (y).M2 z') 
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
  2865
                   = Cut <a>.OrR2 <b>.N' a (c).OrL (z).M1 (y).M2 c")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2866
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2867
     apply(subgoal_tac "Cut <a>.OrR2 <b>.N' a (c).OrL (z).M1 (y).M2 c \<longrightarrow>\<^sub>a Cut <b>.N' (y).M2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2868
      apply(auto intro: a_preserves_SNa)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2869
     apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2870
     apply(rule better_LOr2_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2871
      apply(simp add: abs_fresh fresh_prod fresh_atm) 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2872
     apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2873
    apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2874
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2875
    (* none of them in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2876
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2877
   apply(erule conjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2878
   apply(frule CAND_OrR2_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2879
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2880
   apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2881
   apply(frule CAND_OrL_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2882
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2883
   apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2884
   apply(simp only: ty.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2885
   apply(drule_tac x="B2" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2886
   apply(drule_tac x="N'" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2887
   apply(drule_tac x="M2" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2888
   apply(erule conjE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2889
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2890
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2891
   apply(drule_tac x="b" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2892
   apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2893
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2894
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2895
   apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2896
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2897
    apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2898
   apply(drule_tac x="y" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2899
   apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2900
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2901
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2902
   apply(rotate_tac 15)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2903
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2904
    apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2905
   apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2906
    (* LImp case *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2907
  apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2908
  apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2909
  apply(frule_tac excluded_m)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2910
   apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2911
  apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2912
    (* one of them in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2913
   apply(erule disjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2914
    apply(drule fin_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2915
    apply(drule fic_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2916
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2917
    apply(drule BINDINGc_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2918
    apply(drule_tac x="x" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2919
    apply(drule_tac x="ImpL <c>.N1 (y).N2 x" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2920
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2921
    apply(simp add: better_ImpR_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2922
    apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2923
    apply(subgoal_tac "fresh_fun (\<lambda>a'. Cut <a'>.ImpR (z).<b>.M'a a' (x).ImpL <c>.N1 (y).N2 x)
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
  2924
                   = Cut <ca>.ImpR (z).<b>.M'a ca (x).ImpL <c>.N1 (y).N2 x")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2925
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2926
     apply(subgoal_tac "Cut <ca>.ImpR (z).<b>.M'a ca (x).ImpL <c>.N1 (y).N2 x \<longrightarrow>\<^sub>a 
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
  2927
                                                          Cut <b>.Cut <c>.N1 (z).M'a (y).N2")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2928
      apply(auto intro: a_preserves_SNa)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2929
     apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2930
     apply(rule better_LImp_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2931
       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2932
      apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2933
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2934
    apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2935
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2936
    (* other case of in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2937
   apply(drule fin_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2938
   apply(drule fic_elims)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2939
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2940
   apply(drule BINDINGn_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2941
   apply(drule_tac x="a" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2942
   apply(drule_tac x="ImpR (z).<b>.M'a a" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2943
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2944
   apply(simp add: better_ImpL_substn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2945
   apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2946
   apply(subgoal_tac "fresh_fun (\<lambda>z'. Cut <a>.ImpR (z).<b>.M'a a (z').ImpL <c>.N1 (y).N2 z')
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
  2947
                   = Cut <a>.ImpR (z).<b>.M'a a (ca).ImpL <c>.N1 (y).N2 ca")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2948
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2949
    apply(subgoal_tac "Cut <a>.ImpR (z).<b>.M'a a (ca).ImpL <c>.N1 (y).N2 ca \<longrightarrow>\<^sub>a 
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
  2950
                                                          Cut <b>.Cut <c>.N1 (z).M'a (y).N2")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2951
     apply(auto intro: a_preserves_SNa)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2952
    apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2953
    apply(rule better_LImp_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2954
      apply(simp add: abs_fresh fresh_prod fresh_atm) 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2955
     apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2956
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2957
   apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2958
    apply(simp add: abs_fresh abs_supp fin_supp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2959
   apply(simp add: abs_fresh abs_supp fin_supp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2960
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2961
    (* none of them in BINDING *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2962
  apply(erule conjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2963
  apply(frule CAND_ImpL_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2964
   apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2965
  apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2966
  apply(frule CAND_ImpR_elim) (* check here *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2967
   apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2968
  apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2969
  apply(erule conjE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2970
  apply(simp only: ty.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2971
  apply(erule conjE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2972
  apply(case_tac "M'a=Ax z b")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2973
    (* case Ma = Ax z b *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2974
   apply(rule_tac t="Cut <b>.(Cut <c>.N1 (z).M'a) (y).N2" and s="Cut <b>.(M'a{z:=<c>.N1}) (y).N2" in subst)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2975
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2976
   apply(drule_tac x="c" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2977
   apply(drule_tac x="N1" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2978
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2979
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2980
   apply(drule_tac x="B2" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2981
   apply(drule_tac x="M'a{z:=<c>.N1}" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2982
   apply(drule_tac x="N2" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2983
   apply(drule conjunct1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2984
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2985
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2986
   apply(rotate_tac 17)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2987
   apply(drule_tac x="b" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2988
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2989
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2990
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2991
    apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2992
   apply(rotate_tac 17)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2993
   apply(drule_tac x="y" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2994
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2995
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2996
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2997
    apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2998
   apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  2999
    (* case Ma \<noteq> Ax z b *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3000
  apply(subgoal_tac "<b>:Cut <c>.N1 (z).M'a \<in> \<parallel><B2>\<parallel>") (* lemma *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3001
   apply(frule_tac meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3002
   apply(drule_tac x="B2" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3003
   apply(drule_tac x="Cut <c>.N1 (z).M'a" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3004
   apply(drule_tac x="N2" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3005
   apply(erule conjE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3006
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3007
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3008
   apply(rotate_tac 20)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3009
   apply(drule_tac x="b" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3010
   apply(rotate_tac 20)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3011
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3012
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3013
   apply(rotate_tac 20)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3014
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3015
    apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3016
   apply(rotate_tac 20)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3017
   apply(drule_tac x="y" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3018
   apply(rotate_tac 20)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3019
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3020
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3021
   apply(rotate_tac 20)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3022
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3023
    apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3024
   apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3025
    (* lemma *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3026
  apply(subgoal_tac "<b>:Cut <c>.N1 (z).M'a \<in> BINDINGc B2 (\<parallel>(B2)\<parallel>)") (* second lemma *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3027
   apply(simp add: BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3028
    (* second lemma *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3029
  apply(simp (no_asm) add: BINDINGc_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3030
  apply(rule exI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3031
  apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3032
   apply(rule refl)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3033
  apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3034
  apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3035
  apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3036
  apply(rule_tac t="Cut <c>.N1 (z).M'a" and s="Cut <c>.N1 (ca).([(ca,z)]\<bullet>M'a)" in subst)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3037
   apply(simp add: trm.inject alpha fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3038
  apply(rule_tac t="(Cut <c>.N1 (ca).([(ca,z)]\<bullet>M'a)){b:=(xa).P}" 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3039
      and s="Cut <c>.N1 (ca).(([(ca,z)]\<bullet>M'a){b:=(xa).P})" in subst)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3040
   apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3041
   apply(rule tricky_subst)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3042
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3043
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3044
   apply(clarify)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3045
   apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3046
   apply(simp add: calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3047
  apply(drule_tac x="B1" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3048
  apply(drule_tac x="N1" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3049
  apply(drule_tac x="([(ca,z)]\<bullet>M'a){b:=(xa).P}" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3050
  apply(drule conjunct1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3051
  apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3052
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3053
  apply(rotate_tac 19)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3054
  apply(drule_tac x="c" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3055
  apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3056
   apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3057
  apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3058
   apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3059
  apply(rotate_tac 19)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3060
  apply(drule_tac x="ca" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3061
  apply(subgoal_tac "(ca):([(ca,z)]\<bullet>M'a){b:=(xa).P} \<in> \<parallel>(B1)\<parallel>")(*A*)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3062
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3063
    apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3064
   apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3065
    apply(simp add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3066
   apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3067
    (*A*)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3068
  apply(drule_tac x="[(ca,z)]\<bullet>xa" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3069
  apply(drule_tac x="[(ca,z)]\<bullet>P" in spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3070
  apply(rotate_tac 19)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3071
  apply(simp add: fresh_prod fresh_left)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3072
  apply(drule mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3073
   apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3074
    apply(auto simp add: calc_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3075
   apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3076
    apply(auto simp add: calc_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3077
   apply(drule_tac pi="[(ca,z)]" and x="(xa):P" in pt_set_bij2[OF pt_name_inst, OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3078
   apply(simp add: CAND_eqvt_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3079
  apply(drule_tac pi="[(ca,z)]" and X="\<parallel>(B1)\<parallel>" in pt_set_bij2[OF pt_name_inst, OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3080
  apply(simp add: CAND_eqvt_name csubst_eqvt)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3081
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3082
  done
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
  3083
9be4ab2acc13 split Class.thy into parts to 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
9be4ab2acc13 split Class.thy into parts to 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
(* parallel substitution *)
9be4ab2acc13 split Class.thy into parts to 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
9be4ab2acc13 split Class.thy into parts to 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
9be4ab2acc13 split Class.thy into parts to 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
lemma CUT_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
  3089
  assumes a1: "<a>:M \<in> (\<parallel><B>\<parallel>)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3090
    and     a2: "(x):N \<in> (\<parallel>(B)\<parallel>)"
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
  3091
  shows   "SNa (Cut <a>.M (x).N)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3092
  using a1 a2
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3093
  apply -
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3094
  apply(rule CUT_SNa_aux[OF a1])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3095
    apply(simp_all add: CANDs_imply_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3096
  done 
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
  3097
9be4ab2acc13 split Class.thy into parts to 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
9be4ab2acc13 split Class.thy into parts to 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
fun 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3100
  findn :: "(name\<times>coname\<times>trm) list\<Rightarrow>name\<Rightarrow>(coname\<times>trm) option"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3101
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3102
    "findn [] x = None"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3103
  | "findn ((y,c,P)#\<theta>_n) x = (if y=x then Some (c,P) else findn \<theta>_n x)"
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
  3104
9be4ab2acc13 split Class.thy into parts to 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
lemma findn_eqvt[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
  3106
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3107
    and   pi2::"coname prm"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3108
  shows "(pi1\<bullet>findn \<theta>_n x) = findn (pi1\<bullet>\<theta>_n) (pi1\<bullet>x)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3109
    and   "(pi2\<bullet>findn \<theta>_n x) = findn (pi2\<bullet>\<theta>_n) (pi2\<bullet>x)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3110
   apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3111
     apply(auto simp add: perm_bij) 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3112
  done
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
  3113
9be4ab2acc13 split Class.thy into parts to 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
lemma findn_fresh:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3115
  assumes a: "x\<sharp>\<theta>_n"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3116
  shows "findn \<theta>_n x = None"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3117
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3118
  apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3119
   apply(auto simp add: fresh_list_cons fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3120
  done
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
  3121
9be4ab2acc13 split Class.thy into parts to 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
fun 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3123
  findc :: "(coname\<times>name\<times>trm) list\<Rightarrow>coname\<Rightarrow>(name\<times>trm) option"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3124
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3125
    "findc [] x = None"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3126
  | "findc ((c,y,P)#\<theta>_c) a = (if a=c then Some (y,P) else findc \<theta>_c a)"
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
  3127
9be4ab2acc13 split Class.thy into parts to 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
lemma findc_eqvt[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
  3129
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3130
    and   pi2::"coname prm"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3131
  shows "(pi1\<bullet>findc \<theta>_c a) = findc (pi1\<bullet>\<theta>_c) (pi1\<bullet>a)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3132
    and   "(pi2\<bullet>findc \<theta>_c a) = findc (pi2\<bullet>\<theta>_c) (pi2\<bullet>a)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3133
   apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3134
     apply(auto simp add: perm_bij) 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3135
  done
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
  3136
9be4ab2acc13 split Class.thy into parts to 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
lemma findc_fresh:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3138
  assumes a: "a\<sharp>\<theta>_c"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3139
  shows "findc \<theta>_c a = None"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3140
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3141
  apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3142
   apply(auto simp add: fresh_list_cons fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3143
  done
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
  3144
9be4ab2acc13 split Class.thy into parts to 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
abbreviation 
80914
d97fdabd9e2b standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
wenzelm
parents: 80609
diff changeset
  3146
  nmaps :: "(name\<times>coname\<times>trm) list \<Rightarrow> name \<Rightarrow> (coname\<times>trm) option \<Rightarrow> bool" (\<open>_ nmaps _ to _\<close> [55,55,55] 55) 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3147
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3148
    "\<theta>_n nmaps x to P \<equiv> (findn \<theta>_n x) = P"
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
  3149
9be4ab2acc13 split Class.thy into parts to 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
abbreviation 
80914
d97fdabd9e2b standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
wenzelm
parents: 80609
diff changeset
  3151
  cmaps :: "(coname\<times>name\<times>trm) list \<Rightarrow> coname \<Rightarrow> (name\<times>trm) option \<Rightarrow> bool" (\<open>_ cmaps _ to _\<close> [55,55,55] 55) 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3152
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3153
    "\<theta>_c cmaps a to P \<equiv> (findc \<theta>_c a) = P"
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
  3154
9be4ab2acc13 split Class.thy into parts to 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
lemma nmaps_fresh:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3156
  shows "\<theta>_n nmaps x to Some (c,P) \<Longrightarrow> a\<sharp>\<theta>_n \<Longrightarrow> a\<sharp>(c,P)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3157
  apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3158
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3159
   apply(case_tac "aa=x")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3160
    apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3161
  apply(case_tac "aa=x")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3162
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3163
  done
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
  3164
9be4ab2acc13 split Class.thy into parts to 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
lemma cmaps_fresh:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3166
  shows "\<theta>_c cmaps a to Some (y,P) \<Longrightarrow> x\<sharp>\<theta>_c \<Longrightarrow> x\<sharp>(y,P)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3167
  apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3168
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3169
   apply(case_tac "a=aa")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3170
    apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3171
  apply(case_tac "a=aa")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3172
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3173
  done
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
  3174
9be4ab2acc13 split Class.thy into parts to 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
lemma nmaps_false:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3176
  shows "\<theta>_n nmaps x to Some (c,P) \<Longrightarrow> x\<sharp>\<theta>_n \<Longrightarrow> False"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3177
  apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3178
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3179
  done
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
  3180
9be4ab2acc13 split Class.thy into parts to 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
lemma cmaps_false:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3182
  shows "\<theta>_c cmaps c to Some (x,P) \<Longrightarrow> c\<sharp>\<theta>_c \<Longrightarrow> False"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3183
  apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3184
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3185
  done
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
  3186
9be4ab2acc13 split Class.thy into parts to 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
fun 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3188
  lookupa :: "name\<Rightarrow>coname\<Rightarrow>(coname\<times>name\<times>trm) list\<Rightarrow>trm"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3189
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3190
    "lookupa x a [] = Ax x a"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3191
  | "lookupa x a ((c,y,P)#\<theta>_c) = (if a=c then Cut <a>.Ax x a (y).P else lookupa x a \<theta>_c)"
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
  3192
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupa_eqvt[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
  3194
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3195
    and   pi2::"coname prm"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3196
  shows "(pi1\<bullet>(lookupa x a \<theta>_c)) = lookupa (pi1\<bullet>x) (pi1\<bullet>a) (pi1\<bullet>\<theta>_c)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3197
    and   "(pi2\<bullet>(lookupa x a \<theta>_c)) = lookupa (pi2\<bullet>x) (pi2\<bullet>a) (pi2\<bullet>\<theta>_c)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3198
   apply -
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3199
   apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3200
    apply(auto simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3201
  apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3202
   apply(auto simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3203
  done
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
  3204
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupa_fire:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3206
  assumes a: "\<theta>_c cmaps a to Some (y,P)"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3207
  shows "(lookupa x a \<theta>_c) = Cut <a>.Ax x a (y).P"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3208
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3209
  apply(induct \<theta>_c arbitrary: x a y P)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3210
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3211
  done
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
  3212
9be4ab2acc13 split Class.thy into parts to 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
fun 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3214
  lookupb :: "name\<Rightarrow>coname\<Rightarrow>(coname\<times>name\<times>trm) list\<Rightarrow>coname\<Rightarrow>trm\<Rightarrow>trm"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3215
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3216
    "lookupb x a [] c P = Cut <c>.P (x).Ax x a"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3217
  | "lookupb x a ((d,y,N)#\<theta>_c) c P = (if a=d then Cut <c>.P (y).N  else lookupb x a \<theta>_c c P)"
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
  3218
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupb_eqvt[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
  3220
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3221
    and   pi2::"coname prm"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3222
  shows "(pi1\<bullet>(lookupb x a \<theta>_c c P)) = lookupb (pi1\<bullet>x) (pi1\<bullet>a) (pi1\<bullet>\<theta>_c) (pi1\<bullet>c) (pi1\<bullet>P)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3223
    and   "(pi2\<bullet>(lookupb x a \<theta>_c c P)) = lookupb (pi2\<bullet>x) (pi2\<bullet>a) (pi2\<bullet>\<theta>_c) (pi2\<bullet>c) (pi2\<bullet>P)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3224
   apply -
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3225
   apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3226
    apply(auto simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3227
  apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3228
   apply(auto simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3229
  done
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
  3230
9be4ab2acc13 split Class.thy into parts to 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
fun 
9be4ab2acc13 split Class.thy into parts to 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
  lookup :: "name\<Rightarrow>coname\<Rightarrow>(name\<times>coname\<times>trm) list\<Rightarrow>(coname\<times>name\<times>trm) list\<Rightarrow>trm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3233
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3234
    "lookup x a [] \<theta>_c = lookupa x a \<theta>_c"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3235
  | "lookup x a ((y,c,P)#\<theta>_n) \<theta>_c = (if x=y then (lookupb x a \<theta>_c c P) else lookup x a \<theta>_n \<theta>_c)"
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
  3236
9be4ab2acc13 split Class.thy into parts to 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
lemma lookup_eqvt[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
  3238
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3239
    and   pi2::"coname prm"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3240
  shows "(pi1\<bullet>(lookup x a \<theta>_n \<theta>_c)) = lookup (pi1\<bullet>x) (pi1\<bullet>a) (pi1\<bullet>\<theta>_n) (pi1\<bullet>\<theta>_c)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3241
    and   "(pi2\<bullet>(lookup x a \<theta>_n \<theta>_c)) = lookup (pi2\<bullet>x) (pi2\<bullet>a) (pi2\<bullet>\<theta>_n) (pi2\<bullet>\<theta>_c)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3242
   apply -
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3243
   apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3244
    apply(auto simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3245
  apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3246
   apply(auto simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3247
  done
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
  3248
9be4ab2acc13 split Class.thy into parts to 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
fun 
9be4ab2acc13 split Class.thy into parts to 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
  lookupc :: "name\<Rightarrow>coname\<Rightarrow>(name\<times>coname\<times>trm) list\<Rightarrow>trm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3251
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3252
    "lookupc x a [] = Ax x a"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3253
  | "lookupc x a ((y,c,P)#\<theta>_n) = (if x=y then P[c\<turnstile>c>a] else lookupc x a \<theta>_n)"
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
  3254
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupc_eqvt[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
  3256
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3257
    and   pi2::"coname prm"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3258
  shows "(pi1\<bullet>(lookupc x a \<theta>_n)) = lookupc (pi1\<bullet>x) (pi1\<bullet>a) (pi1\<bullet>\<theta>_n)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3259
    and   "(pi2\<bullet>(lookupc x a \<theta>_n)) = lookupc (pi2\<bullet>x) (pi2\<bullet>a) (pi2\<bullet>\<theta>_n)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3260
   apply -
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3261
   apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3262
    apply(auto simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3263
  apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3264
   apply(auto simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3265
  done
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
  3266
9be4ab2acc13 split Class.thy into parts to 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
fun 
9be4ab2acc13 split Class.thy into parts to 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
  lookupd :: "name\<Rightarrow>coname\<Rightarrow>(coname\<times>name\<times>trm) list\<Rightarrow>trm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3269
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3270
    "lookupd x a [] = Ax x a"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3271
  | "lookupd x a ((c,y,P)#\<theta>_c) = (if a=c then P[y\<turnstile>n>x] else lookupd x a \<theta>_c)"
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
  3272
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupd_eqvt[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
  3274
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3275
    and   pi2::"coname prm"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3276
  shows "(pi1\<bullet>(lookupd x a \<theta>_n)) = lookupd (pi1\<bullet>x) (pi1\<bullet>a) (pi1\<bullet>\<theta>_n)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3277
    and   "(pi2\<bullet>(lookupd x a \<theta>_n)) = lookupd (pi2\<bullet>x) (pi2\<bullet>a) (pi2\<bullet>\<theta>_n)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3278
   apply -
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3279
   apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3280
    apply(auto simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3281
  apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3282
   apply(auto simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3283
  done
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
  3284
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupa_fresh:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3286
  assumes a: "a\<sharp>\<theta>_c"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3287
  shows "lookupa y a \<theta>_c = Ax y a"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3288
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3289
  apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3290
   apply(auto simp add: fresh_prod fresh_list_cons fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3291
  done
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
  3292
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupa_csubst:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3294
  assumes a: "a\<sharp>\<theta>_c"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3295
  shows "Cut <a>.Ax y a (x).P = (lookupa y a \<theta>_c){a:=(x).P}"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3296
  using a by (simp add: lookupa_fresh)
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
  3297
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupa_freshness:
9be4ab2acc13 split Class.thy into parts to 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
  fixes a::"coname"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3300
    and   x::"name"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3301
  shows "a\<sharp>(\<theta>_c,c) \<Longrightarrow> a\<sharp>lookupa y c \<theta>_c"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3302
    and   "x\<sharp>(\<theta>_c,y) \<Longrightarrow> x\<sharp>lookupa y c \<theta>_c"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3303
   apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3304
     apply(auto simp add: fresh_prod fresh_list_cons abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3305
  done
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
  3306
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupa_unicity:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3308
  assumes a: "lookupa x a \<theta>_c= Ax y b" "b\<sharp>\<theta>_c" "y\<sharp>\<theta>_c"
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
  3309
  shows "x=y \<and> a=b"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3310
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3311
  apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3312
   apply(auto simp add: trm.inject fresh_list_cons fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3313
   apply(case_tac "a=aa")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3314
    apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3315
  apply(case_tac "a=aa")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3316
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3317
  done
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
  3318
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupb_csubst:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3320
  assumes a: "a\<sharp>(\<theta>_c,c,N)"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3321
  shows "Cut <c>.N (x).P = (lookupb y a \<theta>_c c N){a:=(x).P}"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3322
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3323
  apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3324
   apply(auto simp add: fresh_list_cons fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3325
  apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3326
  apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3327
  apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3328
  apply(subgoal_tac "Cut <c>.N (y).Ax y a = Cut <caa>.([(caa,c)]\<bullet>N) (ca).Ax ca a")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3329
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3330
   apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3331
    apply(rule better_Cut_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3332
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3333
    apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3334
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3335
   apply(subgoal_tac "a\<sharp>([(caa,c)]\<bullet>N)")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3336
    apply(simp add: forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3337
    apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3338
   apply(simp add: fresh_left calc_atm fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3339
  apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3340
  apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3341
   apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3342
   apply(simp add: alpha fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3343
  apply(simp add: alpha calc_atm fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3344
  done
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
  3345
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupb_freshness:
9be4ab2acc13 split Class.thy into parts to 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
  fixes a::"coname"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3348
    and   x::"name"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3349
  shows "a\<sharp>(\<theta>_c,c,b,P) \<Longrightarrow> a\<sharp>lookupb y c \<theta>_c b P"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3350
    and   "x\<sharp>(\<theta>_c,y,P) \<Longrightarrow> x\<sharp>lookupb y c \<theta>_c b P"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3351
   apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3352
     apply(auto simp add: fresh_prod fresh_list_cons abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3353
  done
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
  3354
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupb_unicity:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3356
  assumes a: "lookupb x a \<theta>_c c P = Ax y b" "b\<sharp>(\<theta>_c,c,P)" "y\<sharp>\<theta>_c"
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
  3357
  shows "x=y \<and> a=b"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3358
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3359
  apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3360
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3361
   apply(case_tac "a=aa")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3362
    apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3363
  apply(case_tac "a=aa")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3364
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3365
  done
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
  3366
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupb_lookupa:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3368
  assumes a: "x\<sharp>\<theta>_c"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3369
  shows "lookupb x c \<theta>_c a P = (lookupa x c \<theta>_c){x:=<a>.P}"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3370
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3371
  apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3372
   apply(auto simp add: fresh_list_cons fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3373
  apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3374
  apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3375
  apply(subgoal_tac "Cut <c>.Ax x c (aa).b = Cut <ca>.Ax x ca (caa).([(caa,aa)]\<bullet>b)")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3376
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3377
   apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3378
   apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3379
    apply(rule better_Cut_substn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3380
     apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3381
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3382
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3383
   apply(subgoal_tac "x\<sharp>([(caa,aa)]\<bullet>b)")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3384
    apply(simp add: forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3385
    apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3386
   apply(auto simp add: fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3387
  apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3388
  apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3389
   apply(simp add: alpha calc_atm fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3390
  apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3391
  apply(simp add: alpha calc_atm fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3392
  done
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
  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
lemma lookup_csubst:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3395
  assumes a: "a\<sharp>(\<theta>_n,\<theta>_c)"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3396
  shows "lookup y c \<theta>_n ((a,x,P)#\<theta>_c) = (lookup y c \<theta>_n \<theta>_c){a:=(x).P}"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3397
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3398
  apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3399
   apply(auto simp add: fresh_prod fresh_list_cons)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3400
     apply(simp add: lookupa_csubst)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3401
    apply(simp add: lookupa_freshness forget fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3402
   apply(rule lookupb_csubst)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3403
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3404
  apply(auto simp add: lookupb_freshness forget fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3405
  done
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
  3406
9be4ab2acc13 split Class.thy into parts to 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
lemma lookup_fresh:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3408
  assumes a: "x\<sharp>(\<theta>_n,\<theta>_c)"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3409
  shows "lookup x c \<theta>_n \<theta>_c = lookupa x c \<theta>_c"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3410
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3411
  apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3412
   apply(auto simp add: fresh_prod fresh_list_cons fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3413
  done
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
  3414
9be4ab2acc13 split Class.thy into parts to 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
lemma lookup_unicity:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3416
  assumes a: "lookup x a \<theta>_n \<theta>_c= Ax y b" "b\<sharp>(\<theta>_c,\<theta>_n)" "y\<sharp>(\<theta>_c,\<theta>_n)"
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
  3417
  shows "x=y \<and> a=b"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3418
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3419
  apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3420
   apply(auto simp add: trm.inject fresh_list_cons fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3421
     apply(drule lookupa_unicity)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3422
       apply(simp)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3423
    apply(drule lookupa_unicity)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3424
      apply(simp)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3425
   apply(case_tac "x=aa")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3426
    apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3427
   apply(drule lookupb_unicity)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3428
     apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3429
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3430
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3431
  apply(case_tac "x=aa")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3432
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3433
  apply(drule lookupb_unicity)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3434
    apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3435
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3436
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3437
  done
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
  3438
9be4ab2acc13 split Class.thy into parts to 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
lemma lookup_freshness:
9be4ab2acc13 split Class.thy into parts to 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
  fixes a::"coname"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3441
    and   x::"name"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3442
  shows "a\<sharp>(c,\<theta>_c,\<theta>_n) \<Longrightarrow> a\<sharp>lookup y c \<theta>_n \<theta>_c"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3443
    and   "x\<sharp>(y,\<theta>_c,\<theta>_n) \<Longrightarrow> x\<sharp>lookup y c \<theta>_n \<theta>_c"   
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3444
   apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3445
     apply(auto simp add: fresh_prod fresh_list_cons abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3446
     apply(simp add: fresh_atm fresh_prod lookupa_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3447
    apply(simp add: fresh_atm fresh_prod lookupa_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3448
   apply(simp add: fresh_atm fresh_prod lookupb_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3449
  apply(simp add: fresh_atm fresh_prod lookupb_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3450
  done
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
  3451
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupc_freshness:
9be4ab2acc13 split Class.thy into parts to 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
  fixes a::"coname"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3454
    and   x::"name"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3455
  shows "a\<sharp>(\<theta>_c,c) \<Longrightarrow> a\<sharp>lookupc y c \<theta>_c"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3456
    and   "x\<sharp>(\<theta>_c,y) \<Longrightarrow> x\<sharp>lookupc y c \<theta>_c"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3457
   apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3458
     apply(auto simp add: fresh_prod fresh_list_cons abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3459
   apply(rule rename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3460
   apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3461
  apply(rule rename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3462
  apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3463
  done
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
  3464
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupc_fresh:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3466
  assumes a: "y\<sharp>\<theta>_n"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3467
  shows "lookupc y a \<theta>_n = Ax y a"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3468
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3469
  apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3470
   apply(auto simp add: fresh_prod fresh_list_cons fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3471
  done
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
  3472
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupc_nmaps:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3474
  assumes a: "\<theta>_n nmaps x to Some (c,P)"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3475
  shows "lookupc x a \<theta>_n = P[c\<turnstile>c>a]"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3476
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3477
  apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3478
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3479
  done 
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
  3480
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupc_unicity:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3482
  assumes a: "lookupc y a \<theta>_n = Ax x b" "x\<sharp>\<theta>_n"
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
  3483
  shows "y=x"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3484
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3485
  apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3486
   apply(auto simp add: trm.inject fresh_list_cons fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3487
  apply(case_tac "y=aa")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3488
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3489
  apply(subgoal_tac "x\<sharp>(ba[aa\<turnstile>c>a])")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3490
   apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3491
  apply(rule rename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3492
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3493
  done
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
  3494
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupd_fresh:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3496
  assumes a: "a\<sharp>\<theta>_c"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3497
  shows "lookupd y a \<theta>_c = Ax y a"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3498
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3499
  apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3500
   apply(auto simp add: fresh_prod fresh_list_cons fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3501
  done 
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
  3502
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupd_unicity:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3504
  assumes a: "lookupd y a \<theta>_c = Ax y b" "b\<sharp>\<theta>_c"
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
  3505
  shows "a=b"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3506
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3507
  apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3508
   apply(auto simp add: trm.inject fresh_list_cons fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3509
  apply(case_tac "a=aa")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3510
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3511
  apply(subgoal_tac "b\<sharp>(ba[aa\<turnstile>n>y])")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3512
   apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3513
  apply(rule rename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3514
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3515
  done
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
  3516
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupd_freshness:
9be4ab2acc13 split Class.thy into parts to 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
  fixes a::"coname"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3519
    and   x::"name"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3520
  shows "a\<sharp>(\<theta>_c,c) \<Longrightarrow> a\<sharp>lookupd y c \<theta>_c"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3521
    and   "x\<sharp>(\<theta>_c,y) \<Longrightarrow> x\<sharp>lookupd y c \<theta>_c"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3522
   apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3523
     apply(auto simp add: fresh_prod fresh_list_cons abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3524
   apply(rule rename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3525
   apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3526
  apply(rule rename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3527
  apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3528
  done
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
  3529
9be4ab2acc13 split Class.thy into parts to 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
lemma lookupd_cmaps:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3531
  assumes a: "\<theta>_c cmaps a to Some (x,P)"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3532
  shows "lookupd y a \<theta>_c = P[x\<turnstile>n>y]"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3533
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3534
  apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3535
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3536
  done 
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
  3537
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3538
nominal_primrec (freshness_context: "\<theta>_n::(name\<times>coname\<times>trm)")
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
  3539
  stn :: "trm\<Rightarrow>(name\<times>coname\<times>trm) list\<Rightarrow>trm" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3540
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3541
    "stn (Ax x a) \<theta>_n = lookupc x a \<theta>_n"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3542
  | "\<lbrakk>a\<sharp>(N,\<theta>_n);x\<sharp>(M,\<theta>_n)\<rbrakk> \<Longrightarrow> stn (Cut <a>.M (x).N) \<theta>_n = (Cut <a>.M (x).N)" 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3543
  | "x\<sharp>\<theta>_n \<Longrightarrow> stn (NotR (x).M a) \<theta>_n = (NotR (x).M a)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3544
  | "a\<sharp>\<theta>_n \<Longrightarrow>stn (NotL <a>.M x) \<theta>_n = (NotL <a>.M x)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3545
  | "\<lbrakk>a\<sharp>(N,d,b,\<theta>_n);b\<sharp>(M,d,a,\<theta>_n)\<rbrakk> \<Longrightarrow> stn (AndR <a>.M <b>.N d) \<theta>_n = (AndR <a>.M <b>.N d)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3546
  | "x\<sharp>(z,\<theta>_n) \<Longrightarrow> stn (AndL1 (x).M z) \<theta>_n = (AndL1 (x).M z)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3547
  | "x\<sharp>(z,\<theta>_n) \<Longrightarrow> stn (AndL2 (x).M z) \<theta>_n = (AndL2 (x).M z)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3548
  | "a\<sharp>(b,\<theta>_n) \<Longrightarrow> stn (OrR1 <a>.M b) \<theta>_n = (OrR1 <a>.M b)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3549
  | "a\<sharp>(b,\<theta>_n) \<Longrightarrow> stn (OrR2 <a>.M b) \<theta>_n = (OrR2 <a>.M b)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3550
  | "\<lbrakk>x\<sharp>(N,z,u,\<theta>_n);u\<sharp>(M,z,x,\<theta>_n)\<rbrakk> \<Longrightarrow> stn (OrL (x).M (u).N z) \<theta>_n = (OrL (x).M (u).N z)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3551
  | "\<lbrakk>a\<sharp>(b,\<theta>_n);x\<sharp>\<theta>_n\<rbrakk> \<Longrightarrow> stn (ImpR (x).<a>.M b) \<theta>_n = (ImpR (x).<a>.M b)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3552
  | "\<lbrakk>a\<sharp>(N,\<theta>_n);x\<sharp>(M,z,\<theta>_n)\<rbrakk> \<Longrightarrow> stn (ImpL <a>.M (x).N z) \<theta>_n = (ImpL <a>.M (x).N z)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3553
                       apply(finite_guess)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3554
                       apply(rule TrueI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3555
                       apply(simp add: abs_fresh abs_supp fin_supp)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3556
                       apply(fresh_guess)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3557
  done
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
  3558
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3559
nominal_primrec (freshness_context: "\<theta>_c::(coname\<times>name\<times>trm)")
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
  3560
  stc :: "trm\<Rightarrow>(coname\<times>name\<times>trm) list\<Rightarrow>trm" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3561
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3562
    "stc (Ax x a) \<theta>_c = lookupd x a \<theta>_c"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3563
  | "\<lbrakk>a\<sharp>(N,\<theta>_c);x\<sharp>(M,\<theta>_c)\<rbrakk> \<Longrightarrow> stc (Cut <a>.M (x).N) \<theta>_c = (Cut <a>.M (x).N)" 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3564
  | "x\<sharp>\<theta>_c \<Longrightarrow> stc (NotR (x).M a) \<theta>_c = (NotR (x).M a)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3565
  | "a\<sharp>\<theta>_c \<Longrightarrow> stc (NotL <a>.M x) \<theta>_c = (NotL <a>.M x)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3566
  | "\<lbrakk>a\<sharp>(N,d,b,\<theta>_c);b\<sharp>(M,d,a,\<theta>_c)\<rbrakk> \<Longrightarrow> stc (AndR <a>.M <b>.N d) \<theta>_c = (AndR <a>.M <b>.N d)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3567
  | "x\<sharp>(z,\<theta>_c) \<Longrightarrow> stc (AndL1 (x).M z) \<theta>_c = (AndL1 (x).M z)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3568
  | "x\<sharp>(z,\<theta>_c) \<Longrightarrow> stc (AndL2 (x).M z) \<theta>_c = (AndL2 (x).M z)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3569
  | "a\<sharp>(b,\<theta>_c) \<Longrightarrow> stc (OrR1 <a>.M b) \<theta>_c = (OrR1 <a>.M b)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3570
  | "a\<sharp>(b,\<theta>_c) \<Longrightarrow> stc (OrR2 <a>.M b) \<theta>_c = (OrR2 <a>.M b)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3571
  | "\<lbrakk>x\<sharp>(N,z,u,\<theta>_c);u\<sharp>(M,z,x,\<theta>_c)\<rbrakk> \<Longrightarrow> stc (OrL (x).M (u).N z) \<theta>_c = (OrL (x).M (u).N z)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3572
  | "\<lbrakk>a\<sharp>(b,\<theta>_c);x\<sharp>\<theta>_c\<rbrakk> \<Longrightarrow> stc (ImpR (x).<a>.M b) \<theta>_c = (ImpR (x).<a>.M b)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3573
  | "\<lbrakk>a\<sharp>(N,\<theta>_c);x\<sharp>(M,z,\<theta>_c)\<rbrakk> \<Longrightarrow> stc (ImpL <a>.M (x).N z) \<theta>_c = (ImpL <a>.M (x).N z)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3574
                       apply(finite_guess)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3575
                       apply(rule TrueI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3576
                       apply(simp add: abs_fresh abs_supp fin_supp)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3577
                       apply(fresh_guess)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3578
  done
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
  3579
9be4ab2acc13 split Class.thy into parts to 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
lemma stn_eqvt[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
  3581
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3582
    and   pi2::"coname prm"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3583
  shows "(pi1\<bullet>(stn M \<theta>_n)) = stn (pi1\<bullet>M) (pi1\<bullet>\<theta>_n)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3584
    and   "(pi2\<bullet>(stn M \<theta>_n)) = stn (pi2\<bullet>M) (pi2\<bullet>\<theta>_n)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3585
   apply -
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3586
   apply(nominal_induct M avoiding: \<theta>_n rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3587
              apply(auto simp add: eqvts fresh_bij fresh_prod eq_bij fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3588
  apply(nominal_induct M avoiding: \<theta>_n rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3589
             apply(auto simp add: eqvts fresh_bij fresh_prod eq_bij fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3590
  done
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
  3591
9be4ab2acc13 split Class.thy into parts to 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
lemma stc_eqvt[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
  3593
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3594
    and   pi2::"coname prm"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3595
  shows "(pi1\<bullet>(stc M \<theta>_c)) = stc (pi1\<bullet>M) (pi1\<bullet>\<theta>_c)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3596
    and   "(pi2\<bullet>(stc M \<theta>_c)) = stc (pi2\<bullet>M) (pi2\<bullet>\<theta>_c)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3597
   apply -
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3598
   apply(nominal_induct M avoiding: \<theta>_c rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3599
              apply(auto simp add: eqvts fresh_bij fresh_prod eq_bij fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3600
  apply(nominal_induct M avoiding: \<theta>_c rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3601
             apply(auto simp add: eqvts fresh_bij fresh_prod eq_bij fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3602
  done
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
  3603
9be4ab2acc13 split Class.thy into parts to 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
lemma stn_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
  3605
  fixes a::"coname"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3606
    and   x::"name"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3607
  shows "a\<sharp>(\<theta>_n,M) \<Longrightarrow> a\<sharp>stn M \<theta>_n"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3608
    and   "x\<sharp>(\<theta>_n,M) \<Longrightarrow> x\<sharp>stn M \<theta>_n"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3609
   apply(nominal_induct M avoiding: \<theta>_n a x rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3610
                       apply(auto simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3611
   apply(rule lookupc_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3612
   apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3613
  apply(rule lookupc_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3614
  apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3615
  done
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
  3616
9be4ab2acc13 split Class.thy into parts to 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
lemma stc_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
  3618
  fixes a::"coname"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3619
    and   x::"name"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3620
  shows "a\<sharp>(\<theta>_c,M) \<Longrightarrow> a\<sharp>stc M \<theta>_c"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3621
    and   "x\<sharp>(\<theta>_c,M) \<Longrightarrow> x\<sharp>stc M \<theta>_c"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3622
   apply(nominal_induct M avoiding: \<theta>_c a x rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3623
                       apply(auto simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3624
   apply(rule lookupd_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3625
   apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3626
  apply(rule lookupd_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3627
  apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3628
  done
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
  3629
55413
a8e96847523c adapted theories to '{case,rec}_{list,option}' names
blanchet
parents: 53015
diff changeset
  3630
lemma case_option_eqvt1[eqvt_force]:
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
  3631
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3632
    and   pi2::"coname prm"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3633
    and   B::"(name\<times>trm) option"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3634
    and   r::"trm"
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
  3635
  shows "(pi1\<bullet>(case B of Some (x,P) \<Rightarrow> s x P | None \<Rightarrow> 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
  3636
              (case (pi1\<bullet>B) of Some (x,P) \<Rightarrow> (pi1\<bullet>s) x P | None \<Rightarrow> (pi1\<bullet>r))"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3637
    and   "(pi2\<bullet>(case B of Some (x,P) \<Rightarrow> s x P| None \<Rightarrow> 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
  3638
              (case (pi2\<bullet>B) of Some (x,P) \<Rightarrow> (pi2\<bullet>s) x P | None \<Rightarrow> (pi2\<bullet>r))"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3639
   apply(cases "B")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3640
    apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3641
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3642
  apply(cases "B")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3643
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3644
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3645
  done
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
  3646
55413
a8e96847523c adapted theories to '{case,rec}_{list,option}' names
blanchet
parents: 53015
diff changeset
  3647
lemma case_option_eqvt2[eqvt_force]:
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
  3648
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3649
    and   pi2::"coname prm"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3650
    and   B::"(coname\<times>trm) option"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3651
    and   r::"trm"
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
  3652
  shows "(pi1\<bullet>(case B of Some (x,P) \<Rightarrow> s x P | None \<Rightarrow> 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
  3653
              (case (pi1\<bullet>B) of Some (x,P) \<Rightarrow> (pi1\<bullet>s) x P | None \<Rightarrow> (pi1\<bullet>r))"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3654
    and   "(pi2\<bullet>(case B of Some (x,P) \<Rightarrow> s x P| None \<Rightarrow> 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
  3655
              (case (pi2\<bullet>B) of Some (x,P) \<Rightarrow> (pi2\<bullet>s) x P | None \<Rightarrow> (pi2\<bullet>r))"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3656
   apply(cases "B")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3657
    apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3658
   apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3659
  apply(cases "B")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3660
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3661
  apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3662
  done
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
  3663
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3664
nominal_primrec (freshness_context: "(\<theta>_n::(name\<times>coname\<times>trm) list,\<theta>_c::(coname\<times>name\<times>trm) list)")
80914
d97fdabd9e2b standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
wenzelm
parents: 80609
diff changeset
  3665
  psubst :: "(name\<times>coname\<times>trm) list\<Rightarrow>(coname\<times>name\<times>trm) list\<Rightarrow>trm\<Rightarrow>trm" (\<open>_,_<_>\<close> [100,100,100] 100) 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3666
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3667
    "\<theta>_n,\<theta>_c<Ax x a> = lookup x a \<theta>_n \<theta>_c" 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3668
  | "\<lbrakk>a\<sharp>(N,\<theta>_n,\<theta>_c);x\<sharp>(M,\<theta>_n,\<theta>_c)\<rbrakk> \<Longrightarrow> \<theta>_n,\<theta>_c<Cut <a>.M (x).N> = 
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3669
   Cut <a>.(if \<exists>x. M=Ax x a then stn M \<theta>_n else \<theta>_n,\<theta>_c<M>) 
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3670
       (x).(if \<exists>a. N=Ax x a then stc N \<theta>_c else \<theta>_n,\<theta>_c<N>)" 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3671
  | "x\<sharp>(\<theta>_n,\<theta>_c) \<Longrightarrow> \<theta>_n,\<theta>_c<NotR (x).M a> = 
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3672
  (case (findc \<theta>_c a) of 
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3673
       Some (u,P) \<Rightarrow> fresh_fun (\<lambda>a'. Cut <a'>.NotR (x).(\<theta>_n,\<theta>_c<M>) a' (u).P) 
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3674
     | None \<Rightarrow> NotR (x).(\<theta>_n,\<theta>_c<M>) a)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3675
  | "a\<sharp>(\<theta>_n,\<theta>_c) \<Longrightarrow> \<theta>_n,\<theta>_c<NotL <a>.M x> = 
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3676
  (case (findn \<theta>_n x) of 
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3677
       Some (c,P) \<Rightarrow> fresh_fun (\<lambda>x'. Cut <c>.P (x').(NotL <a>.(\<theta>_n,\<theta>_c<M>) x')) 
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3678
     | None \<Rightarrow> NotL <a>.(\<theta>_n,\<theta>_c<M>) x)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3679
  | "\<lbrakk>a\<sharp>(N,c,\<theta>_n,\<theta>_c);b\<sharp>(M,c,\<theta>_n,\<theta>_c);b\<noteq>a\<rbrakk> \<Longrightarrow> (\<theta>_n,\<theta>_c<AndR <a>.M <b>.N c>) = 
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3680
  (case (findc \<theta>_c c) of 
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3681
       Some (x,P) \<Rightarrow> fresh_fun (\<lambda>a'. Cut <a'>.(AndR <a>.(\<theta>_n,\<theta>_c<M>) <b>.(\<theta>_n,\<theta>_c<N>) a') (x).P)
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3682
     | None \<Rightarrow> AndR <a>.(\<theta>_n,\<theta>_c<M>) <b>.(\<theta>_n,\<theta>_c<N>) c)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3683
  | "x\<sharp>(z,\<theta>_n,\<theta>_c) \<Longrightarrow> (\<theta>_n,\<theta>_c<AndL1 (x).M z>) = 
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3684
  (case (findn \<theta>_n z) of 
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3685
       Some (c,P) \<Rightarrow> fresh_fun (\<lambda>z'. Cut <c>.P (z').AndL1 (x).(\<theta>_n,\<theta>_c<M>) z') 
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3686
     | None \<Rightarrow> AndL1 (x).(\<theta>_n,\<theta>_c<M>) z)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3687
  | "x\<sharp>(z,\<theta>_n,\<theta>_c) \<Longrightarrow> (\<theta>_n,\<theta>_c<AndL2 (x).M z>) = 
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3688
  (case (findn \<theta>_n z) of 
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3689
       Some (c,P) \<Rightarrow> fresh_fun (\<lambda>z'. Cut <c>.P (z').AndL2 (x).(\<theta>_n,\<theta>_c<M>) z') 
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3690
     | None \<Rightarrow> AndL2 (x).(\<theta>_n,\<theta>_c<M>) z)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3691
  | "\<lbrakk>x\<sharp>(N,z,\<theta>_n,\<theta>_c);u\<sharp>(M,z,\<theta>_n,\<theta>_c);x\<noteq>u\<rbrakk> \<Longrightarrow> (\<theta>_n,\<theta>_c<OrL (x).M (u).N z>) =
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3692
  (case (findn \<theta>_n z) of  
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3693
       Some (c,P) \<Rightarrow> fresh_fun (\<lambda>z'. Cut <c>.P (z').OrL (x).(\<theta>_n,\<theta>_c<M>) (u).(\<theta>_n,\<theta>_c<N>) z') 
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3694
     | None \<Rightarrow> OrL (x).(\<theta>_n,\<theta>_c<M>) (u).(\<theta>_n,\<theta>_c<N>) z)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3695
  | "a\<sharp>(b,\<theta>_n,\<theta>_c) \<Longrightarrow> (\<theta>_n,\<theta>_c<OrR1 <a>.M b>) = 
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3696
  (case (findc \<theta>_c b) of
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3697
       Some (x,P) \<Rightarrow> fresh_fun (\<lambda>a'. Cut <a'>.OrR1 <a>.(\<theta>_n,\<theta>_c<M>) a' (x).P) 
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3698
     | None \<Rightarrow> OrR1 <a>.(\<theta>_n,\<theta>_c<M>) b)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3699
  | "a\<sharp>(b,\<theta>_n,\<theta>_c) \<Longrightarrow> (\<theta>_n,\<theta>_c<OrR2 <a>.M b>) = 
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3700
  (case (findc \<theta>_c b) of
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3701
       Some (x,P) \<Rightarrow> fresh_fun (\<lambda>a'. Cut <a'>.OrR2 <a>.(\<theta>_n,\<theta>_c<M>) a' (x).P) 
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3702
     | None \<Rightarrow> OrR2 <a>.(\<theta>_n,\<theta>_c<M>) b)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3703
  | "\<lbrakk>a\<sharp>(b,\<theta>_n,\<theta>_c); x\<sharp>(\<theta>_n,\<theta>_c)\<rbrakk> \<Longrightarrow> (\<theta>_n,\<theta>_c<ImpR (x).<a>.M b>) = 
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3704
  (case (findc \<theta>_c b) of
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3705
       Some (z,P) \<Rightarrow> fresh_fun (\<lambda>a'. Cut <a'>.ImpR (x).<a>.(\<theta>_n,\<theta>_c<M>) a' (z).P)
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3706
     | None \<Rightarrow> ImpR (x).<a>.(\<theta>_n,\<theta>_c<M>) b)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3707
  | "\<lbrakk>a\<sharp>(N,\<theta>_n,\<theta>_c); x\<sharp>(z,M,\<theta>_n,\<theta>_c)\<rbrakk> \<Longrightarrow> (\<theta>_n,\<theta>_c<ImpL <a>.M (x).N z>) = 
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3708
  (case (findn \<theta>_n z) of
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3709
       Some (c,P) \<Rightarrow> fresh_fun (\<lambda>z'. Cut <c>.P (z').ImpL <a>.(\<theta>_n,\<theta>_c<M>) (x).(\<theta>_n,\<theta>_c<N>) z') 
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3710
     | None \<Rightarrow> ImpL <a>.(\<theta>_n,\<theta>_c<M>) (x).(\<theta>_n,\<theta>_c<N>) z)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3711
                       apply(finite_guess)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3712
                       apply(rule TrueI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3713
                       apply(simp add: abs_fresh stc_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3714
                       apply(simp add: abs_fresh stn_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3715
                       apply(case_tac "findc \<theta>_c x3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3716
                       apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3717
                       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3718
                       apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3719
                       apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3720
                       apply(drule cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3721
                       apply(auto simp add: fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3722
                       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3723
                       apply(case_tac "findn \<theta>_n x3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3724
                       apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3725
                       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3726
                       apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3727
                       apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3728
                       apply(drule nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3729
                       apply(auto simp add: fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3730
                       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3731
                       apply(case_tac "findc \<theta>_c x5")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3732
                       apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3733
                       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3734
                       apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3735
                       apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3736
                       apply(drule cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3737
                       apply(auto simp add: fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3738
                       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3739
                       apply(case_tac "findc \<theta>_c x5")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3740
                       apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3741
                       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3742
                       apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3743
                       apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3744
                       apply(drule_tac x="x3" in cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3745
                       apply(auto simp add: fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3746
                       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3747
                       apply(case_tac "findn \<theta>_n x3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3748
                       apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3749
                       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3750
                       apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3751
                       apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3752
                       apply(drule nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3753
                       apply(auto simp add: fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3754
                       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3755
                       apply(case_tac "findn \<theta>_n x3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3756
                       apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3757
                       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3758
                       apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3759
                       apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3760
                       apply(drule nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3761
                       apply(auto simp add: fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3762
                       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3763
                       apply(case_tac "findc \<theta>_c x3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3764
                       apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3765
                       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3766
                       apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3767
                       apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3768
                       apply(drule cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3769
                       apply(auto simp add: fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3770
                       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3771
                       apply(case_tac "findc \<theta>_c x3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3772
                       apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3773
                       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3774
                       apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3775
                       apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3776
                       apply(drule cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3777
                       apply(auto simp add: fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3778
                       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3779
                       apply(case_tac "findn \<theta>_n x5")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3780
                       apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3781
                       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3782
                       apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3783
                       apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3784
                       apply(drule nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3785
                       apply(auto simp add: fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3786
                       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3787
                       apply(case_tac "findn \<theta>_n x5")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3788
                       apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3789
                       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3790
                       apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3791
                       apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3792
                       apply(drule_tac a="x3" in nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3793
                       apply(auto simp add: fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3794
                       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3795
                       apply(case_tac "findc \<theta>_c x4")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3796
                       apply(simp add: abs_fresh abs_supp fin_supp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3797
                       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3798
                       apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3799
                       apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3800
                       apply(drule cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3801
                       apply(auto simp add: fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3802
                       apply(simp add: abs_fresh fresh_prod fresh_atm abs_supp fin_supp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3803
                       apply(case_tac "findc \<theta>_c x4")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3804
                       apply(simp add: abs_fresh abs_supp fin_supp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3805
                       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3806
                       apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3807
                       apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3808
                       apply(drule_tac x="x2" in cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3809
                       apply(auto simp add: fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3810
                       apply(simp add: abs_fresh fresh_prod fresh_atm abs_supp fin_supp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3811
                       apply(case_tac "findn \<theta>_n x5")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3812
                       apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3813
                       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3814
                       apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3815
                       apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3816
                       apply(drule nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3817
                       apply(auto simp add: fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3818
                       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3819
                       apply(case_tac "findn \<theta>_n x5")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3820
                       apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3821
                       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3822
                       apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3823
                       apply(fresh_fun_simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3824
                       apply(drule_tac a="x3" in nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3825
                       apply(auto simp add: fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3826
                       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3827
                       apply(fresh_guess)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3828
  done
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
  3829
9be4ab2acc13 split Class.thy into parts to 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
lemma case_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
  3831
  assumes a: "B1=B2" "x1=x2" "y1=y2"
9be4ab2acc13 split Class.thy into parts to 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
  shows "(case B1 of None \<Rightarrow> x1 | Some (x,P) \<Rightarrow> y1 x P) = (case B2 of None \<Rightarrow> x2 | Some (x,P) \<Rightarrow> y2 x P)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3833
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3834
  apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3835
  done
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
  3836
9be4ab2acc13 split Class.thy into parts to 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
lemma find_maps:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3838
  shows "\<theta>_c cmaps a to (findc \<theta>_c a)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3839
    and   "\<theta>_n nmaps x to (findn \<theta>_n x)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3840
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3841
  done
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
  3842
9be4ab2acc13 split Class.thy into parts to 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
lemma psubst_eqvt[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
  3844
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3845
    and   pi2::"coname prm"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3846
  shows "pi1\<bullet>(\<theta>_n,\<theta>_c<M>) = (pi1\<bullet>\<theta>_n),(pi1\<bullet>\<theta>_c)<(pi1\<bullet>M)>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3847
    and   "pi2\<bullet>(\<theta>_n,\<theta>_c<M>) = (pi2\<bullet>\<theta>_n),(pi2\<bullet>\<theta>_c)<(pi2\<bullet>M)>"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3848
   apply(nominal_induct M avoiding: \<theta>_n \<theta>_c rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3849
                       apply(auto simp add: eq_bij fresh_bij eqvts perm_pi_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3850
                     apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3851
                       apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3852
                      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3853
                     apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3854
                    apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3855
                      apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3856
                     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3857
                    apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3858
                   apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3859
                     apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3860
                    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3861
                   apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3862
                  apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3863
                    apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3864
                   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3865
                  apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3866
                 apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3867
                   apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3868
                  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3869
                 apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3870
                apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3871
                  apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3872
                 apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3873
                apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3874
               apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3875
                 apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3876
                apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3877
               apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3878
              apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3879
                apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3880
               apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3881
              apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3882
             apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3883
               apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3884
              apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3885
             apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3886
            apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3887
              apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3888
             apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3889
            apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3890
           apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3891
             apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3892
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3893
           apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3894
          apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3895
            apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3896
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3897
          apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3898
         apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3899
           apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3900
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3901
         apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3902
        apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3903
          apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3904
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3905
        apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3906
       apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3907
         apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3908
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3909
       apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3910
      apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3911
        apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3912
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3913
      apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3914
     apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3915
       apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3916
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3917
     apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3918
    apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3919
      apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3920
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3921
    apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3922
   apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3923
     apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3924
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3925
   apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3926
  apply(rule case_cong)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3927
    apply(rule find_maps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3928
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3929
  apply(perm_simp add: eqvts)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3930
  done
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
  3931
9be4ab2acc13 split Class.thy into parts to 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
lemma ax_psubst:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  3933
  assumes a: "\<theta>_n,\<theta>_c<M> = Ax x a"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3934
    and     b: "a\<sharp>(\<theta>_n,\<theta>_c)" "x\<sharp>(\<theta>_n,\<theta>_c)"
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
  3935
  shows "M = Ax x a"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3936
  using a b
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3937
  apply(nominal_induct M avoiding: \<theta>_n \<theta>_c rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3938
             apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3939
            apply(drule lookup_unicity)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3940
              apply(simp)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3941
           apply(case_tac "findc \<theta>_c coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3942
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3943
           apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3944
           apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3945
           apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3946
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3947
          apply(case_tac "findn \<theta>_n name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3948
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3949
          apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3950
          apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3951
          apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3952
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3953
         apply(case_tac "findc \<theta>_c coname3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3954
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3955
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3956
         apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3957
         apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3958
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3959
        apply(case_tac "findn \<theta>_n name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3960
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3961
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3962
        apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3963
        apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3964
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3965
       apply(case_tac "findn \<theta>_n name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3966
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3967
       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3968
       apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3969
       apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3970
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3971
      apply(case_tac "findc \<theta>_c coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3972
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3973
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3974
      apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3975
      apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3976
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3977
     apply(case_tac "findc \<theta>_c coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3978
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3979
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3980
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3981
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3982
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3983
    apply(case_tac "findn \<theta>_n name3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3984
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3985
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3986
    apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3987
    apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3988
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3989
   apply(case_tac "findc \<theta>_c coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3990
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3991
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3992
   apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3993
   apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3994
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3995
  apply(case_tac "findn \<theta>_n name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3996
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3997
  apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3998
  apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  3999
  apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4000
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4001
  done
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
  4002
9be4ab2acc13 split Class.thy into parts to 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
lemma better_Cut_substc1:
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "a\<sharp>(P,b)" "b\<sharp>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
  4005
  shows "(Cut <a>.M (x).N){b:=(y).P} = Cut <a>.(M{b:=(y).P}) (x).N"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4006
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4007
  apply -
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4008
  apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4009
  apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4010
  apply(subgoal_tac "Cut <a>.M (x).N = Cut <c>.([(c,a)]\<bullet>M) (ca).([(ca,x)]\<bullet>N)")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4011
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4012
   apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4013
    apply(rule better_Cut_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4014
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4015
    apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4016
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4017
    apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4018
    apply(simp add: calc_atm fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4019
   apply(subgoal_tac"b\<sharp>([(ca,x)]\<bullet>N)")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4020
    apply(simp add: forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4021
    apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4022
    apply(simp add: alpha eqvts calc_atm fresh_prod fresh_atm subst_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4023
    apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4024
   apply(simp add: fresh_left calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4025
  apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4026
  apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4027
   apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4028
   apply(simp add: alpha eqvts calc_atm fresh_prod fresh_atm subst_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4029
  apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4030
  apply(simp add: alpha eqvts calc_atm fresh_prod fresh_atm subst_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4031
  done
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
  4032
9be4ab2acc13 split Class.thy into parts to 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
lemma better_Cut_substc2:
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "x\<sharp>(y,P)" "b\<sharp>(a,M)" "N\<noteq>Ax x 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
  4035
  shows "(Cut <a>.M (x).N){b:=(y).P} = Cut <a>.M (x).(N{b:=(y).P})"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4036
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4037
  apply -
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4038
  apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4039
  apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4040
  apply(subgoal_tac "Cut <a>.M (x).N = Cut <c>.([(c,a)]\<bullet>M) (ca).([(ca,x)]\<bullet>N)")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4041
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4042
   apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4043
    apply(rule better_Cut_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4044
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4045
    apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4046
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4047
    apply(drule pt_bij1[OF pt_name_inst, OF at_name_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4048
    apply(simp add: calc_atm fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4049
   apply(subgoal_tac"b\<sharp>([(c,a)]\<bullet>M)")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4050
    apply(simp add: forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4051
    apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4052
    apply(simp add: alpha eqvts calc_atm fresh_prod fresh_atm subst_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4053
    apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4054
   apply(auto simp add: fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4055
  apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4056
  apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4057
   apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4058
   apply(simp add: alpha eqvts calc_atm fresh_prod fresh_atm subst_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4059
  apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4060
  apply(simp add: alpha eqvts calc_atm fresh_prod fresh_atm subst_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4061
  done
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
  4062
9be4ab2acc13 split Class.thy into parts to 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
lemma better_Cut_substn1:
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "y\<sharp>(x,N)" "a\<sharp>(b,P)" "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
  4065
  shows "(Cut <a>.M (x).N){y:=<b>.P} = Cut <a>.(M{y:=<b>.P}) (x).N"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4066
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4067
  apply -
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4068
  apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4069
  apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4070
  apply(subgoal_tac "Cut <a>.M (x).N = Cut <c>.([(c,a)]\<bullet>M) (ca).([(ca,x)]\<bullet>N)")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4071
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4072
   apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4073
    apply(rule better_Cut_substn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4074
     apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4075
    apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4076
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4077
    apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4078
    apply(simp add: calc_atm fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4079
   apply(subgoal_tac"y\<sharp>([(ca,x)]\<bullet>N)")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4080
    apply(simp add: forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4081
    apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4082
    apply(simp add: alpha eqvts calc_atm fresh_prod fresh_atm subst_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4083
    apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4084
   apply(auto simp add: fresh_left calc_atm fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4085
  apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4086
  apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4087
   apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4088
   apply(simp add: alpha eqvts calc_atm fresh_prod fresh_atm subst_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4089
  apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4090
  apply(simp add: alpha eqvts calc_atm fresh_prod fresh_atm subst_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4091
  done
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
  4092
9be4ab2acc13 split Class.thy into parts to 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
lemma better_Cut_substn2:
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "x\<sharp>(P,y)" "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
  4095
  shows "(Cut <a>.M (x).N){y:=<b>.P} = Cut <a>.M (x).(N{y:=<b>.P})"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4096
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4097
  apply -
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4098
  apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4099
  apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4100
  apply(subgoal_tac "Cut <a>.M (x).N = Cut <c>.([(c,a)]\<bullet>M) (ca).([(ca,x)]\<bullet>N)")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4101
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4102
   apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4103
    apply(rule better_Cut_substn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4104
     apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4105
    apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4106
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4107
    apply(drule pt_bij1[OF pt_coname_inst, OF at_coname_inst])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4108
    apply(simp add: calc_atm fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4109
   apply(subgoal_tac"y\<sharp>([(c,a)]\<bullet>M)")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4110
    apply(simp add: forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4111
    apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4112
    apply(simp add: alpha eqvts calc_atm fresh_prod fresh_atm subst_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4113
    apply(perm_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4114
   apply(simp add: fresh_left calc_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4115
  apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4116
  apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4117
   apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4118
   apply(simp add: alpha eqvts calc_atm fresh_prod fresh_atm subst_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4119
  apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4120
  apply(simp add: alpha eqvts calc_atm fresh_prod fresh_atm subst_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4121
  done
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
  4122
9be4ab2acc13 split Class.thy into parts to 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
lemma psubst_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
  4124
  fixes x::"name"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4125
  assumes a: "x\<sharp>\<theta>_n" "x\<sharp>\<theta>_c" "x\<sharp>M"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4126
  shows "x\<sharp>\<theta>_n,\<theta>_c<M>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4127
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4128
  apply(nominal_induct M avoiding: x \<theta>_n \<theta>_c rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4129
             apply(simp add: lookup_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4130
            apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4131
                 apply(simp add: lookupc_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4132
                apply(simp add: lookupc_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4133
               apply(simp add: lookupc_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4134
              apply(simp add: lookupd_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4135
             apply(simp add: lookupd_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4136
            apply(simp add: lookupc_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4137
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4138
           apply(case_tac "findc \<theta>_c coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4139
            apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4140
           apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4141
           apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4142
           apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4143
           apply(simp add: abs_fresh fresh_prod fresh_atm cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4144
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4145
          apply(case_tac "findn \<theta>_n name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4146
           apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4147
          apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4148
          apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4149
          apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4150
          apply(simp add: abs_fresh fresh_prod fresh_atm nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4151
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4152
         apply(case_tac "findc \<theta>_c coname3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4153
          apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4154
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4155
         apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4156
         apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4157
         apply(simp add: abs_fresh fresh_prod fresh_atm cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4158
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4159
        apply(case_tac "findn \<theta>_n name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4160
         apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4161
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4162
        apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4163
        apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4164
        apply(simp add: abs_fresh fresh_prod fresh_atm nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4165
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4166
       apply(case_tac "findn \<theta>_n name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4167
        apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4168
       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4169
       apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4170
       apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4171
       apply(simp add: abs_fresh fresh_prod fresh_atm nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4172
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4173
      apply(case_tac "findc \<theta>_c coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4174
       apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4175
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4176
      apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4177
      apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4178
      apply(simp add: abs_fresh fresh_prod fresh_atm cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4179
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4180
     apply(case_tac "findc \<theta>_c coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4181
      apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4182
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4183
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4184
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4185
     apply(simp add: abs_fresh fresh_prod fresh_atm cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4186
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4187
    apply(case_tac "findn \<theta>_n name3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4188
     apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4189
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4190
    apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4191
    apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4192
    apply(simp add: abs_fresh fresh_prod fresh_atm nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4193
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4194
   apply(case_tac "findc \<theta>_c coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4195
    apply(auto simp add: abs_fresh abs_supp fin_supp)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4196
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4197
   apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4198
   apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4199
   apply(simp add: abs_fresh abs_supp fin_supp fresh_prod fresh_atm cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4200
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4201
  apply(case_tac "findn \<theta>_n name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4202
   apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4203
  apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4204
  apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4205
  apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4206
  apply(simp add: abs_fresh fresh_prod fresh_atm nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4207
  done
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
  4208
9be4ab2acc13 split Class.thy into parts to 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
lemma psubst_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
  4210
  fixes a::"coname"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4211
  assumes a: "a\<sharp>\<theta>_n" "a\<sharp>\<theta>_c" "a\<sharp>M"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4212
  shows "a\<sharp>\<theta>_n,\<theta>_c<M>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4213
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4214
  apply(nominal_induct M avoiding: a \<theta>_n \<theta>_c rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4215
             apply(simp add: lookup_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4216
            apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4217
                 apply(simp add: lookupd_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4218
                apply(simp add: lookupd_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4219
               apply(simp add: lookupc_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4220
              apply(simp add: lookupd_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4221
             apply(simp add: lookupc_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4222
            apply(simp add: lookupd_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4223
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4224
           apply(case_tac "findc \<theta>_c coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4225
            apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4226
           apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4227
           apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4228
           apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4229
           apply(simp add: abs_fresh fresh_prod fresh_atm cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4230
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4231
          apply(case_tac "findn \<theta>_n name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4232
           apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4233
          apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4234
          apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4235
          apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4236
          apply(simp add: abs_fresh fresh_prod fresh_atm nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4237
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4238
         apply(case_tac "findc \<theta>_c coname3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4239
          apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4240
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4241
         apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4242
         apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4243
         apply(simp add: abs_fresh fresh_prod fresh_atm cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4244
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4245
        apply(case_tac "findn \<theta>_n name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4246
         apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4247
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4248
        apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4249
        apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4250
        apply(simp add: abs_fresh fresh_prod fresh_atm nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4251
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4252
       apply(case_tac "findn \<theta>_n name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4253
        apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4254
       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4255
       apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4256
       apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4257
       apply(simp add: abs_fresh fresh_prod fresh_atm nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4258
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4259
      apply(case_tac "findc \<theta>_c coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4260
       apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4261
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4262
      apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4263
      apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4264
      apply(simp add: abs_fresh fresh_prod fresh_atm cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4265
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4266
     apply(case_tac "findc \<theta>_c coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4267
      apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4268
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4269
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4270
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4271
     apply(simp add: abs_fresh fresh_prod fresh_atm cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4272
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4273
    apply(case_tac "findn \<theta>_n name3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4274
     apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4275
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4276
    apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4277
    apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4278
    apply(simp add: abs_fresh fresh_prod fresh_atm nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4279
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4280
   apply(case_tac "findc \<theta>_c coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4281
    apply(auto simp add: abs_fresh abs_supp fin_supp)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4282
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4283
   apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4284
   apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4285
   apply(simp add: abs_fresh abs_supp fin_supp fresh_prod fresh_atm cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4286
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4287
  apply(case_tac "findn \<theta>_n name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4288
   apply(auto simp add: abs_fresh)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4289
  apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4290
  apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4291
  apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4292
  apply(simp add: abs_fresh fresh_prod fresh_atm nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4293
  done
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
  4294
9be4ab2acc13 split Class.thy into parts to 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
lemma psubst_csubst:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4296
  assumes a: "a\<sharp>(\<theta>_n,\<theta>_c)"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4297
  shows "\<theta>_n,((a,x,P)#\<theta>_c)<M> = ((\<theta>_n,\<theta>_c<M>){a:=(x).P})"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4298
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4299
  apply(nominal_induct M avoiding: a x \<theta>_n \<theta>_c P rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4300
             apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4301
             apply(simp add: lookup_csubst)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4302
            apply(simp add: fresh_list_cons fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4303
            apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4304
                 apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4305
                 apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4306
                  apply(rule better_Cut_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4307
                   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4308
                  apply(simp add: abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4309
                 apply(simp add: lookupd_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4310
                 apply(subgoal_tac "a\<sharp>lookupc xa coname \<theta>_n")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4311
                  apply(simp add: forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4312
                  apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4313
                  apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4314
                  apply(simp add: alpha nrename_swap fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4315
                 apply(rule lookupc_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4316
                 apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4317
                apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4318
                apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4319
                 apply(rule better_Cut_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4320
                  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4321
                 apply(simp add: abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4322
                apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4323
                apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4324
                 apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4325
                 apply(simp add: lookupd_unicity)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4326
                apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4327
                apply(subgoal_tac "a\<sharp>lookupc xa coname \<theta>_n")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4328
                 apply(subgoal_tac "a\<sharp>lookupd name aa \<theta>_c")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4329
                  apply(simp add: forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4330
                 apply(rule lookupd_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4331
                 apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4332
                apply(rule lookupc_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4333
                apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4334
               apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4335
               apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4336
                apply(rule better_Cut_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4337
                 apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4338
                apply(simp add: abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4339
               apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4340
               apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4341
                apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4342
                apply(drule ax_psubst)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4343
                  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4344
                 apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4345
                apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4346
               apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4347
               apply(subgoal_tac "a\<sharp>lookupc xa coname \<theta>_n")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4348
                apply(simp add: forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4349
               apply(rule lookupc_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4350
               apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4351
              apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4352
              apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4353
               apply(rule better_Cut_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4354
                apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4355
               apply(simp add: abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4356
              apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4357
              apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4358
               apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4359
               apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4360
               apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4361
               apply(simp add: alpha)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4362
               apply(simp add: alpha nrename_swap fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4363
              apply(simp add: lookupd_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4364
             apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4365
             apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4366
              apply(rule better_Cut_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4367
               apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4368
              apply(simp add: abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4369
             apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4370
             apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4371
              apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4372
              apply(simp add: lookupd_unicity)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4373
             apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4374
             apply(subgoal_tac "a\<sharp>lookupd name aa \<theta>_c")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4375
              apply(simp add: forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4376
             apply(rule lookupd_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4377
             apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4378
            apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4379
            apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4380
             apply(rule better_Cut_substc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4381
              apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4382
             apply(simp add: abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4383
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4384
            apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4385
            apply(drule ax_psubst)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4386
              apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4387
             apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4388
            apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4389
    (* NotR *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4390
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4391
           apply(case_tac "findc \<theta>_c coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4392
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4393
            apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4394
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4395
           apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4396
            apply(drule cmaps_false)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4397
             apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4398
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4399
           apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4400
           apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4401
           apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4402
           apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4403
           apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4404
            apply(rule better_Cut_substc1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4405
             apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4406
            apply(simp add: cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4407
           apply(auto simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4408
    (* NotL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4409
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4410
          apply(case_tac "findn \<theta>_n name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4411
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4412
           apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4413
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4414
          apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4415
          apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4416
          apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4417
          apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4418
          apply(drule_tac a="a" in nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4419
           apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4420
          apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4421
          apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4422
           apply(rule better_Cut_substc2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4423
             apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4424
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4425
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4426
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4427
    (* AndR *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4428
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4429
         apply(case_tac "findc \<theta>_c coname3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4430
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4431
          apply(auto simp add: psubst_fresh_coname fresh_list_cons fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4432
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4433
         apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4434
          apply(drule cmaps_false)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4435
           apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4436
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4437
         apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4438
         apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4439
         apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4440
         apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4441
         apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4442
          apply(rule better_Cut_substc1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4443
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4444
          apply(simp add: cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4445
         apply(auto simp add:  psubst_fresh_coname fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4446
    (* AndL1 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4447
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4448
        apply(case_tac "findn \<theta>_n name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4449
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4450
         apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4451
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4452
        apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4453
        apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4454
        apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4455
        apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4456
        apply(drule_tac a="a" in nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4457
         apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4458
        apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4459
        apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4460
         apply(rule better_Cut_substc2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4461
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4462
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4463
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4464
        apply(auto simp add:  psubst_fresh_coname fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4465
    (* AndL2 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4466
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4467
       apply(case_tac "findn \<theta>_n name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4468
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4469
        apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4470
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4471
       apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4472
       apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4473
       apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4474
       apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4475
       apply(drule_tac a="a" in nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4476
        apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4477
       apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4478
       apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4479
        apply(rule better_Cut_substc2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4480
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4481
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4482
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4483
       apply(auto simp add:  psubst_fresh_coname fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4484
    (* OrR1 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4485
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4486
      apply(case_tac "findc \<theta>_c coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4487
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4488
       apply(auto simp add: psubst_fresh_coname fresh_list_cons fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4489
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4490
      apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4491
       apply(drule cmaps_false)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4492
        apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4493
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4494
      apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4495
      apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4496
      apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4497
      apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4498
      apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4499
       apply(rule better_Cut_substc1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4500
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4501
       apply(simp add: cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4502
      apply(auto simp add:  psubst_fresh_coname fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4503
    (* OrR2 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4504
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4505
     apply(case_tac "findc \<theta>_c coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4506
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4507
      apply(auto simp add: psubst_fresh_coname fresh_list_cons fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4508
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4509
     apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4510
      apply(drule cmaps_false)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4511
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4512
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4513
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4514
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4515
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4516
     apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4517
     apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4518
      apply(rule better_Cut_substc1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4519
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4520
      apply(simp add: cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4521
     apply(auto simp add:  psubst_fresh_coname fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4522
    (* OrL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4523
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4524
    apply(case_tac "findn \<theta>_n name3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4525
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4526
     apply(auto simp add: fresh_list_cons psubst_fresh_name fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4527
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4528
    apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4529
    apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4530
    apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4531
    apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4532
    apply(drule_tac a="a" in nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4533
     apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4534
    apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4535
    apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4536
     apply(rule better_Cut_substc2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4537
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4538
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4539
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4540
    apply(auto simp add:  psubst_fresh_name fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4541
    (* ImpR *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4542
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4543
   apply(case_tac "findc \<theta>_c coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4544
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4545
    apply(auto simp add: psubst_fresh_coname fresh_list_cons fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4546
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4547
   apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4548
    apply(drule cmaps_false)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4549
     apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4550
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4551
   apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4552
   apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4553
   apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4554
   apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4555
   apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4556
    apply(rule better_Cut_substc1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4557
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4558
    apply(simp add: cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4559
   apply(auto simp add:  psubst_fresh_coname fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4560
    (* ImpL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4561
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4562
  apply(case_tac "findn \<theta>_n name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4563
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4564
   apply(auto simp add: fresh_list_cons psubst_fresh_coname psubst_fresh_name fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4565
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4566
  apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4567
  apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4568
  apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4569
  apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4570
  apply(simp add: abs_fresh subst_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4571
  apply(drule_tac a="a" in nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4572
   apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4573
  apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4574
  apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4575
   apply(rule better_Cut_substc2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4576
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4577
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4578
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4579
  apply(auto simp add: psubst_fresh_coname psubst_fresh_name fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4580
  done
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
  4581
9be4ab2acc13 split Class.thy into parts to 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
lemma psubst_nsubst:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4583
  assumes a: "x\<sharp>(\<theta>_n,\<theta>_c)"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4584
  shows "((x,a,P)#\<theta>_n),\<theta>_c<M> = ((\<theta>_n,\<theta>_c<M>){x:=<a>.P})"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4585
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4586
  apply(nominal_induct M avoiding: a x \<theta>_n \<theta>_c P rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4587
             apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4588
              apply(simp add: lookup_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4589
              apply(rule lookupb_lookupa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4590
              apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4591
             apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4592
             apply(rule forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4593
             apply(rule lookup_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4594
             apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4595
            apply(auto simp add: lookupc_freshness fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4596
                 apply(simp add: lookupc_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4597
                 apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4598
                 apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4599
                  apply(rule better_Cut_substn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4600
                   apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4601
                  apply(simp add: abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4602
                 apply(simp add: lookupd_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4603
                 apply(subgoal_tac "x\<sharp>lookupd name aa \<theta>_c")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4604
                  apply(simp add: forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4605
                  apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4606
                  apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4607
                  apply(simp add: alpha crename_swap fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4608
                 apply(rule lookupd_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4609
                 apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4610
                apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4611
                apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4612
                 apply(rule better_Cut_substn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4613
                  apply(simp add: abs_fresh) 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4614
                 apply(simp add: abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4615
                apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4616
                apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4617
                 apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4618
                 apply(simp add: lookupc_unicity)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4619
                apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4620
                apply(subgoal_tac "x\<sharp>lookupc xa coname \<theta>_n")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4621
                 apply(subgoal_tac "x\<sharp>lookupd name aa \<theta>_c")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4622
                  apply(simp add: forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4623
                 apply(rule lookupd_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4624
                 apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4625
                apply(rule lookupc_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4626
                apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4627
               apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4628
               apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4629
                apply(rule better_Cut_substn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4630
                 apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4631
                apply(simp add: abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4632
               apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4633
               apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4634
                apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4635
                apply(simp add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4636
                apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4637
                apply(simp add: alpha crename_swap fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4638
               apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4639
               apply(simp add: lookupc_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4640
              apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4641
              apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4642
               apply(rule better_Cut_substn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4643
                apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4644
               apply(simp add: abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4645
              apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4646
              apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4647
               apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4648
               apply(simp add: lookupc_unicity)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4649
              apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4650
              apply(subgoal_tac "x\<sharp>lookupc xa coname \<theta>_n")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4651
               apply(simp add: forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4652
              apply(rule lookupc_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4653
              apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4654
             apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4655
             apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4656
              apply(rule better_Cut_substn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4657
               apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4658
              apply(simp add: abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4659
             apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4660
             apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4661
              apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4662
              apply(drule ax_psubst)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4663
                apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4664
               apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4665
              apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4666
              apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4667
             apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4668
             apply(subgoal_tac "x\<sharp>lookupd name aa \<theta>_c")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4669
              apply(simp add: forget)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4670
             apply(rule lookupd_freshness)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4671
             apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4672
            apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4673
            apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4674
             apply(rule better_Cut_substn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4675
              apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4676
             apply(simp add: abs_fresh fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4677
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4678
            apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4679
            apply(drule ax_psubst)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4680
              apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4681
             apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4682
            apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4683
    (* NotR *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4684
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4685
           apply(case_tac "findc \<theta>_c coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4686
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4687
            apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4688
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4689
           apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4690
           apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4691
           apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4692
           apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4693
           apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4694
           apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4695
            apply(rule better_Cut_substn1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4696
              apply(simp add: cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4697
             apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4698
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4699
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4700
    (* NotL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4701
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4702
          apply(case_tac "findn \<theta>_n name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4703
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4704
           apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4705
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4706
          apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4707
           apply(drule nmaps_false)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4708
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4709
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4710
          apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4711
          apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4712
          apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4713
          apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4714
          apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4715
           apply(rule better_Cut_substn2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4716
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4717
           apply(simp add: nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4718
          apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4719
    (* AndR *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4720
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4721
         apply(case_tac "findc \<theta>_c coname3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4722
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4723
          apply(auto simp add: psubst_fresh_coname fresh_list_cons fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4724
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4725
         apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4726
         apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4727
         apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4728
         apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4729
         apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4730
         apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4731
          apply(rule better_Cut_substn1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4732
            apply(simp add: cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4733
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4734
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4735
         apply(auto simp add:  psubst_fresh_coname fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4736
    (* AndL1 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4737
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4738
        apply(case_tac "findn \<theta>_n name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4739
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4740
         apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4741
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4742
        apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4743
         apply(drule nmaps_false)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4744
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4745
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4746
        apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4747
        apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4748
        apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4749
        apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4750
        apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4751
         apply(rule better_Cut_substn2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4752
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4753
         apply(simp add: nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4754
        apply(auto simp add:  psubst_fresh_coname fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4755
    (* AndL2 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4756
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4757
       apply(case_tac "findn \<theta>_n name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4758
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4759
        apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4760
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4761
       apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4762
        apply(drule nmaps_false)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4763
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4764
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4765
       apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4766
       apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4767
       apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4768
       apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4769
       apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4770
        apply(rule better_Cut_substn2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4771
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4772
        apply(simp add: nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4773
       apply(auto simp add:  psubst_fresh_coname fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4774
    (* OrR1 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4775
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4776
      apply(case_tac "findc \<theta>_c coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4777
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4778
       apply(auto simp add: psubst_fresh_coname fresh_list_cons fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4779
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4780
      apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4781
      apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4782
      apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4783
      apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4784
      apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4785
      apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4786
       apply(rule better_Cut_substn1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4787
         apply(simp add: cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4788
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4789
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4790
      apply(auto simp add:  psubst_fresh_coname fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4791
    (* OrR2 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4792
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4793
     apply(case_tac "findc \<theta>_c coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4794
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4795
      apply(auto simp add: psubst_fresh_coname fresh_list_cons fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4796
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4797
     apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4798
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4799
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4800
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4801
     apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4802
     apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4803
      apply(rule better_Cut_substn1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4804
        apply(simp add: cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4805
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4806
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4807
     apply(auto simp add:  psubst_fresh_coname fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4808
    (* OrL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4809
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4810
    apply(case_tac "findn \<theta>_n name3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4811
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4812
     apply(auto simp add: fresh_list_cons psubst_fresh_name fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4813
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4814
    apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4815
     apply(drule nmaps_false)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4816
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4817
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4818
    apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4819
    apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4820
    apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4821
    apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4822
    apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4823
     apply(rule better_Cut_substn2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4824
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4825
     apply(simp add: nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4826
    apply(auto simp add:  psubst_fresh_name fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4827
    (* ImpR *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4828
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4829
   apply(case_tac "findc \<theta>_c coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4830
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4831
    apply(auto simp add: psubst_fresh_coname fresh_list_cons fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4832
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4833
   apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4834
   apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4835
   apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4836
   apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4837
   apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4838
   apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4839
    apply(rule better_Cut_substn1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4840
      apply(simp add: cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4841
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4842
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4843
   apply(auto simp add:  psubst_fresh_coname fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4844
    (* ImpL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4845
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4846
  apply(case_tac "findn \<theta>_n name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4847
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4848
   apply(auto simp add: fresh_list_cons psubst_fresh_coname psubst_fresh_name fresh_atm fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4849
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4850
  apply(auto simp add: fresh_list_cons fresh_prod)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4851
   apply(drule nmaps_false)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4852
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4853
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4854
  apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4855
  apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4856
  apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4857
  apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4858
  apply(rule trans)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4859
   apply(rule better_Cut_substn2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4860
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4861
   apply(simp add: nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4862
  apply(auto simp add: psubst_fresh_coname psubst_fresh_name fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4863
  done
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
  4864
9be4ab2acc13 split Class.thy into parts to 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
definition 
80914
d97fdabd9e2b standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
wenzelm
parents: 80609
diff changeset
  4866
  ncloses :: "(name\<times>coname\<times>trm) list\<Rightarrow>(name\<times>ty) list \<Rightarrow> bool" (\<open>_ ncloses _\<close> [55,55] 55) 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4867
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4868
    "\<theta>_n ncloses \<Gamma> \<equiv> \<forall>x B. ((x,B) \<in> set \<Gamma> \<longrightarrow> (\<exists>c P. \<theta>_n nmaps x to Some (c,P) \<and> <c>:P \<in> (\<parallel><B>\<parallel>)))"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4869
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
  4870
definition 
80914
d97fdabd9e2b standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
wenzelm
parents: 80609
diff changeset
  4871
  ccloses :: "(coname\<times>name\<times>trm) list\<Rightarrow>(coname\<times>ty) list \<Rightarrow> bool" (\<open>_ ccloses _\<close> [55,55] 55) 
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4872
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4873
    "\<theta>_c ccloses \<Delta> \<equiv> \<forall>a B. ((a,B) \<in> set \<Delta> \<longrightarrow> (\<exists>x P. \<theta>_c cmaps a to Some (x,P) \<and> (x):P \<in> (\<parallel>(B)\<parallel>)))"
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
  4874
9be4ab2acc13 split Class.thy into parts to 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
lemma ncloses_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
  4876
  assumes a: "(x,B) \<in> set \<Gamma>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4877
    and     b: "\<theta>_n ncloses \<Gamma>"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4878
  shows "\<exists>c P. \<theta>_n nmaps x to Some (c,P) \<and> <c>:P \<in> (\<parallel><B>\<parallel>)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4879
  using a b by (auto simp add: ncloses_def)
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
  4880
9be4ab2acc13 split Class.thy into parts to 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
lemma ccloses_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
  4882
  assumes a: "(a,B) \<in> set \<Delta>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4883
    and     b: "\<theta>_c ccloses \<Delta>"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4884
  shows "\<exists>x P. \<theta>_c cmaps a to Some (x,P) \<and> (x):P \<in> (\<parallel>(B)\<parallel>)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4885
  using a b by (auto simp add: ccloses_def)
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
  4886
9be4ab2acc13 split Class.thy into parts to 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
lemma ncloses_subset:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4888
  assumes a: "\<theta>_n ncloses \<Gamma>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4889
    and     b: "set \<Gamma>' \<subseteq> set \<Gamma>"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4890
  shows "\<theta>_n ncloses \<Gamma>'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4891
  using a b by (auto  simp add: ncloses_def)
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
  4892
9be4ab2acc13 split Class.thy into parts to 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
lemma ccloses_subset:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4894
  assumes a: "\<theta>_c ccloses \<Delta>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4895
    and     b: "set \<Delta>' \<subseteq> set \<Delta>"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4896
  shows "\<theta>_c ccloses \<Delta>'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4897
  using a b by (auto  simp add: ccloses_def)
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
  4898
9be4ab2acc13 split Class.thy into parts to 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
lemma validc_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
  4900
  fixes a::"coname"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4901
    and   \<Delta>::"(coname\<times>ty) list"
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
  4902
  assumes a: "a\<sharp>\<Delta>"
9be4ab2acc13 split Class.thy into parts to 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
  shows "\<not>(\<exists>B. (a,B)\<in>set \<Delta>)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4904
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4905
  apply(induct \<Delta>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4906
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4907
  done
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
  4908
9be4ab2acc13 split Class.thy into parts to 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
lemma validn_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
  4910
  fixes x::"name"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4911
    and   \<Gamma>::"(name\<times>ty) list"
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
  4912
  assumes a: "x\<sharp>\<Gamma>"
9be4ab2acc13 split Class.thy into parts to 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
  shows "\<not>(\<exists>B. (x,B)\<in>set \<Gamma>)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4914
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4915
  apply(induct \<Gamma>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4916
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4917
  done
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
  4918
9be4ab2acc13 split Class.thy into parts to 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
lemma ccloses_extend:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4920
  assumes a: "\<theta>_c ccloses \<Delta>" "a\<sharp>\<Delta>" "a\<sharp>\<theta>_c" "(x):P\<in>\<parallel>(B)\<parallel>"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4921
  shows "(a,x,P)#\<theta>_c ccloses (a,B)#\<Delta>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4922
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4923
  apply(simp add: ccloses_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4924
  apply(drule validc_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4925
  apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4926
  done
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
  4927
9be4ab2acc13 split Class.thy into parts to 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
lemma ncloses_extend:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4929
  assumes a: "\<theta>_n ncloses \<Gamma>" "x\<sharp>\<Gamma>" "x\<sharp>\<theta>_n" "<a>:P\<in>\<parallel><B>\<parallel>"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  4930
  shows "(x,a,P)#\<theta>_n ncloses (x,B)#\<Gamma>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4931
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4932
  apply(simp add: ncloses_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4933
  apply(drule validn_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4934
  apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4935
  done
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
  4936
9be4ab2acc13 split Class.thy into parts to 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
63167
0909deb8059b isabelle update_cartouches -c -t;
wenzelm
parents: 61943
diff changeset
  4938
text \<open>typing relation\<close>
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
  4939
9be4ab2acc13 split Class.thy into parts to 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
inductive
80914
d97fdabd9e2b standardize mixfix annotations via "isabelle update -a -u mixfix_cartouches" --- to simplify systematic editing;
wenzelm
parents: 80609
diff changeset
  4941
  typing :: "ctxtn \<Rightarrow> trm \<Rightarrow> ctxtc \<Rightarrow> bool" (\<open>_ \<turnstile> _ \<turnstile> _\<close> [100,100,100] 100)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4942
  where
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4943
    TAx:    "\<lbrakk>validn \<Gamma>;validc \<Delta>; (x,B)\<in>set \<Gamma>; (a,B)\<in>set \<Delta>\<rbrakk> \<Longrightarrow> \<Gamma> \<turnstile> Ax x a \<turnstile> \<Delta>"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4944
  | TNotR:  "\<lbrakk>x\<sharp>\<Gamma>; ((x,B)#\<Gamma>) \<turnstile> M \<turnstile> \<Delta>; set \<Delta>' = {(a,NOT B)}\<union>set \<Delta>; validc \<Delta>'\<rbrakk> 
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
  4945
           \<Longrightarrow> \<Gamma> \<turnstile> NotR (x).M a \<turnstile> \<Delta>'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4946
  | TNotL:  "\<lbrakk>a\<sharp>\<Delta>; \<Gamma> \<turnstile> M \<turnstile> ((a,B)#\<Delta>); set \<Gamma>' = {(x,NOT B)} \<union> set \<Gamma>; validn \<Gamma>'\<rbrakk>  
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
  4947
           \<Longrightarrow> \<Gamma>' \<turnstile> NotL <a>.M x \<turnstile> \<Delta>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4948
  | TAndL1: "\<lbrakk>x\<sharp>(\<Gamma>,y); ((x,B1)#\<Gamma>) \<turnstile> M \<turnstile> \<Delta>; set \<Gamma>' = {(y,B1 AND B2)} \<union> set \<Gamma>; validn \<Gamma>'\<rbrakk> 
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
  4949
           \<Longrightarrow> \<Gamma>' \<turnstile> AndL1 (x).M y \<turnstile> \<Delta>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4950
  | TAndL2: "\<lbrakk>x\<sharp>(\<Gamma>,y); ((x,B2)#\<Gamma>) \<turnstile> M \<turnstile> \<Delta>; set \<Gamma>' = {(y,B1 AND B2)} \<union> set \<Gamma>; validn \<Gamma>'\<rbrakk> 
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
  4951
           \<Longrightarrow> \<Gamma>' \<turnstile> AndL2 (x).M y \<turnstile> \<Delta>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4952
  | TAndR:  "\<lbrakk>a\<sharp>(\<Delta>,N,c); b\<sharp>(\<Delta>,M,c); a\<noteq>b; \<Gamma> \<turnstile> M \<turnstile> ((a,B)#\<Delta>); \<Gamma> \<turnstile> N \<turnstile> ((b,C)#\<Delta>); 
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
  4953
           set \<Delta>' = {(c,B AND C)}\<union>set \<Delta>; validc \<Delta>'\<rbrakk> 
9be4ab2acc13 split Class.thy into parts to 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
           \<Longrightarrow> \<Gamma> \<turnstile> AndR <a>.M <b>.N c \<turnstile> \<Delta>'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4955
  | TOrL:   "\<lbrakk>x\<sharp>(\<Gamma>,N,z); y\<sharp>(\<Gamma>,M,z); x\<noteq>y; ((x,B)#\<Gamma>) \<turnstile> M \<turnstile> \<Delta>; ((y,C)#\<Gamma>) \<turnstile> N \<turnstile> \<Delta>;
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
  4956
           set \<Gamma>' = {(z,B OR C)} \<union> set \<Gamma>; validn \<Gamma>'\<rbrakk> 
9be4ab2acc13 split Class.thy into parts to 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
           \<Longrightarrow> \<Gamma>' \<turnstile> OrL (x).M (y).N z \<turnstile> \<Delta>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4958
  | TOrR1:  "\<lbrakk>a\<sharp>(\<Delta>,b); \<Gamma> \<turnstile> M \<turnstile> ((a,B1)#\<Delta>); set \<Delta>' = {(b,B1 OR B2)}\<union>set \<Delta>; validc \<Delta>'\<rbrakk> 
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
  4959
           \<Longrightarrow> \<Gamma> \<turnstile> OrR1 <a>.M b \<turnstile> \<Delta>'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4960
  | TOrR2:  "\<lbrakk>a\<sharp>(\<Delta>,b); \<Gamma> \<turnstile> M \<turnstile> ((a,B2)#\<Delta>); set \<Delta>' = {(b,B1 OR B2)}\<union>set \<Delta>; validc \<Delta>'\<rbrakk> 
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
  4961
           \<Longrightarrow> \<Gamma> \<turnstile> OrR2 <a>.M b \<turnstile> \<Delta>'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4962
  | TImpL:  "\<lbrakk>a\<sharp>(\<Delta>,N); x\<sharp>(\<Gamma>,M,y); \<Gamma> \<turnstile> M \<turnstile> ((a,B)#\<Delta>); ((x,C)#\<Gamma>) \<turnstile> N \<turnstile> \<Delta>;
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
  4963
           set \<Gamma>' = {(y,B IMP C)} \<union> set \<Gamma>; validn \<Gamma>'\<rbrakk> 
9be4ab2acc13 split Class.thy into parts to 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
           \<Longrightarrow> \<Gamma>' \<turnstile> ImpL <a>.M (x).N y \<turnstile> \<Delta>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4965
  | TImpR:  "\<lbrakk>a\<sharp>(\<Delta>,b); x\<sharp>\<Gamma>; ((x,B)#\<Gamma>) \<turnstile> M \<turnstile> ((a,C)#\<Delta>); set \<Delta>' = {(b,B IMP C)}\<union>set \<Delta>; validc \<Delta>'\<rbrakk> 
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
  4966
           \<Longrightarrow> \<Gamma> \<turnstile> ImpR (x).<a>.M b \<turnstile> \<Delta>'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4967
  | TCut:   "\<lbrakk>a\<sharp>(\<Delta>,N); x\<sharp>(\<Gamma>,M); \<Gamma> \<turnstile> M \<turnstile> ((a,B)#\<Delta>); ((x,B)#\<Gamma>) \<turnstile> N \<turnstile> \<Delta>\<rbrakk> 
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
  4968
           \<Longrightarrow> \<Gamma> \<turnstile> Cut <a>.M (x).N \<turnstile> \<Delta>"
9be4ab2acc13 split Class.thy into parts to 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
9be4ab2acc13 split Class.thy into parts to 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
equivariance typing
9be4ab2acc13 split Class.thy into parts to 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
9be4ab2acc13 split Class.thy into parts to 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
lemma fresh_set_member:
9be4ab2acc13 split Class.thy into parts to 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
  fixes x::"name"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4974
    and   a::"coname"
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
  4975
  shows "x\<sharp>L \<Longrightarrow> e\<in>set L \<Longrightarrow> x\<sharp>e"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4976
    and   "a\<sharp>L \<Longrightarrow> e\<in>set L \<Longrightarrow> a\<sharp>e"   
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4977
  by (induct L) (auto simp add: fresh_list_cons) 
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
  4978
9be4ab2acc13 split Class.thy into parts to 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
lemma fresh_subset:
9be4ab2acc13 split Class.thy into parts to 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
  fixes x::"name"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4981
    and   a::"coname"
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
  4982
  shows "x\<sharp>L \<Longrightarrow> set L' \<subseteq> set L \<Longrightarrow> x\<sharp>L'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4983
    and   "a\<sharp>L \<Longrightarrow> set L' \<subseteq> set L \<Longrightarrow> a\<sharp>L'"   
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4984
   apply(induct L' arbitrary: L) 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4985
     apply(auto simp add: fresh_list_cons fresh_list_nil intro: fresh_set_member)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4986
  done
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
  4987
9be4ab2acc13 split Class.thy into parts to 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
lemma fresh_subset_ext:
9be4ab2acc13 split Class.thy into parts to 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
  fixes x::"name"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4990
    and   a::"coname"
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
  4991
  shows "x\<sharp>L \<Longrightarrow> x\<sharp>e \<Longrightarrow> set L' \<subseteq> set (e#L) \<Longrightarrow> x\<sharp>L'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4992
    and   "a\<sharp>L \<Longrightarrow> a\<sharp>e \<Longrightarrow> set L' \<subseteq> set (e#L) \<Longrightarrow> a\<sharp>L'"   
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4993
   apply(induct L' arbitrary: L) 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4994
     apply(auto simp add: fresh_list_cons fresh_list_nil intro: fresh_set_member)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4995
  done
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
  4996
9be4ab2acc13 split Class.thy into parts to 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
lemma fresh_under_insert:
9be4ab2acc13 split Class.thy into parts to 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
  fixes x::"name"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  4999
    and   a::"coname"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5000
    and   \<Gamma>::"ctxtn"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5001
    and   \<Delta>::"ctxtc"
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
  5002
  shows "x\<sharp>\<Gamma> \<Longrightarrow> x\<noteq>y \<Longrightarrow> set \<Gamma>' = insert (y,B) (set \<Gamma>) \<Longrightarrow> x\<sharp>\<Gamma>'"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5003
    and   "a\<sharp>\<Delta> \<Longrightarrow> a\<noteq>c \<Longrightarrow> set \<Delta>' = insert (c,B) (set \<Delta>) \<Longrightarrow> a\<sharp>\<Delta>'"   
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5004
   apply(rule fresh_subset_ext(1))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5005
     apply(auto simp add: fresh_prod fresh_atm fresh_ty)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5006
  apply(rule fresh_subset_ext(2))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5007
    apply(auto simp add: fresh_prod fresh_atm fresh_ty)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5008
  done
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
  5009
9be4ab2acc13 split Class.thy into parts to 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
nominal_inductive typing
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5011
                       apply (simp_all add: abs_fresh fresh_atm fresh_list_cons fresh_prod fresh_ty fresh_ctxt 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5012
      fresh_list_append abs_supp fin_supp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5013
           apply(auto intro: fresh_under_insert)
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
  5014
  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
  5015
9be4ab2acc13 split Class.thy into parts to 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
lemma validn_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
  5017
  assumes a: "validn ((x,B)#\<Gamma>)"
9be4ab2acc13 split Class.thy into parts to 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
  shows "validn \<Gamma> \<and> x\<sharp>\<Gamma>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5019
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5020
  apply(erule_tac validn.cases)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5021
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5022
  done
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
  5023
9be4ab2acc13 split Class.thy into parts to 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
lemma validc_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
  5025
  assumes a: "validc ((a,B)#\<Delta>)"
9be4ab2acc13 split Class.thy into parts to 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
  shows "validc \<Delta> \<and> a\<sharp>\<Delta>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5027
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5028
  apply(erule_tac validc.cases)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5029
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5030
  done
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
  5031
9be4ab2acc13 split Class.thy into parts to 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
lemma context_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
  5033
  fixes x::"name"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5034
    and   a::"coname"
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
  5035
  shows "x\<sharp>\<Gamma> \<Longrightarrow> \<not>(\<exists>B. (x,B)\<in>set \<Gamma>)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5036
    and   "a\<sharp>\<Delta> \<Longrightarrow> \<not>(\<exists>B. (a,B)\<in>set \<Delta>)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5037
   apply -
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5038
   apply(induct \<Gamma>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5039
    apply(auto simp add: fresh_list_cons fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5040
  apply(induct \<Delta>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5041
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5042
  done
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
  5043
9be4ab2acc13 split Class.thy into parts to 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
lemma typing_implies_valid:
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "\<Gamma> \<turnstile> M \<turnstile> \<Delta>"
9be4ab2acc13 split Class.thy into parts to 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
  shows "validn \<Gamma> \<and> validc \<Delta>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5047
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5048
  apply(nominal_induct rule: typing.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5049
             apply(auto dest: validn_elim validc_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5050
  done
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
  5051
9be4ab2acc13 split Class.thy into parts to 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
lemma ty_perm:
9be4ab2acc13 split Class.thy into parts to 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
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5054
    and   pi2::"coname prm"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5055
    and   B::"ty"
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
  5056
  shows "pi1\<bullet>B=B" and "pi2\<bullet>B=B"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5057
   apply(nominal_induct B rule: ty.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5058
           apply(auto simp add: perm_string)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5059
  done
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
  5060
9be4ab2acc13 split Class.thy into parts to 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
lemma ctxt_perm:
9be4ab2acc13 split Class.thy into parts to 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
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5063
    and   pi2::"coname prm"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5064
    and   \<Gamma>::"ctxtn"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5065
    and   \<Delta>::"ctxtc"
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
  5066
  shows "pi2\<bullet>\<Gamma>=\<Gamma>" and "pi1\<bullet>\<Delta>=\<Delta>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5067
   apply -
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5068
   apply(induct \<Gamma>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5069
    apply(auto simp add: calc_atm ty_perm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5070
  apply(induct \<Delta>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5071
   apply(auto simp add: calc_atm ty_perm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5072
  done
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
  5073
9be4ab2acc13 split Class.thy into parts to 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
lemma typing_Ax_elim1: 
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "\<Gamma> \<turnstile> Ax x a \<turnstile> ((a,B)#\<Delta>)"
9be4ab2acc13 split Class.thy into parts to 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
  shows "(x,B)\<in>set \<Gamma>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5077
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5078
  apply(erule_tac typing.cases)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5079
             apply(simp_all add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5080
  apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5081
  apply(auto dest: validc_elim context_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5082
  done
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
  5083
9be4ab2acc13 split Class.thy into parts to 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
lemma typing_Ax_elim2: 
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "((x,B)#\<Gamma>) \<turnstile> Ax x a \<turnstile> \<Delta>"
9be4ab2acc13 split Class.thy into parts to 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
  shows "(a,B)\<in>set \<Delta>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5087
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5088
  apply(erule_tac typing.cases)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5089
             apply(simp_all add: trm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5090
  apply(auto  dest!: validn_elim context_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5091
  done
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
  5092
9be4ab2acc13 split Class.thy into parts to 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
lemma psubst_Ax_aux: 
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5094
  assumes a: "\<theta>_c cmaps a to Some (y,N)"
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5095
  shows "lookupb x a \<theta>_c c P = Cut <c>.P (y).N"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5096
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5097
  apply(induct \<theta>_c)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5098
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5099
  done
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
  5100
9be4ab2acc13 split Class.thy into parts to 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
lemma psubst_Ax:
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5102
  assumes a: "\<theta>_n nmaps x to Some (c,P)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5103
    and     b: "\<theta>_c cmaps a to Some (y,N)"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5104
  shows "\<theta>_n,\<theta>_c<Ax x a> = Cut <c>.P (y).N"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5105
  using a b
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5106
  apply(induct \<theta>_n)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5107
   apply(auto simp add: psubst_Ax_aux)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5108
  done
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
  5109
9be4ab2acc13 split Class.thy into parts to 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
lemma psubst_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
  5111
  assumes a: "\<forall>x. M\<noteq>Ax x c"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5112
    and     b: "\<forall>a. N\<noteq>Ax x a"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5113
    and     c: "c\<sharp>(\<theta>_n,\<theta>_c,N)" "x\<sharp>(\<theta>_n,\<theta>_c,M)"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5114
  shows "\<theta>_n,\<theta>_c<Cut <c>.M (x).N> = Cut <c>.(\<theta>_n,\<theta>_c<M>) (x).(\<theta>_n,\<theta>_c<N>)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5115
  using a b c
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5116
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5117
  done
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
  5118
9be4ab2acc13 split Class.thy into parts to 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
lemma all_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
  5120
  assumes a: "\<Gamma> \<turnstile> M \<turnstile> \<Delta>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5121
    and     b: "\<theta>_n ncloses \<Gamma>"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5122
    and     c: "\<theta>_c ccloses \<Delta>"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5123
  shows "SNa (\<theta>_n,\<theta>_c<M>)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5124
  using a b c
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5125
proof(nominal_induct avoiding: \<theta>_n \<theta>_c rule: typing.strong_induct)
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5126
  case (TAx \<Gamma> \<Delta> x B a \<theta>_n \<theta>_c)
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
  5127
  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
  5128
    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
  5129
    apply(drule ncloses_elim)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5130
     apply(assumption)
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
  5131
    apply(drule ccloses_elim)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5132
     apply(assumption)
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
  5133
    apply(erule exE)+
9be4ab2acc13 split Class.thy into parts to 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(erule conjE)+
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5135
    apply(rule_tac s="Cut <c>.P (xa).Pa" and t="\<theta>_n,\<theta>_c<Ax x a>" in subst)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5136
     apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5137
     apply(simp only: psubst_Ax)
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
  5138
    apply(simp add: CUT_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
  5139
    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
  5140
next
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5141
  case (TNotR x \<Gamma> B M \<Delta> \<Delta>' a \<theta>_n \<theta>_c) 
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
  5142
  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
  5143
    apply(simp)
9be4ab2acc13 split Class.thy into parts to 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(subgoal_tac "(a,NOT B) \<in> set \<Delta>'")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5145
     apply(drule ccloses_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5146
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5147
     apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5148
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5149
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5150
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5151
     apply(rule_tac B="NOT B" in CUT_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5152
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5153
      apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5154
      apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5155
      apply(rule_tac x="c" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5156
      apply(rule_tac x="x" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5157
      apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5158
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5159
      apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5160
       apply(rule fic.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5161
       apply(rule psubst_fresh_coname)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5162
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5163
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5164
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5165
      apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5166
      apply(unfold BINDINGn_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5167
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5168
      apply(rule_tac x="x" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5169
      apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5170
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5171
      apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5172
      apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5173
      apply(simp add: psubst_nsubst[symmetric])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5174
      apply(drule_tac x="(x,aa,Pa)#\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5175
      apply(drule_tac x="\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5176
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5177
       apply(rule ncloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5178
          apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5179
         apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5180
        apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5181
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5182
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5183
       apply(rule ccloses_subset)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5184
        apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5185
       apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5186
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5187
     apply(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
  5188
    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
  5189
    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
  5190
next
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5191
  case (TNotL a \<Delta> \<Gamma> M B \<Gamma>' x \<theta>_n \<theta>_c)
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
  5192
  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
  5193
    apply(simp)
9be4ab2acc13 split Class.thy into parts to 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
    apply(subgoal_tac "(x,NOT B) \<in> set \<Gamma>'")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5195
     apply(drule ncloses_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5196
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5197
     apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5198
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5199
     apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5200
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5201
     apply(rule_tac B="NOT B" in CUT_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5202
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5203
     apply(rule NEG_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5204
     apply(simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5205
     apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5206
     apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5207
     apply(rule_tac x="a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5208
     apply(rule_tac x="ca" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5209
     apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5210
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5211
     apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5212
      apply(rule fin.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5213
      apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5214
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5215
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5216
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5217
     apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5218
     apply(unfold BINDINGc_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5219
     apply(simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5220
     apply(rule_tac x="a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5221
     apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5222
     apply(simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5223
     apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5224
     apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5225
     apply(simp del: NEGc.simps add: psubst_csubst[symmetric])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5226
     apply(drule_tac x="\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5227
     apply(drule_tac x="(a,xa,Pa)#\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5228
     apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5229
      apply(rule ncloses_subset)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5230
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5231
      apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5232
     apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5233
      apply(rule ccloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5234
         apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5235
        apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5236
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5237
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5238
     apply(assumption)
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
  5239
    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
  5240
    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
  5241
next
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5242
  case (TAndL1 x \<Gamma> y B1 M \<Delta> \<Gamma>' B2 \<theta>_n \<theta>_c)
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
  5243
  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
  5244
    apply(simp)
9be4ab2acc13 split Class.thy into parts to 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
    apply(subgoal_tac "(y,B1 AND B2) \<in> set \<Gamma>'")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5246
     apply(drule ncloses_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5247
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5248
     apply(erule exE)+ 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5249
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5250
     apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5251
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5252
     apply(rule_tac B="B1 AND B2" in CUT_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5253
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5254
     apply(rule NEG_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5255
     apply(simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5256
     apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5257
     apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5258
     apply(rule disjI1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5259
     apply(rule_tac x="x" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5260
     apply(rule_tac x="ca" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5261
     apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5262
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5263
     apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5264
      apply(rule fin.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5265
      apply(simp del: NEGc.simps add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5266
      apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5267
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5268
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5269
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5270
     apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5271
     apply(unfold BINDINGn_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5272
     apply(simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5273
     apply(rule_tac x="x" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5274
     apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5275
     apply(simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5276
     apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5277
     apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5278
     apply(simp del: NEGc.simps add: psubst_nsubst[symmetric])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5279
     apply(drule_tac x="(x,a,Pa)#\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5280
     apply(drule_tac x="\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5281
     apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5282
      apply(rule ncloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5283
         apply(rule ncloses_subset)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5284
          apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5285
         apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5286
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5287
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5288
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5289
     apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5290
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5291
     apply(assumption)
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
  5292
    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
  5293
    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
  5294
next
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5295
  case (TAndL2 x \<Gamma> y B2 M \<Delta> \<Gamma>' B1 \<theta>_n \<theta>_c)
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
  5296
  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
  5297
    apply(simp)
9be4ab2acc13 split Class.thy into parts to 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
    apply(subgoal_tac "(y,B1 AND B2) \<in> set \<Gamma>'")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5299
     apply(drule ncloses_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5300
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5301
     apply(erule exE)+ 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5302
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5303
     apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5304
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5305
     apply(rule_tac B="B1 AND B2" in CUT_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5306
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5307
     apply(rule NEG_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5308
     apply(simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5309
     apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5310
     apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5311
     apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5312
     apply(rule_tac x="x" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5313
     apply(rule_tac x="ca" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5314
     apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5315
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5316
     apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5317
      apply(rule fin.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5318
      apply(simp del: NEGc.simps add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5319
      apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5320
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5321
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5322
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5323
     apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5324
     apply(unfold BINDINGn_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5325
     apply(simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5326
     apply(rule_tac x="x" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5327
     apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5328
     apply(simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5329
     apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5330
     apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5331
     apply(simp del: NEGc.simps add: psubst_nsubst[symmetric])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5332
     apply(drule_tac x="(x,a,Pa)#\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5333
     apply(drule_tac x="\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5334
     apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5335
      apply(rule ncloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5336
         apply(rule ncloses_subset)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5337
          apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5338
         apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5339
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5340
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5341
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5342
     apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5343
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5344
     apply(assumption)
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
  5345
    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
  5346
    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
  5347
next
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5348
  case (TAndR a \<Delta> N c b M \<Gamma> B C \<Delta>' \<theta>_n \<theta>_c)
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
  5349
  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
  5350
    apply(simp)
9be4ab2acc13 split Class.thy into parts to 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
    apply(subgoal_tac "(c,B AND C) \<in> set \<Delta>'")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5352
     apply(drule ccloses_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5353
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5354
     apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5355
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5356
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5357
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5358
     apply(rule_tac B="B AND C" in CUT_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5359
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5360
      apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5361
      apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5362
      apply(rule_tac x="ca" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5363
      apply(rule_tac x="a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5364
      apply(rule_tac x="b" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5365
      apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5366
      apply(rule_tac x="\<theta>_n,\<theta>_c<N>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5367
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5368
      apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5369
       apply(rule fic.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5370
        apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5371
        apply(rule psubst_fresh_coname)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5372
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5373
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5374
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5375
       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5376
       apply(rule psubst_fresh_coname)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5377
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5378
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5379
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5380
      apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5381
       apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5382
       apply(unfold BINDINGc_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5383
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5384
       apply(rule_tac x="a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5385
       apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5386
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5387
       apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5388
       apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5389
       apply(simp add: psubst_csubst[symmetric])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5390
       apply(drule_tac x="\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5391
       apply(drule_tac x="(a,xa,Pa)#\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5392
       apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5393
        apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5394
       apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5395
        apply(rule ccloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5396
           apply(rule ccloses_subset)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5397
            apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5398
           apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5399
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5400
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5401
        apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5402
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5403
      apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5404
      apply(unfold BINDINGc_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5405
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5406
      apply(rule_tac x="b" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5407
      apply(rule_tac x="\<theta>_n,\<theta>_c<N>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5408
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5409
      apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5410
      apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5411
      apply(simp add: psubst_csubst[symmetric])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5412
      apply(rotate_tac 14)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5413
      apply(drule_tac x="\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5414
      apply(drule_tac x="(b,xa,Pa)#\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5415
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5416
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5417
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5418
       apply(rule ccloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5419
          apply(rule ccloses_subset)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5420
           apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5421
          apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5422
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5423
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5424
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5425
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5426
     apply(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
  5427
    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
  5428
    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
  5429
next
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5430
  case (TOrL x \<Gamma> N z y M B \<Delta> C \<Gamma>' \<theta>_n \<theta>_c)
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
  5431
  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
  5432
    apply(simp)
9be4ab2acc13 split Class.thy into parts to 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
    apply(subgoal_tac "(z,B OR C) \<in> set \<Gamma>'")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5434
     apply(drule ncloses_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5435
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5436
     apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5437
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5438
     apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5439
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5440
     apply(rule_tac B="B OR C" in CUT_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5441
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5442
     apply(rule NEG_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5443
     apply(simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5444
     apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5445
     apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5446
     apply(rule_tac x="x" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5447
     apply(rule_tac x="y" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5448
     apply(rule_tac x="ca" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5449
     apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5450
     apply(rule_tac x="\<theta>_n,\<theta>_c<N>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5451
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5452
     apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5453
      apply(rule fin.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5454
       apply(simp del: NEGc.simps add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5455
       apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5456
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5457
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5458
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5459
      apply(simp del: NEGc.simps add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5460
      apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5461
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5462
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5463
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5464
     apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5465
      apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5466
      apply(unfold BINDINGn_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5467
      apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5468
      apply(rule_tac x="x" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5469
      apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5470
      apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5471
      apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5472
      apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5473
      apply(simp del: NEGc.simps add: psubst_nsubst[symmetric])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5474
      apply(drule_tac x="(x,a,Pa)#\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5475
      apply(drule_tac x="\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5476
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5477
       apply(rule ncloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5478
          apply(rule ncloses_subset)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5479
           apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5480
          apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5481
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5482
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5483
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5484
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5485
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5486
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5487
     apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5488
     apply(unfold BINDINGn_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5489
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5490
     apply(rule_tac x="y" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5491
     apply(rule_tac x="\<theta>_n,\<theta>_c<N>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5492
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5493
     apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5494
     apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5495
     apply(simp del: NEGc.simps add: psubst_nsubst[symmetric])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5496
     apply(rotate_tac 14)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5497
     apply(drule_tac x="(y,a,Pa)#\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5498
     apply(drule_tac x="\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5499
     apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5500
      apply(rule ncloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5501
         apply(rule ncloses_subset)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5502
          apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5503
         apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5504
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5505
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5506
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5507
     apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5508
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5509
     apply(assumption)
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
  5510
    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
  5511
    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
  5512
next
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5513
  case (TOrR1 a \<Delta> b \<Gamma> M B1 \<Delta>' B2 \<theta>_n \<theta>_c)
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
  5514
  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
  5515
    apply(simp)
9be4ab2acc13 split Class.thy into parts to 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
    apply(subgoal_tac "(b,B1 OR B2) \<in> set \<Delta>'")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5517
     apply(drule ccloses_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5518
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5519
     apply(erule exE)+ 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5520
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5521
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5522
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5523
     apply(rule_tac B="B1 OR B2" in CUT_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5524
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5525
      apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5526
      apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5527
      apply(rule disjI1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5528
      apply(rule_tac x="a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5529
      apply(rule_tac x="c" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5530
      apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5531
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5532
      apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5533
       apply(rule fic.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5534
       apply(simp del: NEGc.simps add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5535
       apply(rule psubst_fresh_coname)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5536
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5537
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5538
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5539
      apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5540
      apply(unfold BINDINGc_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5541
      apply(simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5542
      apply(rule_tac x="a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5543
      apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5544
      apply(simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5545
      apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5546
      apply(rule impI)    
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5547
      apply(simp del: NEGc.simps add: psubst_csubst[symmetric])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5548
      apply(drule_tac x="\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5549
      apply(drule_tac x="(a,xa,Pa)#\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5550
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5551
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5552
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5553
       apply(rule ccloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5554
          apply(rule ccloses_subset)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5555
           apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5556
          apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5557
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5558
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5559
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5560
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5561
     apply(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
  5562
    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
  5563
    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
  5564
next
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5565
  case (TOrR2 a \<Delta> b \<Gamma> M B2 \<Delta>' B1 \<theta>_n \<theta>_c)
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
  5566
  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
  5567
    apply(simp)
9be4ab2acc13 split Class.thy into parts to 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
    apply(subgoal_tac "(b,B1 OR B2) \<in> set \<Delta>'")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5569
     apply(drule ccloses_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5570
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5571
     apply(erule exE)+ 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5572
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5573
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5574
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5575
     apply(rule_tac B="B1 OR B2" in CUT_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5576
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5577
      apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5578
      apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5579
      apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5580
      apply(rule_tac x="a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5581
      apply(rule_tac x="c" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5582
      apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5583
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5584
      apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5585
       apply(rule fic.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5586
       apply(simp del: NEGc.simps add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5587
       apply(rule psubst_fresh_coname)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5588
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5589
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5590
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5591
      apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5592
      apply(unfold BINDINGc_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5593
      apply(simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5594
      apply(rule_tac x="a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5595
      apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5596
      apply(simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5597
      apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5598
      apply(rule impI)    
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5599
      apply(simp del: NEGc.simps add: psubst_csubst[symmetric])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5600
      apply(drule_tac x="\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5601
      apply(drule_tac x="(a,xa,Pa)#\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5602
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5603
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5604
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5605
       apply(rule ccloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5606
          apply(rule ccloses_subset)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5607
           apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5608
          apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5609
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5610
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5611
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5612
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5613
     apply(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
  5614
    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
  5615
    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
  5616
next
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5617
  case (TImpL a \<Delta> N x \<Gamma> M y B C \<Gamma>' \<theta>_n \<theta>_c)
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
  5618
  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
  5619
    apply(simp)
9be4ab2acc13 split Class.thy into parts to 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
    apply(subgoal_tac "(y,B IMP C) \<in> set \<Gamma>'")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5621
     apply(drule ncloses_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5622
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5623
     apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5624
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5625
     apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5626
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5627
     apply(rule_tac B="B IMP C" in CUT_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5628
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5629
     apply(rule NEG_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5630
     apply(simp (no_asm))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5631
     apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5632
     apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5633
     apply(rule_tac x="x" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5634
     apply(rule_tac x="a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5635
     apply(rule_tac x="ca" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5636
     apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5637
     apply(rule_tac x="\<theta>_n,\<theta>_c<N>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5638
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5639
     apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5640
      apply(rule fin.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5641
       apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5642
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5643
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5644
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5645
      apply(simp del: NEGc.simps add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5646
      apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5647
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5648
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5649
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5650
     apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5651
      apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5652
      apply(unfold BINDINGc_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5653
      apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5654
      apply(rule_tac x="a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5655
      apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5656
      apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5657
      apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5658
      apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5659
      apply(simp del: NEGc.simps add: psubst_csubst[symmetric])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5660
      apply(drule_tac x="\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5661
      apply(drule_tac x="(a,xa,Pa)#\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5662
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5663
       apply(rule ncloses_subset)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5664
        apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5665
       apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5666
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5667
       apply(rule ccloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5668
          apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5669
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5670
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5671
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5672
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5673
     apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5674
     apply(unfold BINDINGn_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5675
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5676
     apply(rule_tac x="x" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5677
     apply(rule_tac x="\<theta>_n,\<theta>_c<N>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5678
     apply(simp del: NEGc.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5679
     apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5680
     apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5681
     apply(simp del: NEGc.simps add: psubst_nsubst[symmetric])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5682
     apply(rotate_tac 12)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5683
     apply(drule_tac x="(x,aa,Pa)#\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5684
     apply(drule_tac x="\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5685
     apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5686
      apply(rule ncloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5687
         apply(rule ncloses_subset)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5688
          apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5689
         apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5690
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5691
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5692
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5693
     apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5694
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5695
     apply(assumption)
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
  5696
    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
  5697
    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
  5698
next
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5699
  case (TImpR a \<Delta> b x \<Gamma> B M C \<Delta>' \<theta>_n \<theta>_c)
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
  5700
  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
  5701
    apply(simp)
9be4ab2acc13 split Class.thy into parts to 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
    apply(subgoal_tac "(b,B IMP C) \<in> set \<Delta>'")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5703
     apply(drule ccloses_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5704
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5705
     apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5706
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5707
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5708
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5709
     apply(rule_tac B="B IMP C" in CUT_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5710
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5711
      apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5712
      apply(rule disjI2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5713
      apply(rule_tac x="x" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5714
      apply(rule_tac x="a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5715
      apply(rule_tac x="c" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5716
      apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5717
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5718
      apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5719
       apply(rule fic.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5720
       apply(simp add: abs_fresh fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5721
       apply(rule psubst_fresh_coname)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5722
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5723
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5724
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5725
      apply(rule conjI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5726
       apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5727
       apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5728
       apply(simp add: psubst_csubst[symmetric])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5729
       apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5730
       apply(unfold BINDINGn_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5731
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5732
       apply(rule_tac x="x" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5733
       apply(rule_tac x="\<theta>_n,((a,z,Pa)#\<theta>_c)<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5734
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5735
       apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5736
       apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5737
       apply(rule_tac t="\<theta>_n,((a,z,Pa)#\<theta>_c)<M>{x:=<aa>.Pb}" and 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5738
        s="((x,aa,Pb)#\<theta>_n),((a,z,Pa)#\<theta>_c)<M>" in subst)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5739
        apply(rule psubst_nsubst)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5740
        apply(simp add: fresh_prod fresh_atm fresh_list_cons)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5741
       apply(drule_tac x="(x,aa,Pb)#\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5742
       apply(drule_tac x="(a,z,Pa)#\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5743
       apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5744
        apply(rule ncloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5745
           apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5746
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5747
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5748
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5749
       apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5750
        apply(rule ccloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5751
           apply(rule ccloses_subset)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5752
            apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5753
           apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5754
          apply(auto intro: fresh_subset simp del: NEGc.simps)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5755
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5756
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5757
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5758
      apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5759
      apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5760
      apply(simp add: psubst_nsubst[symmetric])
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5761
      apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5762
      apply(unfold BINDINGc_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5763
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5764
      apply(rule_tac x="a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5765
      apply(rule_tac x="((x,ca,Q)#\<theta>_n),\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5766
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5767
      apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5768
      apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5769
      apply(rule_tac t="((x,ca,Q)#\<theta>_n),\<theta>_c<M>{a:=(xaa).Pa}" and 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5770
        s="((x,ca,Q)#\<theta>_n),((a,xaa,Pa)#\<theta>_c)<M>" in subst)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5771
       apply(rule psubst_csubst)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5772
       apply(simp add: fresh_prod fresh_atm fresh_list_cons)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5773
      apply(drule_tac x="(x,ca,Q)#\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5774
      apply(drule_tac x="(a,xaa,Pa)#\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5775
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5776
       apply(rule ncloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5777
          apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5778
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5779
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5780
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5781
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5782
       apply(rule ccloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5783
          apply(rule ccloses_subset)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5784
           apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5785
          apply(blast)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5786
         apply(auto intro: fresh_subset simp del: NEGc.simps)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5787
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5788
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5789
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5790
     apply(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
  5791
    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
  5792
    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
  5793
next
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5794
  case (TCut a \<Delta> N x \<Gamma> M B \<theta>_n \<theta>_c)
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
  5795
  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
  5796
    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
  5797
    apply(case_tac "\<forall>y. M\<noteq>Ax y a")
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5798
     apply(case_tac "\<forall>c. N\<noteq>Ax x c")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5799
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5800
      apply(rule_tac B="B" in CUT_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5801
       apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5802
       apply(unfold BINDINGc_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5803
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5804
       apply(rule_tac x="a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5805
       apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5806
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5807
       apply(rule allI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5808
       apply(rule allI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5809
       apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5810
       apply(simp add: psubst_csubst[symmetric]) (*?*)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5811
       apply(drule_tac x="\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5812
       apply(drule_tac x="(a,xa,P)#\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5813
       apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5814
        apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5815
       apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5816
        apply(rule ccloses_extend) 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5817
           apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5818
          apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5819
         apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5820
        apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5821
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5822
      apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5823
      apply(unfold BINDINGn_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5824
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5825
      apply(rule_tac x="x" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5826
      apply(rule_tac x="\<theta>_n,\<theta>_c<N>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5827
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5828
      apply(rule allI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5829
      apply(rule allI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5830
      apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5831
      apply(simp add: psubst_nsubst[symmetric]) (*?*)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5832
      apply(rotate_tac 11)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5833
      apply(drule_tac x="(x,aa,P)#\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5834
      apply(drule_tac x="\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5835
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5836
       apply(rule ncloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5837
          apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5838
         apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5839
        apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5840
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5841
      apply(drule_tac meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5842
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5843
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5844
      (* cases at least one axiom *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5845
     apply(simp (no_asm_use))
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5846
     apply(erule exE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5847
     apply(simp del: psubst.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5848
     apply(drule typing_Ax_elim2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5849
     apply(auto simp add: trm.inject)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5850
     apply(rule_tac B="B" in CUT_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5851
      (* left term *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5852
      apply(rule BINDING_implies_CAND)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5853
      apply(unfold BINDINGc_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5854
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5855
      apply(rule_tac x="a" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5856
      apply(rule_tac x="\<theta>_n,\<theta>_c<M>" in exI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5857
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5858
      apply(rule allI)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5859
      apply(rule impI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5860
      apply(drule_tac x="\<theta>_n" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5861
      apply(drule_tac x="(a,xa,P)#\<theta>_c" in meta_spec)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5862
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5863
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5864
      apply(drule meta_mp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5865
       apply(rule ccloses_extend) 
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5866
          apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5867
         apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5868
        apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5869
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5870
      apply(simp add: psubst_csubst[symmetric]) (*?*)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5871
      (* right term -axiom *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5872
     apply(drule ccloses_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5873
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5874
     apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5875
     apply(erule conjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5876
     apply(frule_tac y="x" in lookupd_cmaps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5877
     apply(drule cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5878
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5879
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5880
     apply(subgoal_tac "(x):P[xa\<turnstile>n>x] = (xa):P")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5881
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5882
     apply(simp add: ntrm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5883
     apply(simp add: alpha fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5884
     apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5885
     apply(rule nrename_swap)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5886
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5887
      (* M is axiom *)
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
  5888
    apply(simp)
9be4ab2acc13 split Class.thy into parts to 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
    apply(auto)[1]
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5890
      (* both are axioms *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5891
     apply(rule_tac B="B" in CUT_SNa)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5892
      apply(drule typing_Ax_elim1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5893
      apply(drule ncloses_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5894
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5895
      apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5896
      apply(erule conjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5897
      apply(frule_tac a="a" in lookupc_nmaps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5898
      apply(drule_tac a="a" in nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5899
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5900
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5901
      apply(subgoal_tac "<a>:P[c\<turnstile>c>a] = <c>:P")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5902
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5903
      apply(simp add: ctrm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5904
      apply(simp add: alpha fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5905
      apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5906
      apply(rule crename_swap)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5907
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5908
     apply(drule typing_Ax_elim2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5909
     apply(drule ccloses_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5910
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5911
     apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5912
     apply(erule conjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5913
     apply(frule_tac y="x" in lookupd_cmaps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5914
     apply(drule cmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5915
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5916
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5917
     apply(subgoal_tac "(x):P[xa\<turnstile>n>x] = (xa):P")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5918
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5919
     apply(simp add: ntrm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5920
     apply(simp add: alpha fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5921
     apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5922
     apply(rule nrename_swap)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5923
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5924
      (* N is not axioms *)
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
  5925
    apply(rule_tac B="B" in CUT_SNa)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5926
      (* left term *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5927
     apply(drule typing_Ax_elim1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5928
     apply(drule ncloses_elim)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5929
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5930
     apply(erule exE)+
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5931
     apply(erule conjE)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5932
     apply(frule_tac a="a" in lookupc_nmaps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5933
     apply(drule_tac a="a" in nmaps_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5934
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5935
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5936
     apply(subgoal_tac "<a>:P[c\<turnstile>c>a] = <c>:P")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5937
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5938
     apply(simp add: ctrm.inject)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5939
     apply(simp add: alpha fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5940
     apply(rule sym)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5941
     apply(rule crename_swap)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5942
     apply(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
  5943
    apply(rule 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
  5944
    apply(unfold 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
  5945
    apply(simp)
9be4ab2acc13 split Class.thy into parts to 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(rule_tac x="x" in exI)
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5947
    apply(rule_tac x="\<theta>_n,\<theta>_c<N>" in exI)
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
  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(rule allI)
9be4ab2acc13 split Class.thy into parts to 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(rule allI)
9be4ab2acc13 split Class.thy into parts to 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(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
  5952
    apply(simp add: psubst_nsubst[symmetric]) (*?*)
9be4ab2acc13 split Class.thy into parts to 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(rotate_tac 10)
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5954
    apply(drule_tac x="(x,aa,P)#\<theta>_n" in meta_spec)
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  5955
    apply(drule_tac x="\<theta>_c" in meta_spec)
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
  5956
    apply(drule meta_mp)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5957
     apply(rule ncloses_extend)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5958
        apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5959
       apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5960
      apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5961
     apply(assumption)
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
  5962
    apply(drule_tac meta_mp)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5963
     apply(assumption)
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
  5964
    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
  5965
    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
  5966
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
  5967
39246
9e58f0499f57 modernized primrec
haftmann
parents: 36277
diff changeset
  5968
primrec "idn" :: "(name\<times>ty) list\<Rightarrow>coname\<Rightarrow>(name\<times>coname\<times>trm) list" where
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
  5969
  "idn [] a   = []"
39246
9e58f0499f57 modernized primrec
haftmann
parents: 36277
diff changeset
  5970
| "idn (p#\<Gamma>) a = ((fst p),a,Ax (fst p) a)#(idn \<Gamma> a)"
9e58f0499f57 modernized primrec
haftmann
parents: 36277
diff changeset
  5971
9e58f0499f57 modernized primrec
haftmann
parents: 36277
diff changeset
  5972
primrec "idc" :: "(coname\<times>ty) list\<Rightarrow>name\<Rightarrow>(coname\<times>name\<times>trm) list" where
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
  5973
  "idc [] x    = []"
39246
9e58f0499f57 modernized primrec
haftmann
parents: 36277
diff changeset
  5974
| "idc (p#\<Delta>) x = ((fst p),x,Ax x (fst p))#(idc \<Delta> x)"
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
  5975
9be4ab2acc13 split Class.thy into parts to 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
lemma idn_eqvt[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
  5977
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5978
    and   pi2::"coname prm"
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
  5979
  shows "(pi1\<bullet>(idn \<Gamma> a)) = idn (pi1\<bullet>\<Gamma>) (pi1\<bullet>a)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5980
    and   "(pi2\<bullet>(idn \<Gamma> a)) = idn (pi2\<bullet>\<Gamma>) (pi2\<bullet>a)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5981
   apply(induct \<Gamma>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5982
     apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5983
  done
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
  5984
9be4ab2acc13 split Class.thy into parts to 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
lemma idc_eqvt[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
  5986
  fixes pi1::"name prm"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5987
    and   pi2::"coname prm"
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
  5988
  shows "(pi1\<bullet>(idc \<Delta> x)) = idc (pi1\<bullet>\<Delta>) (pi1\<bullet>x)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5989
    and   "(pi2\<bullet>(idc \<Delta> x)) = idc (pi2\<bullet>\<Delta>) (pi2\<bullet>x)"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5990
   apply(induct \<Delta>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5991
     apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5992
  done
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
  5993
9be4ab2acc13 split Class.thy into parts to 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
lemma ccloses_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
  5995
  shows "(idc \<Delta> x) ccloses \<Delta>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5996
  apply(induct \<Delta>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5997
   apply(auto simp add: ccloses_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5998
   apply(rule Ax_in_CANDs)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  5999
  apply(rule Ax_in_CANDs)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6000
  done
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
  6001
9be4ab2acc13 split Class.thy into parts to 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
lemma ncloses_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
  6003
  shows "(idn \<Gamma> a) ncloses \<Gamma>"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6004
  apply(induct \<Gamma>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6005
   apply(auto simp add: ncloses_def)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6006
   apply(rule Ax_in_CANDs)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6007
  apply(rule Ax_in_CANDs)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6008
  done
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
  6009
9be4ab2acc13 split Class.thy into parts to 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
lemma fresh_idn:
9be4ab2acc13 split Class.thy into parts to 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
  fixes x::"name"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6012
    and   a::"coname"
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
  6013
  shows "x\<sharp>\<Gamma> \<Longrightarrow> x\<sharp>idn \<Gamma> a"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6014
    and   "a\<sharp>(\<Gamma>,b) \<Longrightarrow> a\<sharp>idn \<Gamma> b"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6015
   apply(induct \<Gamma>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6016
     apply(auto simp add: fresh_list_cons fresh_list_nil fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6017
  done
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
  6018
9be4ab2acc13 split Class.thy into parts to 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
lemma fresh_idc:
9be4ab2acc13 split Class.thy into parts to 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
  fixes x::"name"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6021
    and   a::"coname"
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
  6022
  shows "x\<sharp>(\<Delta>,y) \<Longrightarrow> x\<sharp>idc \<Delta> y"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6023
    and   "a\<sharp>\<Delta>  \<Longrightarrow> a\<sharp>idc \<Delta> y"
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6024
   apply(induct \<Delta>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6025
     apply(auto simp add: fresh_list_cons fresh_list_nil fresh_atm fresh_prod)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6026
  done
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
  6027
9be4ab2acc13 split Class.thy into parts to 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
lemma idc_cmaps:
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "idc \<Delta> y cmaps b to Some (x,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
  6030
  shows "M=Ax x b"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6031
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6032
  apply(induct \<Delta>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6033
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6034
  apply(case_tac "b=a")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6035
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6036
  done
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
  6037
9be4ab2acc13 split Class.thy into parts to 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
lemma idn_nmaps:
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "idn \<Gamma> a nmaps x to Some (b,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
  6040
  shows "M=Ax x b"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6041
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6042
  apply(induct \<Gamma>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6043
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6044
  apply(case_tac "aa=x")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6045
   apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6046
  done
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
  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 lookup1:
9be4ab2acc13 split Class.thy into parts to 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: "x\<sharp>(idn \<Gamma> b)"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  6050
  shows "lookup x a (idn \<Gamma> b) \<theta>_c = lookupa x a \<theta>_c"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6051
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6052
  apply(induct \<Gamma>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6053
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6054
  done
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
  6055
9be4ab2acc13 split Class.thy into parts to 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
lemma lookup2:
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "\<not>(x\<sharp>(idn \<Gamma> b))"
50252
4aa34bd43228 eliminated slightly odd identifiers;
wenzelm
parents: 39246
diff changeset
  6058
  shows "lookup x a (idn \<Gamma> b) \<theta>_c = lookupb x a \<theta>_c b (Ax x b)"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6059
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6060
  apply(induct \<Gamma>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6061
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm fresh_list_nil)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6062
  done
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
  6063
9be4ab2acc13 split Class.thy into parts to 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
lemma lookup3:
9be4ab2acc13 split Class.thy into parts to 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
  assumes a: "a\<sharp>(idc \<Delta> 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
  6066
  shows "lookupa x a (idc \<Delta> y) = Ax x a"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6067
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6068
  apply(induct \<Delta>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6069
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6070
  done
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
  6071
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
  6072
lemma lookup4:
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
  6073
  assumes a: "\<not>(a\<sharp>(idc \<Delta> 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
  6074
  shows "lookupa x a (idc \<Delta> y) = Cut <a>.(Ax x a) (y).Ax y a"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6075
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6076
  apply(induct \<Delta>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6077
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm fresh_list_nil)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6078
  done
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
  6079
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
  6080
lemma lookup5:
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
  6081
  assumes a: "a\<sharp>(idc \<Delta> 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
  6082
  shows "lookupb x a (idc \<Delta> y) c P = Cut <c>.P (x).Ax x a"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6083
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6084
  apply(induct \<Delta>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6085
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm fresh_list_nil)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6086
  done
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
  6087
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
  6088
lemma lookup6:
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
  6089
  assumes a: "\<not>(a\<sharp>(idc \<Delta> 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
  6090
  shows "lookupb x a (idc \<Delta> y) c P = Cut <c>.P (y).Ax y a"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6091
  using a
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6092
  apply(induct \<Delta>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6093
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm fresh_list_nil)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6094
  done
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
  6095
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
  6096
lemma lookup7:
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
  6097
  shows "lookupc x a (idn \<Gamma> b) = Ax x a"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6098
  apply(induct \<Gamma>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6099
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm fresh_list_nil)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6100
  done
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
  6101
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
  6102
lemma lookup8:
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
  6103
  shows "lookupd x a (idc \<Delta> y) = Ax x a"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6104
  apply(induct \<Delta>)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6105
   apply(auto simp add: fresh_list_cons fresh_prod fresh_atm fresh_list_nil)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6106
  done
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
  6107
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
  6108
lemma id_redu:
53015
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
  6109
  shows "(idn \<Gamma> x),(idc \<Delta> a)<M> \<longrightarrow>\<^sub>a* M"
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6110
  apply(nominal_induct M avoiding: \<Gamma> \<Delta> x a rule: trm.strong_induct)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6111
             apply(auto)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6112
    (* Ax *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6113
             apply(case_tac "name\<sharp>(idn \<Gamma> x)")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6114
              apply(simp add: lookup1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6115
              apply(case_tac "coname\<sharp>(idc \<Delta> a)")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6116
               apply(simp add: lookup3)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6117
              apply(simp add: lookup4)
80609
4b5d3d0abb69 More simplification of proofs. Trying to fix the syntax too
paulson <lp15@cam.ac.uk>
parents: 72166
diff changeset
  6118
              apply(rule rtranclp_trans)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6119
               apply(rule a_starI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6120
               apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6121
               apply(rule better_LAxR_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6122
               apply(rule fic.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6123
              apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6124
             apply(simp add: lookup2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6125
             apply(case_tac "coname\<sharp>(idc \<Delta> a)")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6126
              apply(simp add: lookup5)
80609
4b5d3d0abb69 More simplification of proofs. Trying to fix the syntax too
paulson <lp15@cam.ac.uk>
parents: 72166
diff changeset
  6127
              apply(rule rtranclp_trans)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6128
               apply(rule a_starI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6129
               apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6130
               apply(rule better_LAxR_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6131
               apply(rule fic.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6132
              apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6133
             apply(simp add: lookup6)
80609
4b5d3d0abb69 More simplification of proofs. Trying to fix the syntax too
paulson <lp15@cam.ac.uk>
parents: 72166
diff changeset
  6134
             apply(rule rtranclp_trans)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6135
              apply(rule a_starI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6136
              apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6137
              apply(rule better_LAxR_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6138
              apply(rule fic.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6139
             apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6140
    (* Cut *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6141
            apply(auto simp add: fresh_idn fresh_idc psubst_fresh_name psubst_fresh_coname fresh_atm fresh_prod )[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6142
               apply(simp add: lookup7 lookup8)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6143
              apply(simp add: lookup7 lookup8)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6144
              apply(simp add: a_star_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6145
             apply(simp add: lookup7 lookup8)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6146
             apply(simp add: a_star_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6147
            apply(simp add: a_star_Cut)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6148
    (* NotR *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6149
           apply(simp add: fresh_idn fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6150
           apply(case_tac "findc (idc \<Delta> a) coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6151
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6152
            apply(simp add: a_star_NotR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6153
           apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6154
           apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6155
           apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6156
           apply(drule idc_cmaps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6157
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6158
           apply(subgoal_tac "c\<sharp>idn \<Gamma> x,idc \<Delta> a<trm>")
80609
4b5d3d0abb69 More simplification of proofs. Trying to fix the syntax too
paulson <lp15@cam.ac.uk>
parents: 72166
diff changeset
  6159
            apply(rule rtranclp_trans)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6160
             apply(rule a_starI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6161
             apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6162
             apply(rule better_LAxR_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6163
             apply(rule fic.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6164
             apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6165
            apply(simp add: crename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6166
            apply(simp add: a_star_NotR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6167
           apply(rule psubst_fresh_coname)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6168
             apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6169
             apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6170
            apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6171
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6172
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6173
    (* NotL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6174
          apply(simp add: fresh_idn fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6175
          apply(case_tac "findn (idn \<Gamma> x) name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6176
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6177
           apply(simp add: a_star_NotL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6178
          apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6179
          apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6180
          apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6181
          apply(drule idn_nmaps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6182
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6183
          apply(subgoal_tac "c\<sharp>idn \<Gamma> x,idc \<Delta> a<trm>")
80609
4b5d3d0abb69 More simplification of proofs. Trying to fix the syntax too
paulson <lp15@cam.ac.uk>
parents: 72166
diff changeset
  6184
           apply(rule rtranclp_trans)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6185
            apply(rule a_starI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6186
            apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6187
            apply(rule better_LAxL_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6188
            apply(rule fin.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6189
            apply(assumption)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6190
           apply(simp add: nrename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6191
           apply(simp add: a_star_NotL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6192
          apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6193
            apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6194
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6195
           apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6196
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6197
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6198
    (* AndR *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6199
         apply(simp add: fresh_idn fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6200
         apply(case_tac "findc (idc \<Delta> a) coname3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6201
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6202
          apply(simp add: a_star_AndR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6203
         apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6204
         apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6205
         apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6206
         apply(drule idc_cmaps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6207
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6208
         apply(subgoal_tac "c\<sharp>idn \<Gamma> x,idc \<Delta> a<trm1>")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6209
          apply(subgoal_tac "c\<sharp>idn \<Gamma> x,idc \<Delta> a<trm2>")
80609
4b5d3d0abb69 More simplification of proofs. Trying to fix the syntax too
paulson <lp15@cam.ac.uk>
parents: 72166
diff changeset
  6210
           apply(rule rtranclp_trans)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6211
            apply(rule a_starI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6212
            apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6213
            apply(rule better_LAxR_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6214
            apply(rule fic.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6215
             apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6216
            apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6217
           apply(auto simp add: fresh_idn fresh_idc psubst_fresh_name crename_fresh fresh_atm fresh_prod )[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6218
           apply(rule aux3)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6219
            apply(rule crename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6220
              apply(auto simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6221
              apply(rule psubst_fresh_coname)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6222
                apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6223
                apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6224
               apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6225
               apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6226
              apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6227
             apply(auto simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6228
             apply(rule psubst_fresh_coname)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6229
               apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6230
               apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6231
              apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6232
              apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6233
             apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6234
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6235
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6236
           apply(simp add: crename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6237
           apply(simp add: a_star_AndR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6238
          apply(rule psubst_fresh_coname)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6239
            apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6240
            apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6241
           apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6242
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6243
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6244
         apply(rule psubst_fresh_coname)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6245
           apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6246
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6247
          apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6248
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6249
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6250
    (* AndL1 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6251
        apply(simp add: fresh_idn fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6252
        apply(case_tac "findn (idn \<Gamma> x) name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6253
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6254
         apply(simp add: a_star_AndL1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6255
        apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6256
        apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6257
        apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6258
        apply(drule idn_nmaps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6259
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6260
        apply(subgoal_tac "c\<sharp>idn \<Gamma> x,idc \<Delta> a<trm>")
80609
4b5d3d0abb69 More simplification of proofs. Trying to fix the syntax too
paulson <lp15@cam.ac.uk>
parents: 72166
diff changeset
  6261
         apply(rule rtranclp_trans)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6262
          apply(rule a_starI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6263
          apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6264
          apply(rule better_LAxL_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6265
          apply(rule fin.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6266
          apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6267
         apply(rule aux3)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6268
          apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6269
          apply(auto simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6270
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6271
         apply(simp add: nrename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6272
         apply(simp add: a_star_AndL1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6273
        apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6274
          apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6275
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6276
         apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6277
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6278
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6279
    (* AndL2 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6280
       apply(simp add: fresh_idn fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6281
       apply(case_tac "findn (idn \<Gamma> x) name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6282
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6283
        apply(simp add: a_star_AndL2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6284
       apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6285
       apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6286
       apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6287
       apply(drule idn_nmaps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6288
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6289
       apply(subgoal_tac "c\<sharp>idn \<Gamma> x,idc \<Delta> a<trm>")
80609
4b5d3d0abb69 More simplification of proofs. Trying to fix the syntax too
paulson <lp15@cam.ac.uk>
parents: 72166
diff changeset
  6290
        apply(rule rtranclp_trans)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6291
         apply(rule a_starI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6292
         apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6293
         apply(rule better_LAxL_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6294
         apply(rule fin.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6295
         apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6296
        apply(rule aux3)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6297
         apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6298
         apply(auto simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6299
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6300
        apply(simp add: nrename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6301
        apply(simp add: a_star_AndL2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6302
       apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6303
         apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6304
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6305
        apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6306
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6307
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6308
    (* OrR1 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6309
      apply(simp add: fresh_idn fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6310
      apply(case_tac "findc (idc \<Delta> a) coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6311
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6312
       apply(simp add: a_star_OrR1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6313
      apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6314
      apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6315
      apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6316
      apply(drule idc_cmaps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6317
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6318
      apply(subgoal_tac "c\<sharp>idn \<Gamma> x,idc \<Delta> a<trm>")
80609
4b5d3d0abb69 More simplification of proofs. Trying to fix the syntax too
paulson <lp15@cam.ac.uk>
parents: 72166
diff changeset
  6319
       apply(rule rtranclp_trans)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6320
        apply(rule a_starI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6321
        apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6322
        apply(rule better_LAxR_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6323
        apply(rule fic.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6324
        apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6325
       apply(rule aux3)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6326
        apply(rule crename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6327
        apply(auto simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6328
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6329
       apply(simp add: crename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6330
       apply(simp add: a_star_OrR1)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6331
      apply(rule psubst_fresh_coname)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6332
        apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6333
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6334
       apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6335
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6336
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6337
    (* OrR2 *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6338
     apply(simp add: fresh_idn fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6339
     apply(case_tac "findc (idc \<Delta> a) coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6340
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6341
      apply(simp add: a_star_OrR2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6342
     apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6343
     apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6344
     apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6345
     apply(drule idc_cmaps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6346
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6347
     apply(subgoal_tac "c\<sharp>idn \<Gamma> x,idc \<Delta> a<trm>")
80609
4b5d3d0abb69 More simplification of proofs. Trying to fix the syntax too
paulson <lp15@cam.ac.uk>
parents: 72166
diff changeset
  6348
      apply(rule rtranclp_trans)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6349
       apply(rule a_starI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6350
       apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6351
       apply(rule better_LAxR_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6352
       apply(rule fic.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6353
       apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6354
      apply(rule aux3)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6355
       apply(rule crename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6356
       apply(auto simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6357
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6358
      apply(simp add: crename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6359
      apply(simp add: a_star_OrR2)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6360
     apply(rule psubst_fresh_coname)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6361
       apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6362
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6363
      apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6364
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6365
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6366
    (* OrL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6367
    apply(simp add: fresh_idn fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6368
    apply(case_tac "findn (idn \<Gamma> x) name3")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6369
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6370
     apply(simp add: a_star_OrL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6371
    apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6372
    apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6373
    apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6374
    apply(drule idn_nmaps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6375
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6376
    apply(subgoal_tac "c\<sharp>idn \<Gamma> x,idc \<Delta> a<trm1>")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6377
     apply(subgoal_tac "c\<sharp>idn \<Gamma> x,idc \<Delta> a<trm2>")
80609
4b5d3d0abb69 More simplification of proofs. Trying to fix the syntax too
paulson <lp15@cam.ac.uk>
parents: 72166
diff changeset
  6378
      apply(rule rtranclp_trans)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6379
       apply(rule a_starI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6380
       apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6381
       apply(rule better_LAxL_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6382
       apply(rule fin.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6383
        apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6384
       apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6385
      apply(rule aux3)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6386
       apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6387
         apply(auto simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6388
         apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6389
           apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6390
           apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6391
          apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6392
          apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6393
         apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6394
        apply(auto simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6395
        apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6396
          apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6397
          apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6398
         apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6399
         apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6400
        apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6401
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6402
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6403
      apply(simp add: nrename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6404
      apply(simp add: a_star_OrL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6405
     apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6406
       apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6407
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6408
      apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6409
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6410
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6411
    apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6412
      apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6413
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6414
     apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6415
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6416
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6417
    (* ImpR *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6418
   apply(simp add: fresh_idn fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6419
   apply(case_tac "findc (idc \<Delta> a) coname2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6420
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6421
    apply(simp add: a_star_ImpR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6422
   apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6423
   apply(generate_fresh "coname")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6424
   apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6425
   apply(drule idc_cmaps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6426
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6427
   apply(subgoal_tac "c\<sharp>idn \<Gamma> x,idc \<Delta> a<trm>")
80609
4b5d3d0abb69 More simplification of proofs. Trying to fix the syntax too
paulson <lp15@cam.ac.uk>
parents: 72166
diff changeset
  6428
    apply(rule rtranclp_trans)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6429
     apply(rule a_starI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6430
     apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6431
     apply(rule better_LAxR_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6432
     apply(rule fic.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6433
     apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6434
    apply(rule aux3)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6435
     apply(rule crename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6436
     apply(auto simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6437
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6438
    apply(simp add: crename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6439
    apply(simp add: a_star_ImpR)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6440
   apply(rule psubst_fresh_coname)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6441
     apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6442
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6443
    apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6444
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6445
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6446
    (* ImpL *)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6447
  apply(simp add: fresh_idn fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6448
  apply(case_tac "findn (idn \<Gamma> x) name2")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6449
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6450
   apply(simp add: a_star_ImpL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6451
  apply(auto)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6452
  apply(generate_fresh "name")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6453
  apply(fresh_fun_simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6454
  apply(drule idn_nmaps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6455
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6456
  apply(subgoal_tac "c\<sharp>idn \<Gamma> x,idc \<Delta> a<trm1>")
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6457
   apply(subgoal_tac "c\<sharp>idn \<Gamma> x,idc \<Delta> a<trm2>")
80609
4b5d3d0abb69 More simplification of proofs. Trying to fix the syntax too
paulson <lp15@cam.ac.uk>
parents: 72166
diff changeset
  6458
    apply(rule rtranclp_trans)
72166
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6459
     apply(rule a_starI)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6460
     apply(rule al_redu)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6461
     apply(rule better_LAxL_intro)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6462
     apply(rule fin.intros)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6463
      apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6464
     apply(simp add: abs_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6465
    apply(rule aux3)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6466
     apply(rule nrename.simps)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6467
      apply(auto simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6468
      apply(rule psubst_fresh_coname)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6469
        apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6470
        apply(simp add: fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6471
       apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6472
       apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6473
      apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6474
     apply(auto simp add: fresh_prod fresh_atm)[1]
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6475
     apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6476
       apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6477
       apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6478
      apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6479
      apply(simp add: fresh_prod fresh_atm)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6480
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6481
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6482
    apply(simp add: nrename_fresh)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6483
    apply(simp add: a_star_ImpL)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6484
   apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6485
     apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6486
     apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6487
    apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6488
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6489
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6490
  apply(rule psubst_fresh_name)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6491
    apply(rule fresh_idn)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6492
    apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6493
   apply(rule fresh_idc)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6494
   apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6495
  apply(simp)
bb37571139bf fixed for new lex-order. And the effing indentation!
paulson <lp15@cam.ac.uk>
parents: 71989
diff changeset
  6496
  done
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
  6497
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
  6498
theorem ALL_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
  6499
  assumes a: "\<Gamma> \<turnstile> M \<turnstile> \<Delta>"
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
  6500
  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
  6501
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
  6502
  fix x have "(idc \<Delta> x) ccloses \<Delta>" by (simp add: ccloses_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
  6503
  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
  6504
  fix a have "(idn \<Gamma> a) ncloses \<Gamma>" by (simp add: ncloses_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
  6505
  ultimately have "SNa ((idn \<Gamma> a),(idc \<Delta> x)<M>)" using a by (simp add: all_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
  6506
  moreover
53015
a1119cf551e8 standardized symbols via "isabelle update_sub_sup", excluding src/Pure and src/Tools/WWW_Find;
wenzelm
parents: 50252
diff changeset
  6507
  have "((idn \<Gamma> a),(idc \<Delta> x)<M>) \<longrightarrow>\<^sub>a* M" by (simp add: id_redu)
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
  6508
  ultimately show "SNa M" 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
  6509
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
  6510
9be4ab2acc13 split Class.thy into parts to conserve a bit of memory and increase the chance of making it work on Cygwin with only 2 GB available;
wenzelm
parents:
diff changeset
  6511
end