Nominal/Ex/Let_ExhaustIssue.thy
author Christian Urban <urbanc@in.tum.de>
Wed, 04 Jan 2012 17:42:16 +0000
changeset 3105 1b0d230445ce
parent 2950 0911cb7bf696
child 3235 5ebd327ffb96
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:
2930
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     1
theory Let
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     2
imports "../Nominal2" 
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     3
begin
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     4
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     5
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     6
atom_decl name
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     7
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     8
nominal_datatype trm =
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     9
  Var "name"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    10
| App "trm" "trm"
2950
0911cb7bf696 changed bind to binds in specifications; bind will cause trouble with Monad_Syntax
Christian Urban <urbanc@in.tum.de>
parents: 2930
diff changeset
    11
| Lam x::"name" t::"trm"  binds  x in t
0911cb7bf696 changed bind to binds in specifications; bind will cause trouble with Monad_Syntax
Christian Urban <urbanc@in.tum.de>
parents: 2930
diff changeset
    12
| Let as::"assn" t::"trm"   binds "bn as" in t
2930
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    13
and assn =
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    14
  ANil
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    15
| ACons "name" "trm" "assn"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    16
binder
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    17
  bn
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    18
where
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    19
  "bn ANil = []"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    20
| "bn (ACons x t as) = (atom x) # (bn as)"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    21
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    22
lemma alpha_bn_inducts_raw:
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    23
  "\<lbrakk>alpha_bn_raw a b; P3 ANil_raw ANil_raw;
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    24
 \<And>trm_raw trm_rawa assn_raw assn_rawa name namea.
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    25
    \<lbrakk>alpha_trm_raw trm_raw trm_rawa; alpha_bn_raw assn_raw assn_rawa;
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    26
     P3 assn_raw assn_rawa\<rbrakk>
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    27
    \<Longrightarrow> P3 (ACons_raw name trm_raw assn_raw)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    28
        (ACons_raw namea trm_rawa assn_rawa)\<rbrakk> \<Longrightarrow> P3 a b"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    29
  by (erule alpha_trm_raw_alpha_assn_raw_alpha_bn_raw.inducts(3)[of _ _ "\<lambda>x y. True" _ "\<lambda>x y. True", simplified]) auto
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    30
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    31
lemmas alpha_bn_inducts = alpha_bn_inducts_raw[quot_lifted]
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    32
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    33
lemma alpha_bn_refl: "alpha_bn x x"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    34
  by (induct x rule: trm_assn.inducts(2))
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    35
     (rule TrueI, auto simp add: trm_assn.eq_iff)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    36
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    37
lemma max_eqvt[eqvt]: "p \<bullet> (max (a :: _ :: pure) b) = max (p \<bullet> a) (p \<bullet> b)"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    38
  by (simp add: permute_pure)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    39
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    40
lemma what_we_would_like:
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    41
  assumes a: "alpha_bn as asa"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    42
  shows "\<forall>p. set (bn as) \<sharp>* fv_bn as \<and> set (bn asa) \<sharp>* fv_bn asa \<and>
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    43
   p \<bullet> bn as = bn asa \<and> supp p \<subseteq> set (bn as) \<union> set (bn asa) \<longrightarrow> p \<bullet> as = asa"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    44
  apply (rule alpha_bn_inducts[OF a])
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    45
  apply
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    46
 (simp_all add: trm_assn.bn_defs trm_assn.perm_bn_simps trm_assn.supp)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    47
 apply clarify
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    48
 apply simp
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    49
 apply (simp add: atom_eqvt)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    50
 apply (case_tac "name = namea")
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    51
 sorry
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    52
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    53
lemma Abs_lst_fcb2:
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    54
  fixes as bs :: "'a :: fs"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    55
    and x y :: "'b :: fs"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    56
    and c::"'c::fs"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    57
  assumes eq: "[ba as]lst. x = [ba bs]lst. y"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    58
  and fcb1: "set (ba as) \<sharp>* f as x c"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    59
  and fresh1: "set (ba as) \<sharp>* c"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    60
  and fresh2: "set (ba bs) \<sharp>* c"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    61
  and perm1: "\<And>p. supp p \<sharp>* c \<Longrightarrow> p \<bullet> (f as x c) = f (p \<bullet> as) (p \<bullet> x) c"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    62
  and perm2: "\<And>p. supp p \<sharp>* c \<Longrightarrow> p \<bullet> (f bs y c) = f (p \<bullet> bs) (p \<bullet> y) c"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    63
  and ba_inj: "\<And>q r. q \<bullet> ba as = r \<bullet> ba bs \<Longrightarrow> q \<bullet> as = r \<bullet> bs"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    64
  shows "f as x c = f bs y c"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    65
sorry
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    66
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    67
nominal_primrec
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    68
    height_trm :: "trm \<Rightarrow> nat"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    69
and height_assn :: "assn \<Rightarrow> nat"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    70
where
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    71
  "height_trm (Var x) = 1"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    72
| "height_trm (App l r) = max (height_trm l) (height_trm r)"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    73
| "height_trm (Lam v b) = 1 + (height_trm b)"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    74
| "set (bn as) \<sharp>* fv_bn as \<Longrightarrow> height_trm (Let as b) = max (height_assn as) (height_trm b)"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    75
| "height_assn ANil = 0"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    76
| "height_assn (ACons v t as) = max (height_trm t) (height_assn as)"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    77
  apply (simp only: eqvt_def height_trm_height_assn_graph_def)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    78
  apply (rule, perm_simp, rule, rule TrueI)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    79
  apply (case_tac x)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    80
  apply (rule_tac y="a" in trm_assn.strong_exhaust(1))
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    81
  apply (auto)[4]
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    82
  apply (drule_tac x="assn" in meta_spec)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    83
  apply (drule_tac x="trm" in meta_spec)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    84
  apply (simp add: alpha_bn_refl)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    85
--"HERE"
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    86
  defer
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    87
  apply (case_tac b rule: trm_assn.exhaust(2))
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    88
  apply (auto)[2]
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    89
  apply(simp_all)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    90
  apply (erule_tac c="()" in Abs_lst_fcb2)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    91
  apply (simp_all add: pure_fresh fresh_star_def)[3]
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    92
  apply (simp add: eqvt_at_def)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    93
  apply (simp add: eqvt_at_def)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    94
  apply assumption
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    95
  apply(erule conjE)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    96
  apply (simp add: meta_eq_to_obj_eq[OF height_trm_def, symmetric, unfolded fun_eq_iff])
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    97
  apply (simp add: meta_eq_to_obj_eq[OF height_assn_def, symmetric, unfolded fun_eq_iff])
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    98
  apply (subgoal_tac "eqvt_at height_assn as")
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    99
  apply (subgoal_tac "eqvt_at height_assn asa")
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   100
  apply (subgoal_tac "eqvt_at height_trm b")
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   101
  apply (subgoal_tac "eqvt_at height_trm ba")
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   102
  apply (thin_tac "eqvt_at height_trm_height_assn_sumC (Inr as)")
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   103
  apply (thin_tac "eqvt_at height_trm_height_assn_sumC (Inr asa)")
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   104
  apply (thin_tac "eqvt_at height_trm_height_assn_sumC (Inl b)")
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   105
  apply (thin_tac "eqvt_at height_trm_height_assn_sumC (Inl ba)")
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   106
  defer
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   107
  apply (simp add: eqvt_at_def height_trm_def)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   108
  apply (simp add: eqvt_at_def height_trm_def)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   109
  apply (simp add: eqvt_at_def height_assn_def)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   110
  apply (simp add: eqvt_at_def height_assn_def)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   111
  defer
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   112
  apply (subgoal_tac "height_assn as = height_assn asa")
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   113
  apply (subgoal_tac "height_trm b = height_trm ba")
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   114
  apply simp
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   115
  apply (erule_tac c="()" in Abs_lst_fcb2)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   116
  apply (simp_all add: pure_fresh fresh_star_def)[3]
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   117
  apply (simp_all add: eqvt_at_def)[2]
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   118
  apply assumption
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   119
  apply (erule_tac Abs_lst_fcb)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   120
  apply (simp_all add: pure_fresh fresh_star_def)[2]
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   121
  apply (drule what_we_would_like)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   122
  apply (drule_tac x="p" in spec)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   123
  apply simp
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   124
  apply (simp add: eqvt_at_def)
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   125
  oops
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   126
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   127
end
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   128
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   129
1d9e50934bc5 Exhaust Issue
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
   130