24 | appL [simp, intro]: "s \<rightarrow>\<^sub>\<eta> t ==> s \<degree> u \<rightarrow>\<^sub>\<eta> t \<degree> u" |
24 | appL [simp, intro]: "s \<rightarrow>\<^sub>\<eta> t ==> s \<degree> u \<rightarrow>\<^sub>\<eta> t \<degree> u" |
25 | appR [simp, intro]: "s \<rightarrow>\<^sub>\<eta> t ==> u \<degree> s \<rightarrow>\<^sub>\<eta> u \<degree> t" |
25 | appR [simp, intro]: "s \<rightarrow>\<^sub>\<eta> t ==> u \<degree> s \<rightarrow>\<^sub>\<eta> u \<degree> t" |
26 | abs [simp, intro]: "s \<rightarrow>\<^sub>\<eta> t ==> Abs s \<rightarrow>\<^sub>\<eta> Abs t" |
26 | abs [simp, intro]: "s \<rightarrow>\<^sub>\<eta> t ==> Abs s \<rightarrow>\<^sub>\<eta> Abs t" |
27 |
27 |
28 abbreviation |
28 abbreviation |
29 eta_reds :: "[dB, dB] => bool" (infixl "-e>>" 50) where |
29 eta_reds :: "[dB, dB] => bool" (infixl "\<rightarrow>\<^sub>\<eta>\<^sup>*" 50) where |
30 "s -e>> t == eta^** s t" |
30 "s \<rightarrow>\<^sub>\<eta>\<^sup>* t == eta^** s t" |
31 |
31 |
32 abbreviation |
32 abbreviation |
33 eta_red0 :: "[dB, dB] => bool" (infixl "-e>=" 50) where |
33 eta_red0 :: "[dB, dB] => bool" (infixl "\<rightarrow>\<^sub>\<eta>\<^sup>=" 50) where |
34 "s -e>= t == eta^== s t" |
34 "s \<rightarrow>\<^sub>\<eta>\<^sup>= t == eta^== s t" |
35 |
|
36 notation (xsymbols) |
|
37 eta_reds (infixl "\<rightarrow>\<^sub>\<eta>\<^sup>*" 50) and |
|
38 eta_red0 (infixl "\<rightarrow>\<^sub>\<eta>\<^sup>=" 50) |
|
39 |
35 |
40 inductive_cases eta_cases [elim!]: |
36 inductive_cases eta_cases [elim!]: |
41 "Abs s \<rightarrow>\<^sub>\<eta> z" |
37 "Abs s \<rightarrow>\<^sub>\<eta> z" |
42 "s \<degree> t \<rightarrow>\<^sub>\<eta> u" |
38 "s \<degree> t \<rightarrow>\<^sub>\<eta> u" |
43 "Var i \<rightarrow>\<^sub>\<eta> t" |
39 "Var i \<rightarrow>\<^sub>\<eta> t" |