theory Stream_Op_Input5 imports Stream_FreeAlg5 begin abbreviation "PLS5 ≡ \<oo>\<pp>5 o Abs_Σ5 o Inl o Abs_Σ4 o Inl o Abs_Σ3 o Inl o Abs_Σ2 o Inl o Abs_Σ1 o Inr :: 'a ΣΣ5 K1 => 'a ΣΣ5" abbreviation "PRD5 ≡ \<oo>\<pp>5 o Abs_Σ5 o Inr :: 'a ΣΣ5 K5 => 'a ΣΣ5" lemma PLS5_transfer[transfer_rule]: "(K1_rel (ΣΣ5_rel R) ===> ΣΣ5_rel R) PLS5 PLS5" by transfer_prover lemma PRD5_transfer[transfer_rule]: "(K5_rel (ΣΣ5_rel R) ===> ΣΣ5_rel R) PRD5 PRD5" by transfer_prover definition ρ5 :: "('a × 'a F) K5 => 'a ΣΣ5 F" where "ρ5 a_m_a'_b_n_b' = (let a_m_a' = fst a_m_a'_b_n_b' ; b_n_b' = snd a_m_a'_b_n_b' ; a = fst a_m_a' ; m = fst (snd a_m_a') ; a' = snd (snd a_m_a') ; b = fst b_n_b' ; n = fst (snd b_n_b') ; b' = snd (snd b_n_b') in (m * n, PRD5 (K5_as_ΣΣ5 (a,b'), PLS5 (leaf5 a', leaf5 b))))" lemma ρ5_transfer[transfer_rule]: "(K5_rel (rel_prod R (F_rel R)) ===> F_rel (ΣΣ5_rel R)) ρ5 ρ5" unfolding Let_def ρ5_def[abs_def] rel_pre_J_def id_apply vimage2p_def BNF_Comp.id_bnf_comp_def by transfer_prover end