src/HOL/BNF_Examples/Stream_Processor.thy
changeset 57641 dc59f147b27d
parent 57634 efc00b9b8680
equal deleted inserted replaced
57640:0a28cf866d5d 57641:dc59f147b27d
   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