module Cubical.Data.Sum.More where

open import Cubical.Foundations.Prelude
open import Cubical.Foundations.Function
open import Cubical.Data.Sum

private
  variable
     ℓ' : Level
    A B C D E F : Type 

rec-l : (A  B)  A  B  B
rec-l f = rec f (idfun _)

rec-r : (A  B)  B  A  B
rec-r f = rec (idfun _) f

map-l : (A  B)  A  C  B  C
map-l f = map f (idfun _)

map-r : (A  B)  C  A  C  B
map-r f = map (idfun _) f

map-id :
  map {}{A}{}{A}{}{B} (idfun _) (idfun _)  (idfun _)
map-id i (inl x) = inl x
map-id i (inr x) = inr x

map-seq : {f : A  B}{f' : B  C}{g : D  E}{g' : E  F} 
  map (f' ∘S f) (g' ∘S g)  (map f' g') ∘S (map f g)
map-seq {f = f}{f'} i (inl x) = inl (f' (f x))
map-seq {g = g}{g'} i (inr x) = inr (g' (g x))