equal
deleted
inserted
replaced
150 |
150 |
151 section {* Generalization to an Arbitrary BNF as Codomain *} |
151 section {* Generalization to an Arbitrary BNF as Codomain *} |
152 |
152 |
153 bnf_axiomatization ('a, 'b) F for map: F |
153 bnf_axiomatization ('a, 'b) F for map: F |
154 |
154 |
155 notation BNF_Def.convol ("<_ , _>") |
155 notation BNF_Def.convol ("\<langle>(_,/ _)\<rangle>") |
156 |
156 |
157 definition \<theta> :: "('p,'a) F * 'b \<Rightarrow> ('p,'a * 'b) F" where |
157 definition \<theta> :: "('p,'a) F * 'b \<Rightarrow> ('p,'a * 'b) F" where |
158 "\<theta> xb = F id <id, \<lambda> a. (snd xb)> (fst xb)" |
158 "\<theta> xb = F id \<langle>id, \<lambda> a. (snd xb)\<rangle> (fst xb)" |
159 |
159 |
160 (* The strength laws for \<theta>: *) |
160 (* The strength laws for \<theta>: *) |
161 lemma \<theta>_natural: "F id (map_prod f g) o \<theta> = \<theta> o map_prod (F id f) g" |
161 lemma \<theta>_natural: "F id (map_prod f g) o \<theta> = \<theta> o map_prod (F id f) g" |
162 unfolding \<theta>_def F.map_comp comp_def id_apply convol_def map_prod_def split_beta fst_conv snd_conv .. |
162 unfolding \<theta>_def F.map_comp comp_def id_apply convol_def map_prod_def split_beta fst_conv snd_conv .. |
163 |
163 |