feat(connectedness): is_conn_map -> is_conn_fun, and unbundle the P in elimination principles
This commit is contained in:
parent
1e10810a1e
commit
003c11c917
3 changed files with 53 additions and 54 deletions
|
@ -21,7 +21,7 @@ namespace homotopy
|
||||||
assumption
|
assumption
|
||||||
end
|
end
|
||||||
|
|
||||||
definition is_conn_map [reducible] (n : ℕ₋₂) {A B : Type} (f : A → B) : Type :=
|
definition is_conn_fun [reducible] (n : ℕ₋₂) {A B : Type} (f : A → B) : Type :=
|
||||||
Πb : B, is_conn n (fiber f b)
|
Πb : B, is_conn n (fiber f b)
|
||||||
|
|
||||||
theorem is_conn_of_le (A : Type) {n k : ℕ₋₂} (H : n ≤ k) [is_conn k A] : is_conn n A :=
|
theorem is_conn_of_le (A : Type) {n k : ℕ₋₂} (H : n ≤ k) [is_conn k A] : is_conn n A :=
|
||||||
|
@ -30,14 +30,14 @@ namespace homotopy
|
||||||
apply trunc_trunc_equiv_left _ n k H
|
apply trunc_trunc_equiv_left _ n k H
|
||||||
end
|
end
|
||||||
|
|
||||||
theorem is_conn_map_of_le {A B : Type} (f : A → B) {n k : ℕ₋₂} (H : n ≤ k)
|
theorem is_conn_fun_of_le {A B : Type} (f : A → B) {n k : ℕ₋₂} (H : n ≤ k)
|
||||||
[is_conn_map k f] : is_conn_map n f :=
|
[is_conn_fun k f] : is_conn_fun n f :=
|
||||||
λb, is_conn_of_le _ H
|
λb, is_conn_of_le _ H
|
||||||
|
|
||||||
namespace is_conn_map
|
namespace is_conn_fun
|
||||||
section
|
section
|
||||||
parameters {n : ℕ₋₂} {A B : Type} {h : A → B}
|
parameters (n : ℕ₋₂) {A B : Type} {h : A → B}
|
||||||
(H : is_conn_map n h) (P : B → n -Type)
|
(H : is_conn_fun n h) (P : B → Type) [Πb, is_trunc n (P b)]
|
||||||
|
|
||||||
private definition rec.helper : (Πa : A, P (h a)) → Πb : B, trunc n (fiber h b) → P b :=
|
private definition rec.helper : (Πa : A, P (h a)) → Πb : B, trunc n (fiber h b) → P b :=
|
||||||
λt b, trunc.rec (λx, point_eq x ▸ t (point x))
|
λt b, trunc.rec (λx, point_eq x ▸ t (point x))
|
||||||
|
@ -67,16 +67,16 @@ namespace homotopy
|
||||||
end
|
end
|
||||||
|
|
||||||
section
|
section
|
||||||
parameters {n k : ℕ₋₂} {A B : Type} {f : A → B}
|
parameters (n k : ℕ₋₂) {A B : Type} {f : A → B}
|
||||||
(H : is_conn_map n f) (P : B → (n +2+ k)-Type)
|
(H : is_conn_fun n f) (P : B → Type) [HP : Πb, is_trunc (n +2+ k) (P b)]
|
||||||
|
|
||||||
include H
|
include H HP
|
||||||
-- Lemma 8.6.1
|
-- Lemma 8.6.1
|
||||||
proposition elim_general : is_trunc_fun k (pi_functor_left f P) :=
|
proposition elim_general : is_trunc_fun k (pi_functor_left f P) :=
|
||||||
begin
|
begin
|
||||||
intro t,
|
revert P HP,
|
||||||
induction k with k IH,
|
induction k with k IH: intro P HP t,
|
||||||
{ apply is_contr_fiber_of_is_equiv, apply is_conn_map.rec, exact H },
|
{ apply is_contr_fiber_of_is_equiv, apply is_conn_fun.rec, exact H, exact HP},
|
||||||
{ apply is_trunc_succ_intro,
|
{ apply is_trunc_succ_intro,
|
||||||
intros x y, cases x with g p, cases y with h q,
|
intros x y, cases x with g p, cases y with h q,
|
||||||
have e : fiber (λr : g ~ h, (λa, r (f a))) (apd10 (p ⬝ q⁻¹))
|
have e : fiber (λr : g ~ h, (λa, r (f a))) (apd10 (p ⬝ q⁻¹))
|
||||||
|
@ -104,16 +104,14 @@ namespace homotopy
|
||||||
apply eq_equiv_eq_symm
|
apply eq_equiv_eq_symm
|
||||||
end,
|
end,
|
||||||
apply @is_trunc_equiv_closed _ _ k e, clear e,
|
apply @is_trunc_equiv_closed _ _ k e, clear e,
|
||||||
apply IH (λb : B, trunctype.mk (g b = h b)
|
apply IH (λb : B, (g b = h b)) (λb, @is_trunc_eq (P b) (n +2+ k) (HP b) (g b) (h b))}
|
||||||
(@is_trunc_eq (P b) (n +2+ k) (trunctype.struct (P b))
|
|
||||||
(g b) (h b))) }
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
section
|
section
|
||||||
universe variables u v
|
universe variables u v
|
||||||
parameters {n : ℕ₋₂} {A : Type.{u}} {B : Type.{v}} {h : A → B}
|
parameters (n : ℕ₋₂) {A : Type.{u}} {B : Type.{v}} {h : A → B}
|
||||||
parameter sec : ΠP : B → trunctype.{max u v} n,
|
parameter sec : ΠP : B → trunctype.{max u v} n,
|
||||||
is_retraction (λs : (Πb : B, P b), λ a, s (h a))
|
is_retraction (λs : (Πb : B, P b), λ a, s (h a))
|
||||||
|
|
||||||
|
@ -122,7 +120,7 @@ namespace homotopy
|
||||||
include sec
|
include sec
|
||||||
|
|
||||||
-- the other half of Lemma 7.5.7
|
-- the other half of Lemma 7.5.7
|
||||||
definition intro : is_conn_map n h :=
|
definition intro : is_conn_fun n h :=
|
||||||
begin
|
begin
|
||||||
intro b,
|
intro b,
|
||||||
apply is_contr.mk (@is_retraction.sect _ _ _ s (λa, tr (fiber.mk a idp)) b),
|
apply is_contr.mk (@is_retraction.sect _ _ _ s (λa, tr (fiber.mk a idp)) b),
|
||||||
|
@ -134,22 +132,22 @@ namespace homotopy
|
||||||
exact apd10 (@right_inverse _ _ _ s (λa, tr (fiber.mk a idp))) a
|
exact apd10 (@right_inverse _ _ _ s (λa, tr (fiber.mk a idp))) a
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end is_conn_map
|
end is_conn_fun
|
||||||
|
|
||||||
-- Connectedness is related to maps to and from the unit type, first to
|
-- Connectedness is related to maps to and from the unit type, first to
|
||||||
section
|
section
|
||||||
parameters (n : ℕ₋₂) (A : Type)
|
parameters (n : ℕ₋₂) (A : Type)
|
||||||
|
|
||||||
definition is_conn_of_map_to_unit
|
definition is_conn_of_map_to_unit
|
||||||
: is_conn_map n (const A unit.star) → is_conn n A :=
|
: is_conn_fun n (const A unit.star) → is_conn n A :=
|
||||||
begin
|
begin
|
||||||
intro H, unfold is_conn_map at H,
|
intro H, unfold is_conn_fun at H,
|
||||||
rewrite [-(ua (fiber.fiber_star_equiv A))],
|
rewrite [-(ua (fiber.fiber_star_equiv A))],
|
||||||
exact (H unit.star)
|
exact (H unit.star)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- now maps from unit
|
-- now maps from unit
|
||||||
definition is_conn_of_map_from_unit (a₀ : A) (H : is_conn_map n (const unit a₀))
|
definition is_conn_of_map_from_unit (a₀ : A) (H : is_conn_fun n (const unit a₀))
|
||||||
: is_conn n .+1 A :=
|
: is_conn n .+1 A :=
|
||||||
is_contr.mk (tr a₀)
|
is_contr.mk (tr a₀)
|
||||||
begin
|
begin
|
||||||
|
@ -158,8 +156,8 @@ namespace homotopy
|
||||||
(@center _ (H a))
|
(@center _ (H a))
|
||||||
end
|
end
|
||||||
|
|
||||||
definition is_conn_map_from_unit (a₀ : A) [H : is_conn n .+1 A]
|
definition is_conn_fun_from_unit (a₀ : A) [H : is_conn n .+1 A]
|
||||||
: is_conn_map n (const unit a₀) :=
|
: is_conn_fun n (const unit a₀) :=
|
||||||
begin
|
begin
|
||||||
intro a,
|
intro a,
|
||||||
apply is_conn_equiv_closed n (equiv.symm (fiber_const_equiv A a₀ a)),
|
apply is_conn_equiv_closed n (equiv.symm (fiber_const_equiv A a₀ a)),
|
||||||
|
@ -172,15 +170,15 @@ namespace homotopy
|
||||||
namespace is_conn
|
namespace is_conn
|
||||||
open pointed unit
|
open pointed unit
|
||||||
section
|
section
|
||||||
parameters {n : ℕ₋₂} {A : Type*}
|
parameters (n : ℕ₋₂) {A : Type*}
|
||||||
[H : is_conn n .+1 A] (P : A → n-Type)
|
[H : is_conn n .+1 A] (P : A → Type) [Πa, is_trunc n (P a)]
|
||||||
|
|
||||||
include H
|
include H
|
||||||
protected definition rec : is_equiv (λs : Πa : A, P a, s (Point A)) :=
|
protected definition rec : is_equiv (λs : Πa : A, P a, s (Point A)) :=
|
||||||
@is_equiv_compose
|
@is_equiv_compose
|
||||||
(Πa : A, P a) (unit → P (Point A)) (P (Point A))
|
(Πa : A, P a) (unit → P (Point A)) (P (Point A))
|
||||||
(λs x, s (Point A)) (λf, f unit.star)
|
(λs x, s (Point A)) (λf, f unit.star)
|
||||||
(is_conn_map.rec (is_conn_map_from_unit n A (Point A)) P)
|
(is_conn_fun.rec n (is_conn_fun_from_unit n A (Point A)) P)
|
||||||
(to_is_equiv (arrow_unit_left (P (Point A))))
|
(to_is_equiv (arrow_unit_left (P (Point A))))
|
||||||
|
|
||||||
protected definition elim : P (Point A) → (Πa : A, P a) :=
|
protected definition elim : P (Point A) → (Πa : A, P a) :=
|
||||||
|
@ -191,8 +189,8 @@ namespace homotopy
|
||||||
end
|
end
|
||||||
|
|
||||||
section
|
section
|
||||||
parameters {n k : ℕ₋₂} {A : Type*}
|
parameters (n k : ℕ₋₂) {A : Type*}
|
||||||
[H : is_conn n .+1 A] (P : A → (n +2+ k)-Type)
|
[H : is_conn n .+1 A] (P : A → Type) [Πa, is_trunc (n +2+ k) (P a)]
|
||||||
|
|
||||||
include H
|
include H
|
||||||
proposition elim_general (p : P (Point A))
|
proposition elim_general (p : P (Point A))
|
||||||
|
@ -202,20 +200,20 @@ namespace homotopy
|
||||||
(fiber (λs, s (Point A)) p)
|
(fiber (λs, s (Point A)) p)
|
||||||
k
|
k
|
||||||
(equiv.symm (fiber.equiv_postcompose (to_fun (arrow_unit_left (P (Point A))))))
|
(equiv.symm (fiber.equiv_postcompose (to_fun (arrow_unit_left (P (Point A))))))
|
||||||
(is_conn_map.elim_general (is_conn_map_from_unit n A (Point A)) P (λx, p))
|
(is_conn_fun.elim_general n k (is_conn_fun_from_unit n A (Point A)) P (λx, p))
|
||||||
end
|
end
|
||||||
end is_conn
|
end is_conn
|
||||||
|
|
||||||
-- Lemma 7.5.2
|
-- Lemma 7.5.2
|
||||||
definition minus_one_conn_of_surjective {A B : Type} (f : A → B)
|
definition minus_one_conn_of_surjective {A B : Type} (f : A → B)
|
||||||
: is_surjective f → is_conn_map -1 f :=
|
: is_surjective f → is_conn_fun -1 f :=
|
||||||
begin
|
begin
|
||||||
intro H, intro b,
|
intro H, intro b,
|
||||||
exact @is_contr_of_inhabited_prop (∥fiber f b∥) (is_trunc_trunc -1 (fiber f b)) (H b),
|
exact @is_contr_of_inhabited_prop (∥fiber f b∥) (is_trunc_trunc -1 (fiber f b)) (H b),
|
||||||
end
|
end
|
||||||
|
|
||||||
definition is_surjection_of_minus_one_conn {A B : Type} (f : A → B)
|
definition is_surjection_of_minus_one_conn {A B : Type} (f : A → B)
|
||||||
: is_conn_map -1 f → is_surjective f :=
|
: is_conn_fun -1 f → is_surjective f :=
|
||||||
begin
|
begin
|
||||||
intro H, intro b,
|
intro H, intro b,
|
||||||
exact @center (∥fiber f b∥) (H b),
|
exact @center (∥fiber f b∥) (H b),
|
||||||
|
@ -234,7 +232,7 @@ namespace homotopy
|
||||||
|
|
||||||
-- Lemma 7.5.4
|
-- Lemma 7.5.4
|
||||||
definition retract_of_conn_is_conn [instance] (r : arrow_hom f g) [H : is_retraction r]
|
definition retract_of_conn_is_conn [instance] (r : arrow_hom f g) [H : is_retraction r]
|
||||||
(n : ℕ₋₂) [K : is_conn_map n f] : is_conn_map n g :=
|
(n : ℕ₋₂) [K : is_conn_fun n f] : is_conn_fun n g :=
|
||||||
begin
|
begin
|
||||||
intro b, unfold is_conn,
|
intro b, unfold is_conn,
|
||||||
apply is_contr_retract (trunc_functor n (retraction_on_fiber r b)),
|
apply is_contr_retract (trunc_functor n (retraction_on_fiber r b)),
|
||||||
|
@ -245,7 +243,7 @@ namespace homotopy
|
||||||
|
|
||||||
-- Corollary 7.5.5
|
-- Corollary 7.5.5
|
||||||
definition is_conn_homotopy (n : ℕ₋₂) {A B : Type} {f g : A → B}
|
definition is_conn_homotopy (n : ℕ₋₂) {A B : Type} {f g : A → B}
|
||||||
(p : f ~ g) (H : is_conn_map n f) : is_conn_map n g :=
|
(p : f ~ g) (H : is_conn_fun n f) : is_conn_fun n g :=
|
||||||
@retract_of_conn_is_conn _ _ (arrow.arrow_hom_of_homotopy p) (arrow.is_retraction_arrow_hom_of_homotopy p) n H
|
@retract_of_conn_is_conn _ _ (arrow.arrow_hom_of_homotopy p) (arrow.is_retraction_arrow_hom_of_homotopy p) n H
|
||||||
|
|
||||||
-- all types are -2-connected
|
-- all types are -2-connected
|
||||||
|
@ -274,8 +272,8 @@ namespace homotopy
|
||||||
{ intros H,
|
{ intros H,
|
||||||
change ap (@tr n .+2 (susp A)) (merid a) = ap tr (merid a'),
|
change ap (@tr n .+2 (susp A)) (merid a) = ap tr (merid a'),
|
||||||
generalize a',
|
generalize a',
|
||||||
apply is_conn_map.elim
|
apply is_conn_fun.elim n
|
||||||
(is_conn_map_from_unit n A a)
|
(is_conn_fun_from_unit n A a)
|
||||||
(λx : A, trunctype.mk' n (ap (@tr n .+2 (susp A)) (merid a) = ap tr (merid x))),
|
(λx : A, trunctype.mk' n (ap (@tr n .+2 (susp A)) (merid a) = ap tr (merid x))),
|
||||||
intros,
|
intros,
|
||||||
change ap (@tr n .+2 (susp A)) (merid a) = ap tr (merid a),
|
change ap (@tr n .+2 (susp A)) (merid a) = ap tr (merid a),
|
||||||
|
@ -285,8 +283,8 @@ namespace homotopy
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Lemma 7.5.14
|
-- Lemma 7.5.14
|
||||||
theorem is_equiv_trunc_functor_of_is_conn_map {A B : Type} (n : ℕ₋₂) (f : A → B)
|
theorem is_equiv_trunc_functor_of_is_conn_fun {A B : Type} (n : ℕ₋₂) (f : A → B)
|
||||||
[H : is_conn_map n f] : is_equiv (trunc_functor n f) :=
|
[H : is_conn_fun n f] : is_equiv (trunc_functor n f) :=
|
||||||
begin
|
begin
|
||||||
fapply adjointify,
|
fapply adjointify,
|
||||||
{ intro b, induction b with b, exact trunc_functor n point (center (trunc n (fiber f b)))},
|
{ intro b, induction b with b, exact trunc_functor n point (center (trunc n (fiber f b)))},
|
||||||
|
@ -295,9 +293,9 @@ namespace homotopy
|
||||||
{ intro a, induction a with a, esimp, rewrite [center_eq (tr (fiber.mk a idp))]}
|
{ intro a, induction a with a, esimp, rewrite [center_eq (tr (fiber.mk a idp))]}
|
||||||
end
|
end
|
||||||
|
|
||||||
theorem trunc_equiv_trunc_of_is_conn_map {A B : Type} (n : ℕ₋₂) (f : A → B)
|
theorem trunc_equiv_trunc_of_is_conn_fun {A B : Type} (n : ℕ₋₂) (f : A → B)
|
||||||
[H : is_conn_map n f] : trunc n A ≃ trunc n B :=
|
[H : is_conn_fun n f] : trunc n A ≃ trunc n B :=
|
||||||
equiv.mk (trunc_functor n f) (is_equiv_trunc_functor_of_is_conn_map n f)
|
equiv.mk (trunc_functor n f) (is_equiv_trunc_functor_of_is_conn_fun n f)
|
||||||
|
|
||||||
open trunc_index pointed sphere.ops
|
open trunc_index pointed sphere.ops
|
||||||
-- Corollary 8.2.2
|
-- Corollary 8.2.2
|
||||||
|
|
|
@ -39,13 +39,12 @@ namespace is_trunc
|
||||||
cases n with n,
|
cases n with n,
|
||||||
{ exfalso, apply not_lt_zero, exact H},
|
{ exfalso, apply not_lt_zero, exact H},
|
||||||
{ have H2 : k ≤ n, from le_of_lt_succ H,
|
{ have H2 : k ≤ n, from le_of_lt_succ H,
|
||||||
apply @(trivial_homotopy_group_of_is_conn _ H2),
|
apply @(trivial_homotopy_group_of_is_conn _ H2)}
|
||||||
rewrite [-trunc_index.of_sphere_index_of_nat, -trunc_index.succ_sub_one], apply is_conn_sphere}
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
theorem is_contr_HG_fiber_of_is_connected {A B : Type*} (k n : ℕ) (f : A →* B)
|
theorem is_contr_HG_fiber_of_is_connected {A B : Type*} (k n : ℕ) (f : A →* B)
|
||||||
[H : is_conn_map n f] (H2 : k ≤ n) : is_contr (π[k] (pfiber f)) :=
|
[H : is_conn_fun n f] (H2 : k ≤ n) : is_contr (π[k] (pfiber f)) :=
|
||||||
@(trivial_homotopy_group_of_is_conn (pfiber f) H2) (H pt)
|
@(trivial_homotopy_group_of_is_conn (pfiber f) H2) (H pt)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -36,22 +36,24 @@ section
|
||||||
-- The wedge connectivity lemma (Lemma 8.6.2)
|
-- The wedge connectivity lemma (Lemma 8.6.2)
|
||||||
parameters {A B : Type*} (n m : ℕ)
|
parameters {A B : Type*} (n m : ℕ)
|
||||||
[cA : is_conn n A] [cB : is_conn m B]
|
[cA : is_conn n A] [cB : is_conn m B]
|
||||||
(P : A → B → (m + n)-Type)
|
(P : A → B → Type) [HP : Πa b, is_trunc (m + n) (P a b)]
|
||||||
(f : Πa : A, P a pt)
|
(f : Πa : A, P a pt)
|
||||||
(g : Πb : B, P pt b)
|
(g : Πb : B, P pt b)
|
||||||
(p : f pt = g pt)
|
(p : f pt = g pt)
|
||||||
|
|
||||||
include cA cB
|
include cA cB HP
|
||||||
private definition Q (a : A) : (n.-1)-Type :=
|
private definition Q (a : A) : Type :=
|
||||||
trunctype.mk
|
fiber (λs : (Πb : B, P a b), s (Point B)) (f a)
|
||||||
(fiber (λs : (Πb : B, P a b), s (Point B)) (f a))
|
|
||||||
abstract begin
|
|
||||||
refine @is_conn.elim_general (m.-1) _ _ _ (λb, trunctype.mk (P a b) _) (f a),
|
|
||||||
rewrite [-succ_add_succ, of_nat_add_of_nat], intro b, apply trunctype.struct
|
|
||||||
end end
|
|
||||||
|
|
||||||
|
private definition is_trunc_Q (a : A) : is_trunc (n.-1) (Q a) :=
|
||||||
|
begin
|
||||||
|
refine @is_conn.elim_general (m.-1) _ _ _ (P a) _ (f a),
|
||||||
|
rewrite [-succ_add_succ, of_nat_add_of_nat], intro b, apply HP
|
||||||
|
end
|
||||||
|
|
||||||
|
local attribute is_trunc_Q [instance]
|
||||||
private definition Q_sec : Πa : A, Q a :=
|
private definition Q_sec : Πa : A, Q a :=
|
||||||
is_conn.elim Q (fiber.mk g p⁻¹)
|
is_conn.elim (n.-1) Q (fiber.mk g p⁻¹)
|
||||||
|
|
||||||
protected definition ext : Π(a : A)(b : B), P a b :=
|
protected definition ext : Π(a : A)(b : B), P a b :=
|
||||||
λa, fiber.point (Q_sec a)
|
λa, fiber.point (Q_sec a)
|
||||||
|
@ -62,7 +64,7 @@ section
|
||||||
private definition coh_aux : Σq : ext (Point A) = g,
|
private definition coh_aux : Σq : ext (Point A) = g,
|
||||||
β_left (Point A) = ap (λs : (Πb : B, P (Point A) b), s (Point B)) q ⬝ p⁻¹ :=
|
β_left (Point A) = ap (λs : (Πb : B, P (Point A) b), s (Point B)) q ⬝ p⁻¹ :=
|
||||||
equiv.to_fun (fiber.fiber_eq_equiv (Q_sec (Point A)) (fiber.mk g p⁻¹))
|
equiv.to_fun (fiber.fiber_eq_equiv (Q_sec (Point A)) (fiber.mk g p⁻¹))
|
||||||
(is_conn.elim_β Q (fiber.mk g p⁻¹))
|
(is_conn.elim_β (n.-1) Q (fiber.mk g p⁻¹))
|
||||||
|
|
||||||
protected definition β_right (b : B) : ext (Point A) b = g b :=
|
protected definition β_right (b : B) : ext (Point A) b = g b :=
|
||||||
apd10 (sigma.pr1 coh_aux) b
|
apd10 (sigma.pr1 coh_aux) b
|
||||||
|
|
Loading…
Reference in a new issue