Nominal/Ex/Finite_Alpha.thy
author Christian Urban <urbanc@in.tum.de>
Wed, 04 Jan 2012 17:42:16 +0000
changeset 3105 1b0d230445ce
parent 3065 51ef8a3cb6ef
permissions -rw-r--r--
added an FCB for res (will not define evry function, but is a good datapoint)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3033
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     1
theory Finite_Alpha
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     2
imports "../Nominal2"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     3
begin
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     4
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     5
lemma
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     6
  assumes "(supp x - as) \<sharp>* p"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     7
      and "p \<bullet> x = y"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     8
      and "p \<bullet> as = bs"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     9
    shows "(as, x) \<approx>set (op =) supp p (bs, y)"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    10
  using assms unfolding alphas
3065
51ef8a3cb6ef updated to lates changes in the datatype package
Christian Urban <urbanc@in.tum.de>
parents: 3033
diff changeset
    11
  apply(simp)
51ef8a3cb6ef updated to lates changes in the datatype package
Christian Urban <urbanc@in.tum.de>
parents: 3033
diff changeset
    12
  apply(clarify)
51ef8a3cb6ef updated to lates changes in the datatype package
Christian Urban <urbanc@in.tum.de>
parents: 3033
diff changeset
    13
  apply(simp only: Diff_eqvt[symmetric] supp_eqvt[symmetric])
51ef8a3cb6ef updated to lates changes in the datatype package
Christian Urban <urbanc@in.tum.de>
parents: 3033
diff changeset
    14
  apply(simp only: atom_set_perm_eq)
51ef8a3cb6ef updated to lates changes in the datatype package
Christian Urban <urbanc@in.tum.de>
parents: 3033
diff changeset
    15
  done
51ef8a3cb6ef updated to lates changes in the datatype package
Christian Urban <urbanc@in.tum.de>
parents: 3033
diff changeset
    16
3033
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    17
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    18
lemma
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    19
  assumes "(supp x - set as) \<sharp>* p"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    20
      and "p \<bullet> x = y"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    21
      and "p \<bullet> as = bs"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    22
    shows "(as, x) \<approx>lst (op =) supp p (bs, y)"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    23
  using assms unfolding alphas
3065
51ef8a3cb6ef updated to lates changes in the datatype package
Christian Urban <urbanc@in.tum.de>
parents: 3033
diff changeset
    24
  apply(simp)
51ef8a3cb6ef updated to lates changes in the datatype package
Christian Urban <urbanc@in.tum.de>
parents: 3033
diff changeset
    25
  apply(clarify)
51ef8a3cb6ef updated to lates changes in the datatype package
Christian Urban <urbanc@in.tum.de>
parents: 3033
diff changeset
    26
  apply(simp only: set_eqvt[symmetric] Diff_eqvt[symmetric] supp_eqvt[symmetric])
51ef8a3cb6ef updated to lates changes in the datatype package
Christian Urban <urbanc@in.tum.de>
parents: 3033
diff changeset
    27
  apply(simp only: atom_set_perm_eq)
51ef8a3cb6ef updated to lates changes in the datatype package
Christian Urban <urbanc@in.tum.de>
parents: 3033
diff changeset
    28
  done
3033
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    29
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    30
lemma
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    31
  assumes "(supp x - as) \<sharp>* p"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    32
      and "p \<bullet> x = y"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    33
      and "p \<bullet> (as \<inter> supp x) = bs \<inter> supp y"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    34
      and "finite (supp x)"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    35
  shows "(as, x) \<approx>res (op =) supp p (bs, y)"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    36
  using assms
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    37
  unfolding alpha_res_alpha_set
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    38
  unfolding alphas
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    39
  apply simp
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    40
  apply rule
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    41
  apply (rule trans)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    42
  apply (rule supp_perm_eq[symmetric, of _ p])
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    43
  apply (simp add: supp_finite_atom_set fresh_star_def)
3065
51ef8a3cb6ef updated to lates changes in the datatype package
Christian Urban <urbanc@in.tum.de>
parents: 3033
diff changeset
    44
  apply(auto)[1]
51ef8a3cb6ef updated to lates changes in the datatype package
Christian Urban <urbanc@in.tum.de>
parents: 3033
diff changeset
    45
  apply(simp only: Diff_eqvt inter_eqvt supp_eqvt)
3033
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    46
  apply (simp add: fresh_star_def)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    47
  apply blast
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    48
  done
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    49
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    50
lemma
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    51
  assumes "(as, x) \<approx>res (op =) supp p (bs, y)"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    52
  shows "(supp x - as) \<sharp>* p"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    53
    and "p \<bullet> (as \<inter> supp x) = bs \<inter> supp y"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    54
    and "p \<bullet> x = y"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    55
  using assms
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    56
  apply -
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    57
  prefer 3
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    58
  apply (auto simp add: alphas)[2]
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    59
  unfolding alpha_res_alpha_set
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    60
  unfolding alphas
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    61
  by blast
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    62
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    63
(* On the raw level *)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    64
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    65
atom_decl name
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    66
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    67
nominal_datatype lam =
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    68
  Var "name"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    69
| App "lam" "lam"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    70
| Lam x::"name" l::"lam"  binds x in l ("Lam [_]. _" [100, 100] 100)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    71
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    72
thm alpha_lam_raw.intros(3)[unfolded alphas, simplified]
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    73
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    74
lemma alpha_fv: "alpha_lam_raw l r \<Longrightarrow> fv_lam_raw l = fv_lam_raw r"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    75
  by (induct rule: alpha_lam_raw.induct) (simp_all add: alphas)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    76
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    77
lemma finite_fv_raw: "finite (fv_lam_raw l)"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    78
  by (induct rule: lam_raw.induct) (simp_all add: supp_at_base)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    79
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    80
lemma "(fv_lam_raw l - {atom n}) \<sharp>* p \<Longrightarrow> alpha_lam_raw (p \<bullet> l) r \<Longrightarrow>
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    81
  fv_lam_raw l - {atom n} = fv_lam_raw r - {atom (p \<bullet> n)}"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    82
  apply (rule trans)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    83
  apply (rule supp_perm_eq[symmetric])
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    84
  apply (subst supp_finite_atom_set)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    85
  apply (rule finite_Diff)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    86
  apply (rule finite_fv_raw)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    87
  apply assumption
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    88
  apply (simp add: eqvts)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    89
  apply (subst alpha_fv)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    90
  apply assumption
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    91
  apply (rule)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    92
  done
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    93
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    94
(* For the res binding *)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    95
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    96
nominal_datatype ty2 =
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    97
  Var2 "name"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    98
| Fun2 "ty2" "ty2"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    99
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   100
nominal_datatype tys2 =
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   101
  All2 xs::"name fset" ty::"ty2" binds (set+) xs in ty
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   102
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   103
lemma alpha_fv': "alpha_tys2_raw l r \<Longrightarrow> fv_tys2_raw l = fv_tys2_raw r"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   104
  by (induct rule: alpha_tys2_raw.induct) (simp_all add: alphas)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   105
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   106
lemma finite_fv_raw': "finite (fv_tys2_raw l)"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   107
  by (induct rule: tys2_raw.induct) (simp_all add: supp_at_base finite_supp)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   108
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   109
thm alpha_tys2_raw.intros[unfolded alphas, simplified]
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   110
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   111
lemma "(supp x - atom ` (fset as)) \<sharp>* p \<Longrightarrow> p \<bullet> (x :: tys2) = y \<Longrightarrow>
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   112
  p \<bullet> (atom ` (fset as) \<inter> supp x) = atom ` (fset bs) \<inter> supp y \<Longrightarrow>
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   113
  supp x - atom ` (fset as) = supp y - atom ` (fset bs)"
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   114
  apply (rule trans)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   115
  apply (rule supp_perm_eq[symmetric])
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   116
  apply (subst supp_finite_atom_set)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   117
  apply (rule finite_Diff)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   118
  apply (rule finite_supp)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   119
  apply assumption
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   120
  apply (simp add: eqvts)
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   121
  apply blast
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   122
  done
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   123
29e2df417ebe Alternate versions of alpha for finitely supported types on the raw level
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   124
end