Nominal/Ex/SingleLet.thy
author Christian Urban <urbanc@in.tum.de>
Sat, 06 Nov 2010 06:18:41 +0000
changeset 2556 8ed62410236e
parent 2524 693562f03eee
child 2559 add799cf0817
permissions -rw-r--r--
added a test about subtyping; disabled two tests, because of problem with function package
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1911
60b5c61d3de2 renamed Ex1.thy to SingleLet.thy
Christian Urban <urbanc@in.tum.de>
parents: 1773
diff changeset
     1
theory SingleLet
2474
6e37bfb62474 generated inducts rule by Project_Rule.projections
Christian Urban <urbanc@in.tum.de>
parents: 2473
diff changeset
     2
imports "../Nominal2" 
1596
c69d9fb16785 Move Ex1 and Ex2 out of Test
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     3
begin
c69d9fb16785 Move Ex1 and Ex2 out of Test
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     4
c69d9fb16785 Move Ex1 and Ex2 out of Test
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     5
atom_decl name
c69d9fb16785 Move Ex1 and Ex2 out of Test
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     6
2436
3885dc2669f9 cleaned up (almost completely) the examples
Christian Urban <urbanc@in.tum.de>
parents: 2434
diff changeset
     7
declare [[STEPS = 100]]
2294
72ad4e766acf properly exported bn_descr
Christian Urban <urbanc@in.tum.de>
parents: 2293
diff changeset
     8
2475
486d4647bb37 supp-proofs work except for CoreHaskell and Modules (induct is probably not finding the correct instance)
Christian Urban <urbanc@in.tum.de>
parents: 2474
diff changeset
     9
nominal_datatype single_let: trm =
1911
60b5c61d3de2 renamed Ex1.thy to SingleLet.thy
Christian Urban <urbanc@in.tum.de>
parents: 1773
diff changeset
    10
  Var "name"
60b5c61d3de2 renamed Ex1.thy to SingleLet.thy
Christian Urban <urbanc@in.tum.de>
parents: 1773
diff changeset
    11
| App "trm" "trm"
2464
f4eba60cbd69 made the fv-definition aggree more with alpha (needed in the support proofs)
Christian Urban <urbanc@in.tum.de>
parents: 2461
diff changeset
    12
| Lam x::"name" t::"trm"  bind x in t
f4eba60cbd69 made the fv-definition aggree more with alpha (needed in the support proofs)
Christian Urban <urbanc@in.tum.de>
parents: 2461
diff changeset
    13
| Let a::"assg" t::"trm"  bind "bn a" in t
2424
621ebd8b13c4 changed parser so that the binding mode is indicated as "bind (list)", "bind (set)" or "bind (res)"; if only "bind" is given, then bind (list) is assumed as default
Christian Urban <urbanc@in.tum.de>
parents: 2410
diff changeset
    14
| Foo x::"name" y::"name" t::"trm" t1::"trm" t2::"trm" bind (set) x in y t t1 t2
2296
45a69c9cc4cc alpha works now
Christian Urban <urbanc@in.tum.de>
parents: 2295
diff changeset
    15
| Bar x::"name" y::"name" t::"trm" bind y x in t x y
2493
2e174807c891 added postprocessed fresh-lemmas for constructors
Christian Urban <urbanc@in.tum.de>
parents: 2492
diff changeset
    16
| Baz x::"name" t1::"trm" t2::"trm" bind (set) x in t1, bind (res) x in t2 
1911
60b5c61d3de2 renamed Ex1.thy to SingleLet.thy
Christian Urban <urbanc@in.tum.de>
parents: 1773
diff changeset
    17
and assg =
2320
d835a2771608 prove that alpha implies alpha_bn (needed for rsp proofs)
Christian Urban <urbanc@in.tum.de>
parents: 2318
diff changeset
    18
  As "name" x::"name" t::"trm" bind x in t
1596
c69d9fb16785 Move Ex1 and Ex2 out of Test
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    19
binder
2464
f4eba60cbd69 made the fv-definition aggree more with alpha (needed in the support proofs)
Christian Urban <urbanc@in.tum.de>
parents: 2461
diff changeset
    20
  bn::"assg \<Rightarrow> atom list"
1596
c69d9fb16785 Move Ex1 and Ex2 out of Test
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    21
where
2464
f4eba60cbd69 made the fv-definition aggree more with alpha (needed in the support proofs)
Christian Urban <urbanc@in.tum.de>
parents: 2461
diff changeset
    22
  "bn (As x y t) = [atom x]"
1911
60b5c61d3de2 renamed Ex1.thy to SingleLet.thy
Christian Urban <urbanc@in.tum.de>
parents: 1773
diff changeset
    23
2436
3885dc2669f9 cleaned up (almost completely) the examples
Christian Urban <urbanc@in.tum.de>
parents: 2434
diff changeset
    24
thm single_let.distinct
3885dc2669f9 cleaned up (almost completely) the examples
Christian Urban <urbanc@in.tum.de>
parents: 2434
diff changeset
    25
thm single_let.induct
2474
6e37bfb62474 generated inducts rule by Project_Rule.projections
Christian Urban <urbanc@in.tum.de>
parents: 2473
diff changeset
    26
thm single_let.inducts
2509
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    27
thm single_let.exhaust[no_vars]
2436
3885dc2669f9 cleaned up (almost completely) the examples
Christian Urban <urbanc@in.tum.de>
parents: 2434
diff changeset
    28
thm single_let.fv_defs
3885dc2669f9 cleaned up (almost completely) the examples
Christian Urban <urbanc@in.tum.de>
parents: 2434
diff changeset
    29
thm single_let.bn_defs
3885dc2669f9 cleaned up (almost completely) the examples
Christian Urban <urbanc@in.tum.de>
parents: 2434
diff changeset
    30
thm single_let.perm_simps
3885dc2669f9 cleaned up (almost completely) the examples
Christian Urban <urbanc@in.tum.de>
parents: 2434
diff changeset
    31
thm single_let.eq_iff
3885dc2669f9 cleaned up (almost completely) the examples
Christian Urban <urbanc@in.tum.de>
parents: 2434
diff changeset
    32
thm single_let.fv_bn_eqvt
3885dc2669f9 cleaned up (almost completely) the examples
Christian Urban <urbanc@in.tum.de>
parents: 2434
diff changeset
    33
thm single_let.size_eqvt
2448
b9d9c4540265 proved supports lemmas
Christian Urban <urbanc@in.tum.de>
parents: 2436
diff changeset
    34
thm single_let.supports
2450
217ef3e4282e added proofs for fsupp properties
Christian Urban <urbanc@in.tum.de>
parents: 2449
diff changeset
    35
thm single_let.fsupp
2475
486d4647bb37 supp-proofs work except for CoreHaskell and Modules (induct is probably not finding the correct instance)
Christian Urban <urbanc@in.tum.de>
parents: 2474
diff changeset
    36
thm single_let.supp
2493
2e174807c891 added postprocessed fresh-lemmas for constructors
Christian Urban <urbanc@in.tum.de>
parents: 2492
diff changeset
    37
thm single_let.fresh
2461
86028b2016bd some experiments with support
Christian Urban <urbanc@in.tum.de>
parents: 2454
diff changeset
    38
2509
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    39
primrec
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    40
  permute_bn_raw
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    41
where
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    42
  "permute_bn_raw p (As_raw x y t) = As_raw (p \<bullet> x) y t"
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    43
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    44
quotient_definition
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    45
  "permute_bn :: perm \<Rightarrow> assg \<Rightarrow> assg"
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    46
is
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    47
  "permute_bn_raw"
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    48
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    49
lemma [quot_respect]:
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    50
  shows "((op =) ===> alpha_assg_raw ===> alpha_assg_raw) permute_bn_raw permute_bn_raw"
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    51
  apply simp
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    52
  apply clarify
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    53
  apply (erule alpha_trm_raw_alpha_assg_raw_alpha_bn_raw.inducts)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    54
  apply (rule TrueI)+
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    55
  apply simp_all
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    56
  apply (rule_tac [!] alpha_trm_raw_alpha_assg_raw_alpha_bn_raw.intros)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    57
  apply simp_all
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    58
  done
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    59
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    60
lemmas permute_bn = permute_bn_raw.simps[quot_lifted]
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    61
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    62
lemma uu:
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    63
  shows "alpha_bn as (permute_bn p as)"
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    64
apply(induct as rule: single_let.inducts(2))
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    65
apply(auto)[7]
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    66
apply(simp add: permute_bn)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    67
apply(simp add: single_let.eq_iff)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    68
done
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    69
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    70
lemma tt:
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    71
  shows "(p \<bullet> bn as) = bn (permute_bn p as)"
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    72
apply(induct as rule: single_let.inducts(2))
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    73
apply(auto)[7]
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    74
apply(simp add: permute_bn single_let.bn_defs)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    75
apply(simp add: atom_eqvt)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    76
done
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    77
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    78
lemma Abs_fresh_star':
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    79
  fixes x::"'a::fs"
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    80
  shows  "set bs = as \<Longrightarrow> as \<sharp>* Abs_lst bs x"
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    81
  unfolding fresh_star_def
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    82
  by(simp_all add: Abs_fresh_iff)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    83
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    84
lemma strong_exhaust:
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    85
  fixes c::"'a::fs"
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    86
  assumes "\<And>name. y = Var name \<Longrightarrow> P" 
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    87
  and "\<And>trm1 trm2. y = App trm1 trm2 \<Longrightarrow> P" 
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    88
  and "\<And>name trm. \<lbrakk>{atom name} \<sharp>* c; y = Lam name trm\<rbrakk> \<Longrightarrow> P"
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    89
  and "\<And>assg trm. \<lbrakk>set (bn assg) \<sharp>* c; y = Let assg trm\<rbrakk> \<Longrightarrow> P"
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    90
  and "\<And>name1 name2 trm1 trm2 trm3. \<lbrakk>{atom name1} \<sharp>* c; y = Foo name1 name2 trm1 trm2 trm3\<rbrakk> \<Longrightarrow> P"
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    91
  and "\<And>name1 name2 trm. \<lbrakk>{atom name1, atom name2} \<sharp>* c; y = Bar name1 name2 trm\<rbrakk> \<Longrightarrow> P" 
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    92
  and "\<And>name trm1 trm2. \<lbrakk>{atom name} \<sharp>* c; y = Baz name trm1 trm2\<rbrakk> \<Longrightarrow> P"
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    93
  shows "P"
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    94
  apply(rule_tac y="y" in single_let.exhaust(1))
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    95
  apply(rule assms(1))
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    96
  apply(assumption)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    97
  apply(rule assms(2))
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    98
  apply(assumption)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
    99
  apply(subgoal_tac "\<exists>q. (q \<bullet> {atom name}) \<sharp>* c \<and> supp ([[atom name]]lst.trm) \<sharp>* q")
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   100
  apply(erule exE)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   101
  apply(erule conjE)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   102
  apply(perm_simp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   103
  apply(rule assms(3))
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   104
  apply(assumption)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   105
  apply(drule supp_perm_eq[symmetric])
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   106
  apply(simp add: single_let.eq_iff)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   107
  apply(perm_simp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   108
  apply(rule refl)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   109
  apply(rule at_set_avoiding2)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   110
  apply(simp add: finite_supp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   111
  apply(simp add: finite_supp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   112
  apply(simp add: finite_supp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   113
  apply(simp add: Abs_fresh_star')
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   114
  apply(subgoal_tac "\<exists>q. (q \<bullet> (set (bn assg))) \<sharp>* (c::'a::fs) \<and> supp ([bn assg]lst.trm) \<sharp>* q")
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   115
  apply(erule exE)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   116
  apply(erule conjE)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   117
  apply(perm_simp add: tt)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   118
  apply(rule_tac assms(4))
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   119
  apply(assumption)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   120
  apply(drule supp_perm_eq[symmetric])
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   121
  apply(simp add: single_let.eq_iff)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   122
  apply(simp add: tt uu)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   123
  apply(rule at_set_avoiding2)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   124
  apply(simp add: finite_supp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   125
  apply(simp add: finite_supp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   126
  apply(simp add: finite_supp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   127
  apply(simp add: Abs_fresh_star)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   128
  apply(subgoal_tac "\<exists>q. (q \<bullet> {atom name1}) \<sharp>* (c::'a::fs) \<and> 
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   129
    supp ([{atom name1}]set.(((name2, trm1), trm2), trm3)) \<sharp>* q")
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   130
  apply(erule exE)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   131
  apply(erule conjE)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   132
  apply(perm_simp add: tt)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   133
  apply(rule_tac assms(5))
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   134
  apply(assumption)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   135
  apply(drule supp_perm_eq[symmetric])
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   136
  apply(simp add: single_let.eq_iff)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   137
  apply(perm_simp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   138
  apply(rule refl)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   139
  apply(rule at_set_avoiding2)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   140
  apply(simp add: finite_supp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   141
  apply(simp add: finite_supp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   142
  apply(simp add: finite_supp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   143
  apply(simp add: Abs_fresh_star)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   144
  apply(subgoal_tac "\<exists>q. (q \<bullet> {atom name1, atom name2}) \<sharp>* (c::'a::fs) \<and> 
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   145
    supp ([[atom name2, atom name1]]lst.((trm, name1), name2)) \<sharp>* q")
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   146
  apply(erule exE)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   147
  apply(erule conjE)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   148
  apply(perm_simp add: tt)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   149
  apply(rule_tac assms(6))
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   150
  apply(assumption)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   151
  apply(drule supp_perm_eq[symmetric])
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   152
  apply(simp add: single_let.eq_iff)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   153
  apply(perm_simp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   154
  apply(rule refl)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   155
  apply(rule at_set_avoiding2)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   156
  apply(simp add: finite_supp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   157
  apply(simp add: finite_supp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   158
  apply(simp add: finite_supp)
679cef364022 llncs and more sqeezing
Christian Urban <urbanc@in.tum.de>
parents: 2493
diff changeset
   159
  oops
2524
693562f03eee major reorganisation of fset (renamed fset_to_set to fset, changed the definition of list_eq and fcard_raw)
Christian Urban <urbanc@in.tum.de>
parents: 2509
diff changeset
   160
2064
2725853f43b9 solved the problem with equivariance by first eta-normalising the goal
Christian Urban <urbanc@in.tum.de>
parents: 2028
diff changeset
   161
1596
c69d9fb16785 Move Ex1 and Ex2 out of Test
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   162
end
c69d9fb16785 Move Ex1 and Ex2 out of Test
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   163
c69d9fb16785 Move Ex1 and Ex2 out of Test
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   164
c69d9fb16785 Move Ex1 and Ex2 out of Test
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   165