lean2/hott/homotopy/wedge.hlean

35 lines
1.1 KiB
Text

/-
Copyright (c) 2016 Jakob von Raumer. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jakob von Raumer
The Wedge Sum of Two Pointed Types
-/
import hit.pointed_pushout
open eq pushout pointed Pointed
namespace wedge
section
variables (A B : Type*)
definition Wedge : Type* := Pushout (pconst Unit A) (pconst Unit B)
-- TODO maybe find a cleaner proof
protected definition unit : A ≃* Wedge Unit A :=
begin
fconstructor,
{ fapply pmap.mk, intro a, apply pinr a, apply respect_pt },
{ fapply is_equiv.adjointify, intro x, fapply pushout.elim_on x,
exact λ x, Point A, exact id, intro u, reflexivity,
intro x, fapply pushout.rec_on x, intro u, cases u, esimp, apply (glue unit.star)⁻¹,
intro a, reflexivity,
intro u, cases u, esimp, apply eq_pathover,
refine _ ⬝hp !ap_id⁻¹, fapply eq_hconcat, apply ap_compose inr,
krewrite elim_glue, fapply eq_hconcat, apply ap_idp, apply square_of_eq,
apply con.left_inv,
intro a, reflexivity },
end
end
end wedge