2015-01-03 06:29:53 +00:00
|
|
|
-- Copyright (c) 2015 Jakob von Raumer. All rights reserved.
|
|
|
|
-- Released under Apache 2.0 license as described in the file LICENSE.
|
|
|
|
-- Authors: Jakob von Raumer
|
|
|
|
-- Category of sets
|
|
|
|
|
|
|
|
import .basic types.pi trunc
|
|
|
|
|
|
|
|
open truncation sigma sigma.ops pi function eq morphism precategory
|
|
|
|
open equiv
|
|
|
|
|
|
|
|
namespace precategory
|
|
|
|
|
|
|
|
universe variable l
|
|
|
|
|
|
|
|
definition set_precategory : precategory.{l+1 l} (Σ (A : Type.{l}), is_hset A) :=
|
|
|
|
begin
|
|
|
|
fapply precategory.mk.{l+1 l},
|
|
|
|
intros, apply (a.1 → a_1.1),
|
|
|
|
intros, apply trunc_pi, intros, apply b.2,
|
|
|
|
intros, intro x, exact (a_1 (a_2 x)),
|
|
|
|
intros, exact (λ (x : a.1), x),
|
|
|
|
intros, apply funext.path_pi, intro x, apply idp,
|
|
|
|
intros, apply funext.path_pi, intro x, apply idp,
|
|
|
|
intros, apply funext.path_pi, intro x, apply idp,
|
|
|
|
end
|
|
|
|
|
|
|
|
end precategory
|
|
|
|
|
|
|
|
namespace category
|
|
|
|
|
|
|
|
universe variable l
|
2015-01-25 04:23:21 +00:00
|
|
|
attribute precategory.set_precategory.{l+1 l} [instance]
|
2015-01-03 06:29:53 +00:00
|
|
|
|
|
|
|
definition set_category_equiv_iso (a b : (Σ (A : Type.{l}), is_hset A))
|
|
|
|
: (a ≅ b) = (a.1 ≃ b.1) :=
|
|
|
|
/-begin
|
|
|
|
apply ua, fapply equiv.mk,
|
|
|
|
intro H,
|
|
|
|
apply (isomorphic.rec_on H), intros (H1, H2),
|
|
|
|
apply (is_iso.rec_on H2), intros (H3, H4, H5),
|
|
|
|
fapply equiv.mk,
|
|
|
|
apply (isomorphic.rec_on H), intros (H1, H2),
|
|
|
|
exact H1,
|
|
|
|
fapply is_equiv.adjointify, exact H3,
|
|
|
|
exact sorry,
|
|
|
|
exact sorry,
|
|
|
|
end-/ sorry
|
|
|
|
|
|
|
|
definition set_category : category.{l+1 l} (Σ (A : Type.{l}), is_hset A) :=
|
2015-01-03 20:17:18 +00:00
|
|
|
/-begin
|
2015-01-03 06:29:53 +00:00
|
|
|
assert (C : precategory.{l+1 l} (Σ (A : Type.{l}), is_hset A)),
|
|
|
|
apply precategory.set_precategory,
|
|
|
|
apply category.mk,
|
|
|
|
assert (p : (λ A B p, (set_category_equiv_iso A B) ▹ iso_of_path p) = (λ A B p, @equiv_path A.1 B.1 p)),
|
2015-01-03 20:17:18 +00:00
|
|
|
apply is_equiv.adjointify,
|
2015-01-03 06:29:53 +00:00
|
|
|
intros,
|
|
|
|
apply (isomorphic.rec_on a_1), intros (iso', is_iso'),
|
|
|
|
apply (is_iso.rec_on is_iso'), intros (f', f'sect, f'retr),
|
|
|
|
fapply sigma.path,
|
|
|
|
apply ua, fapply equiv.mk, exact iso',
|
|
|
|
fapply is_equiv.adjointify,
|
|
|
|
exact f',
|
|
|
|
intros, apply (f'retr ▹ _),
|
|
|
|
intros, apply (f'sect ▹ _),
|
|
|
|
apply (@is_hprop.elim),
|
|
|
|
apply is_trunc_is_hprop,
|
2015-01-03 20:17:18 +00:00
|
|
|
intros,
|
|
|
|
end -/ sorry
|
2015-01-03 06:29:53 +00:00
|
|
|
|
|
|
|
end category
|