{X Y : pType} (f : X ->* Y) : loop_susp_unit Y o* f ==* fmap loops (fmap psusp f) o* loop_susp_unit X. Proof. pointed_reduce. simple refine (Build_pHomotopy _ _); cbn. - intros x; symmetry. refine (concat_1p _@ (concat_p1 _ @ _)). refine (ap_pp (Susp_rec North South (merid o f)) (merid x) (merid (point X))^ @ _). refine ((1 @@ ap_V _ _) @ _). refine (Susp_rec_beta_merid _ @@ inverse2 (Susp_rec_beta_merid _)). - cbn. apply moveL_pV. rewrite !inv_pp, !concat_pp_p, concat_1p; symmetry. apply moveL_Vp. refine (concat_pV_inverse2 _ _ (Susp_rec_beta_merid (point X)) @ _). apply moveL_Vp, moveL_Vp. refine (ap_pp_concat_pV _ _ @ _). apply moveL_Vp, moveL_Vp. rewrite concat_p1_1, concat_1p_1. cbn; symmetry. refine (concat_p1 _ @ _). refine (ap_compose (fun p' => (ap (Susp_rec North South (merid o f))) p' @ 1) (fun p' => 1 @ p') (concat_pV (merid (point X))) @ _). apply ap. refine (ap_compose (ap (Susp_rec North South (merid o f))) (fun p' => p' @ 1) _). Qed.
Require Import Basics. Require Import Types. Require Import Pointed.Core. Require Import Pointed.Loops. Require Import Pointed.pTrunc. Require Import Pointed.pEquiv. Require Import Homotopy.Suspension. Require Import Homotopy.Freudenthal. Require Import Truncations. Require Import WildCat.