\import Function
\import HLevel
\func tupleMap {A B C D : \Type} (f : A -> B) (g : C -> D) (p : \Sigma A C) : \Sigma B D \elim p
  | (a, c) => (f a, g c)
\func tupleMapProj1 {A B C D : \Type} (f : A -> B) (g : C -> D) (p : \Sigma A C) : (tupleMap f g p).1 = f p.1 \elim p
  | (_,_) => idp
\func tupleMapProj2 {A B C D : \Type} (f : A -> B) (g : C -> D) (p : \Sigma A C) : (tupleMap f g p).2 = g p.2 \elim p
  | (_,_) => idp
\func tupleMapLeft {A B C : \Type} (f : A -> B) (p : \Sigma A C) => tupleMap f id p
\func tupleMapRight {A B C : \Type} (f : B -> C) (p : \Sigma A B) => tupleMap id f p
\func tupleMapLeftProj1 {A B C : \Type} (f : A -> B) (p : \Sigma A C) => tupleMapProj1 f id p
\func tupleMapLeftProj2 {A B C : \Type} (f : A -> B) (p : \Sigma A C) => tupleMapProj2 f id p
\func tupleMapRightProj1 {A B C : \Type} (f : B -> C) (p : \Sigma A B) => tupleMapProj1 id f p
\func tupleMapRightProj2 {A B C : \Type} (f : B -> C) (p : \Sigma A B) => tupleMapProj2 id f p
\func unit-isContr : Contr (\Sigma) \cowith
  | center => ()
  | contraction _ => idp