2015-03-03 21:35:51 +00:00
|
|
|
/-
|
|
|
|
Copyright (c) 2014 Floris van Doorn. All rights reserved.
|
|
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
|
|
|
|
|
|
Module: types.fiber
|
|
|
|
Author: Floris van Doorn
|
|
|
|
|
|
|
|
Ported from Coq HoTT
|
|
|
|
Theorems about fibers
|
|
|
|
-/
|
|
|
|
|
|
|
|
import types.sigma types.eq
|
|
|
|
|
|
|
|
structure fiber {A B : Type} (f : A → B) (b : B) :=
|
|
|
|
(point : A)
|
|
|
|
(point_eq : f point = b)
|
|
|
|
|
|
|
|
open equiv sigma sigma.ops eq
|
|
|
|
|
|
|
|
namespace fiber
|
2015-03-04 05:10:48 +00:00
|
|
|
variables {A B : Type} {f : A → B} {b : B}
|
2015-03-03 21:35:51 +00:00
|
|
|
|
2015-03-04 05:10:48 +00:00
|
|
|
definition sigma_char (f : A → B) (b : B) : fiber f b ≃ (Σ(a : A), f a = b) :=
|
2015-03-03 21:35:51 +00:00
|
|
|
begin
|
|
|
|
fapply equiv.MK,
|
|
|
|
{intro x, exact ⟨point x, point_eq x⟩},
|
|
|
|
{intro x, exact (fiber.mk x.1 x.2)},
|
|
|
|
{intro x, cases x, apply idp},
|
|
|
|
{intro x, cases x, apply idp},
|
|
|
|
end
|
|
|
|
--set_option pp.notation false
|
|
|
|
|
|
|
|
|
|
|
|
definition equiv_fiber_eq (x y : fiber f b)
|
|
|
|
: (x = y) ≃ (Σ(p : point x = point y), point_eq x = ap f p ⬝ point_eq y) :=
|
|
|
|
begin
|
|
|
|
apply equiv.trans,
|
|
|
|
{apply eq_equiv_fn_eq_of_equiv, apply sigma_char},
|
|
|
|
apply equiv.trans,
|
|
|
|
{apply equiv.symm, apply equiv_sigma_eq},
|
|
|
|
apply sigma_equiv_sigma_id,
|
|
|
|
intro p,
|
|
|
|
apply equiv_of_equiv_of_eq,
|
2015-03-04 05:10:48 +00:00
|
|
|
{apply (ap (λx, x = _)), apply transport_eq_Fl},
|
|
|
|
apply inv_con_eq_equiv_eq_con,
|
2015-03-03 21:35:51 +00:00
|
|
|
end
|
|
|
|
|
2015-03-04 05:10:48 +00:00
|
|
|
definition eq_mk {x y : fiber f b} (p : point x = point y) (q : point_eq x = ap f p ⬝ point_eq y)
|
|
|
|
: x = y :=
|
|
|
|
to_inv !equiv_fiber_eq ⟨p, q⟩
|
2015-03-03 21:35:51 +00:00
|
|
|
|
|
|
|
|
2015-03-04 05:10:48 +00:00
|
|
|
end fiber
|