Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Require Import HFiber Extensions Factorization Limits.Pullback.Require Import Modality Accessible Descent.Require Import Truncations.Core.Require Import Homotopy.Suspension.LocalOpen Scope path_scope.LocalOpen Scope subuniverse_scope.(** * Subuniverses of separated types *)(** The basic reference for subuniverses of separated types is - Christensen, Opie, Rijke, and Scoccola, "Localization in Homotopy Type Theory", https://arxiv.org/abs/1807.04155.hereinafter referred to as "CORS". *)(** ** Definition *)(** The definition is in [ReflectiveSubuniverse.v]. *)(** ** Basic properties *)(** A function is (fiberwise) in [Sep O] exactly when its diagonal is in [O]. *)SectionDiagonal.Context (O : Subuniverse) {XY : Type} (f : X -> Y).
O: Subuniverse X, Y: Type f: X -> Y H: MapIn (Sep O) f
MapIn O (diagonal f)
O: Subuniverse X, Y: Type f: X -> Y H: MapIn (Sep O) f
MapIn O (diagonal f)
O: Subuniverse X, Y: Type f: X -> Y H: MapIn (Sep O) f p: Pullback f f
In O (hfiber (diagonal f) p)
exact (inO_equiv_inO' _ (hfiber_diagonal f p)^-1).Defined.
O: Subuniverse X, Y: Type f: X -> Y H: MapIn O (diagonal f)
MapIn (Sep O) f
O: Subuniverse X, Y: Type f: X -> Y H: MapIn O (diagonal f)
MapIn (Sep O) f
O: Subuniverse X, Y: Type f: X -> Y H: MapIn O (diagonal f) x1: Y u, v: hfiber f x1
In O (u = v)
O: Subuniverse X, Y: Type f: X -> Y H: MapIn O (diagonal f) x1: Y u: hfiber f x1 x2: X p: f x2 = x1
In O (u = (x2; p))
O: Subuniverse X, Y: Type f: X -> Y H: MapIn O (diagonal f) x2: X u: hfiber f (f x2)
In O (u = (x2; 1))
exact (inO_equiv_inO' _ (hfiber_diagonal f (u.1; x2; u.2))).Defined.EndDiagonal.(** Lemma 2.15 of CORS: If [O] is accessible, so is [Sep O]. Its generators are the suspension of those of [O], in the following sense: *)
f: LocalGenerators
LocalGenerators
f: LocalGenerators
LocalGenerators
f: LocalGenerators i: ?lgen_indices
?lgen_domain i -> ?lgen_codomain i
exact (functor_susp (f i)).Defined.
O: Subuniverse H: IsAccRSU O
IsAccRSU (Sep O)
O: Subuniverse H: IsAccRSU O
IsAccRSU (Sep O)
O: Subuniverse H: IsAccRSU O
forallX : Type,
In (Sep O) X <->
IsLocal_Internal.IsLocal (susp_localgen (acc_lgen O))
X
O: Subuniverse H: IsAccRSU O A: Type A_inO: In (Sep O) A
IsLocal_Internal.IsLocal (susp_localgen (acc_lgen O))
A
O: Subuniverse H: IsAccRSU O A: Type A_inO: IsLocal_Internal.IsLocal
(susp_localgen (acc_lgen O)) A
In (Sep O) A
O: Subuniverse H: IsAccRSU O A: Type A_inO: In (Sep O) A
IsLocal_Internal.IsLocal (susp_localgen (acc_lgen O))
A
O: Subuniverse H: IsAccRSU O A: Type A_inO: In (Sep O) A i: lgen_indices (susp_localgen (acc_lgen O))
ooExtendableAlong (susp_localgen (acc_lgen O) i)
(fun_ : lgen_codomain (susp_localgen (acc_lgen O)) i
=> A)
O: Subuniverse H: IsAccRSU O A: Type A_inO: In (Sep O) A i: lgen_indices (susp_localgen (acc_lgen O))
forallNS : A * A,
ooExtendableAlong (acc_lgen O i)
(funx : lgen_codomain (acc_lgen O) i =>
DPath
(fun_ : lgen_codomain (susp_localgen (acc_lgen O))
i => A) (merid x) (fst NS) (snd NS))
O: Subuniverse H: IsAccRSU O A: Type A_inO: In (Sep O) A i: lgen_indices (susp_localgen (acc_lgen O)) x, y: A
ooExtendableAlong (acc_lgen O i)
(funx0 : lgen_codomain (acc_lgen O) i =>
DPath
(fun_ : lgen_codomain (susp_localgen (acc_lgen O))
i => A) (merid x0) (fst (x, y))
(snd (x, y)))
O: Subuniverse H: IsAccRSU O A: Type A_inO: forallxy : A, In O (x = y) i: lgen_indices (acc_lgen O) x, y: A
ooExtendableAlong (acc_lgen O i)
(funx0 : lgen_codomain (acc_lgen O) i =>
transport
(fun_ : Susp (lgen_codomain (acc_lgen O) i) => A)
(merid x0) x = y)
O: Subuniverse H: IsAccRSU O A: Type A_inO: forallxy : A, In O (x = y) i: lgen_indices (acc_lgen O) x, y: A
forallb : lgen_codomain (acc_lgen O) i,
?Goal0 b <~>
transport
(fun_ : Susp (lgen_codomain (acc_lgen O) i) => A)
(merid b) x = y
O: Subuniverse H: IsAccRSU O A: Type A_inO: forallxy : A, In O (x = y) i: lgen_indices (acc_lgen O) x, y: A
ooExtendableAlong (acc_lgen O i) ?Goal0
O: Subuniverse H: IsAccRSU O A: Type A_inO: forallxy : A, In O (x = y) i: lgen_indices (acc_lgen O) x, y: A
forallb : lgen_codomain (acc_lgen O) i,
(fun_ : lgen_codomain (acc_lgen O) i => x = y) b <~>
transport
(fun_ : Susp (lgen_codomain (acc_lgen O) i) => A)
(merid b) x = y
O: Subuniverse H: IsAccRSU O A: Type A_inO: forallxy : A, In O (x = y) i: lgen_indices (acc_lgen O) x, y: A b: lgen_codomain (acc_lgen O) i
(fun_ : lgen_codomain (acc_lgen O) i => x = y) b <~>
transport
(fun_ : Susp (lgen_codomain (acc_lgen O) i) => A)
(merid b) x = y
exact dp_const.
O: Subuniverse H: IsAccRSU O A: Type A_inO: IsLocal_Internal.IsLocal
(susp_localgen (acc_lgen O)) A
In (Sep O) A
O: Subuniverse H: IsAccRSU O A: Type A_inO: IsLocal_Internal.IsLocal
(susp_localgen (acc_lgen O)) A
In (Sep O) A
O: Subuniverse H: IsAccRSU O A: Type A_inO: IsLocal_Internal.IsLocal
(susp_localgen (acc_lgen O)) A x, y: A
In O (x = y)
O: Subuniverse H: IsAccRSU O A: Type A_inO: IsLocal_Internal.IsLocal
(susp_localgen (acc_lgen O)) A x, y: A i: lgen_indices (acc_lgen O)
ooExtendableAlong (acc_lgen O i)
(fun_ : lgen_codomain (acc_lgen O) i => x = y)
O: Subuniverse H: IsAccRSU O A: Type i: lgen_indices (acc_lgen O) A_inO: ooExtendableAlong
(susp_localgen (acc_lgen O) i)
(fun_ : lgen_codomain
(susp_localgen (acc_lgen O)) i => A) x, y: A
ooExtendableAlong (acc_lgen O i)
(fun_ : lgen_codomain (acc_lgen O) i => x = y)
O: Subuniverse H: IsAccRSU O A: Type i: lgen_indices (acc_lgen O) A_inO: ooExtendableAlong
(susp_localgen (acc_lgen O) i)
(fun_ : lgen_codomain
(susp_localgen (acc_lgen O)) i => A) x, y: A
forallb : lgen_codomain (acc_lgen O) i,
?Goal b <~> x = y
O: Subuniverse H: IsAccRSU O A: Type i: lgen_indices (acc_lgen O) A_inO: ooExtendableAlong
(susp_localgen (acc_lgen O) i)
(fun_ : lgen_codomain
(susp_localgen (acc_lgen O)) i => A) x, y: A
ooExtendableAlong (acc_lgen O i) ?Goal
O: Subuniverse H: IsAccRSU O A: Type i: lgen_indices (acc_lgen O) A_inO: ooExtendableAlong
(susp_localgen (acc_lgen O) i)
(fun_ : lgen_codomain
(susp_localgen (acc_lgen O)) i => A) x, y: A
forallb : lgen_codomain (acc_lgen O) i,
(funx0 : lgen_codomain (acc_lgen O) i =>
DPath
(fun_ : lgen_codomain (susp_localgen (acc_lgen O)) i
=> A) (merid x0) (fst (x, y)) (snd (x, y))) b <~>
x = y
O: Subuniverse H: IsAccRSU O A: Type i: lgen_indices (acc_lgen O) A_inO: ooExtendableAlong
(susp_localgen (acc_lgen O) i)
(fun_ : lgen_codomain
(susp_localgen (acc_lgen O)) i => A) x, y: A b: lgen_codomain (acc_lgen O) i
(funx0 : lgen_codomain (acc_lgen O) i =>
DPath
(fun_ : lgen_codomain (susp_localgen (acc_lgen O)) i
=> A) (merid x0) (fst (x, y)) (snd (x, y))) b <~>
x = y
symmetry; exact dp_const.}Defined.
S: NullGenerators
NullGenerators
S: NullGenerators
NullGenerators
S: NullGenerators i: ?ngen_indices
Type
exact (Susp (S i)).Defined.
O: Subuniverse H: IsAccModality O
IsAccModality (Sep O)
O: Subuniverse H: IsAccModality O
IsAccModality (Sep O)
O: Subuniverse H: IsAccModality O
forallX : Type,
In (Sep O) X <->
IsNull_Internal.IsNull (susp_nullgen (acc_ngen O)) X
O: Subuniverse H: IsAccModality O A: Type A_inO: In (Sep O) A
IsNull_Internal.IsNull (susp_nullgen (acc_ngen O)) A
O: Subuniverse H: IsAccModality O A: Type A_inO: IsNull_Internal.IsNull
(susp_nullgen (acc_ngen O)) A
In (Sep O) A
O: Subuniverse H: IsAccModality O A: Type A_inO: In (Sep O) A
IsNull_Internal.IsNull (susp_nullgen (acc_ngen O)) A
O: Subuniverse H: IsAccModality O A: Type A_inO: In (Sep O) A i: lgen_indices
(null_to_local_generators
(susp_nullgen (acc_ngen O)))
ooExtendableAlong
(null_to_local_generators
(susp_nullgen (acc_ngen O)) i)
(fun_ : lgen_codomain
(null_to_local_generators
(susp_nullgen (acc_ngen O))) i => A)
O: Subuniverse H: IsAccModality O A: Type A_inO: In (Sep O) A i: lgen_indices
(null_to_local_generators
(susp_nullgen (acc_ngen O)))
ooExtendableAlong (fun_ : Susp Unit => tt)
(fun_ : lgen_codomain
(null_to_local_generators
(susp_nullgen (acc_ngen O))) i => A)
O: Subuniverse H: IsAccModality O A: Type A_inO: In (Sep O) A i: lgen_indices
(null_to_local_generators
(susp_nullgen (acc_ngen O)))
ooExtendableAlong
(functor_susp (fun_ : acc_ngen O i => tt))
(fun_ : Susp Unit => A)
O: Subuniverse H: IsAccModality O A: Type A_inO: In (Sep O) A i: lgen_indices
(null_to_local_generators
(susp_nullgen (acc_ngen O)))
ooExtendableAlong
(functor_susp (fun_ : acc_ngen O i => tt))
(fun_ : Susp Unit => A)
O: Subuniverse H: IsAccModality O A: Type A_inO: In (Sep O) A i: lgen_indices
(null_to_local_generators
(susp_nullgen (acc_ngen O)))
forallNS : A * A,
ooExtendableAlong (fun_ : acc_ngen O i => tt)
(funx : Unit =>
DPath (fun_ : Susp Unit => A) (merid x) (fst NS)
(snd NS))
O: Subuniverse H: IsAccModality O A: Type A_inO: In (Sep O) A i: lgen_indices
(null_to_local_generators
(susp_nullgen (acc_ngen O))) x, y: A
ooExtendableAlong (fun_ : acc_ngen O i => tt)
(funx0 : Unit =>
DPath (fun_ : Susp Unit => A) (merid x0)
(fst (x, y)) (snd (x, y)))
O: Subuniverse H: IsAccModality O A: Type A_inO: In (Sep O) A i: lgen_indices
(null_to_local_generators
(susp_nullgen (acc_ngen O))) x, y: A
forallb : Unit,
?Goal0 b <~>
DPath (fun_ : Susp Unit => A) (merid b) (fst (x, y))
(snd (x, y))
O: Subuniverse H: IsAccModality O A: Type A_inO: In (Sep O) A i: lgen_indices
(null_to_local_generators
(susp_nullgen (acc_ngen O))) x, y: A
ooExtendableAlong (fun_ : acc_ngen O i => tt) ?Goal0
O: Subuniverse H: IsAccModality O A: Type A_inO: In (Sep O) A i: lgen_indices
(null_to_local_generators
(susp_nullgen (acc_ngen O))) x, y: A
forallb : Unit,
(fun_ : lgen_codomain
(null_to_local_generators (acc_ngen O)) i =>
x = y) b <~>
DPath (fun_ : Susp Unit => A) (merid b) (fst (x, y))
(snd (x, y))
O: Subuniverse H: IsAccModality O A: Type A_inO: In (Sep O) A i: lgen_indices
(null_to_local_generators
(susp_nullgen (acc_ngen O))) x, y: A b: Unit
(fun_ : lgen_codomain
(null_to_local_generators (acc_ngen O)) i =>
x = y) b <~>
DPath (fun_ : Susp Unit => A) (merid b) (fst (x, y))
(snd (x, y))
exact dp_const.
O: Subuniverse H: IsAccModality O A: Type A_inO: IsNull_Internal.IsNull
(susp_nullgen (acc_ngen O)) A
In (Sep O) A
O: Subuniverse H: IsAccModality O A: Type A_inO: IsNull_Internal.IsNull
(susp_nullgen (acc_ngen O)) A
In (Sep O) A
O: Subuniverse H: IsAccModality O A: Type A_inO: IsNull_Internal.IsNull
(susp_nullgen (acc_ngen O)) A x, y: A
In O (x = y)
O: Subuniverse H: IsAccModality O A: Type A_inO: IsNull_Internal.IsNull
(susp_nullgen (acc_ngen O)) A x, y: A i: lgen_indices
(null_to_local_generators (acc_ngen O))
ooExtendableAlong
(null_to_local_generators (acc_ngen O) i)
(fun_ : lgen_codomain
(null_to_local_generators (acc_ngen O)) i
=> x = y)
O: Subuniverse H: IsAccModality O A: Type i: lgen_indices
(null_to_local_generators (acc_ngen O)) A_inO: ooExtendableAlong
(null_to_local_generators
(susp_nullgen (acc_ngen O)) i)
(fun_ : lgen_codomain
(null_to_local_generators
(susp_nullgen (acc_ngen O))) i
=> A) x, y: A
ooExtendableAlong
(null_to_local_generators (acc_ngen O) i)
(fun_ : lgen_codomain
(null_to_local_generators (acc_ngen O)) i
=> x = y)
O: Subuniverse H: IsAccModality O A: Type i: lgen_indices
(null_to_local_generators (acc_ngen O)) A_inO: ooExtendableAlong
(null_to_local_generators
(susp_nullgen (acc_ngen O)) i)
(fun_ : lgen_codomain
(null_to_local_generators
(susp_nullgen (acc_ngen O))) i
=> A) x, y: A
ooExtendableAlong
(functor_susp (fun_ : acc_ngen O i => tt))
(fun_ : Susp Unit => A)
O: Subuniverse H: IsAccModality O A: Type i: lgen_indices
(null_to_local_generators (acc_ngen O)) A_inO: ooExtendableAlong
(null_to_local_generators
(susp_nullgen (acc_ngen O)) i)
(fun_ : lgen_codomain
(null_to_local_generators
(susp_nullgen (acc_ngen O))) i
=> A) x, y: A ee: ooExtendableAlong
(functor_susp (fun_ : acc_ngen O i => tt))
(fun_ : Susp Unit => A)
ooExtendableAlong
(null_to_local_generators (acc_ngen O) i)
(fun_ : lgen_codomain
(null_to_local_generators (acc_ngen O)) i
=> x = y)
O: Subuniverse H: IsAccModality O A: Type i: lgen_indices
(null_to_local_generators (acc_ngen O)) A_inO: ooExtendableAlong
(null_to_local_generators
(susp_nullgen (acc_ngen O)) i)
(fun_ : lgen_codomain
(null_to_local_generators
(susp_nullgen (acc_ngen O))) i
=> A) x, y: A
ooExtendableAlong
(functor_susp (fun_ : acc_ngen O i => tt))
(fun_ : Susp Unit => A)
O: Subuniverse H: IsAccModality O A: Type i: lgen_indices
(null_to_local_generators (acc_ngen O)) A_inO: ooExtendableAlong
(null_to_local_generators
(susp_nullgen (acc_ngen O)) i)
(fun_ : lgen_codomain
(null_to_local_generators
(susp_nullgen (acc_ngen O))) i
=> A) x, y: A
ooExtendableAlong (fun_ : Susp Unit => tt)
(fun_ : lgen_codomain
(null_to_local_generators
(susp_nullgen (acc_ngen O))) i => A)
O: Subuniverse H: IsAccModality O A: Type i: lgen_indices
(null_to_local_generators (acc_ngen O)) A_inO: ooExtendableAlong
(null_to_local_generators
(susp_nullgen (acc_ngen O)) i)
(fun_ : lgen_codomain
(null_to_local_generators
(susp_nullgen (acc_ngen O))) i
=> A) x, y: A
IsEquiv (fun_ : Susp Unit => tt)
apply isequiv_contr_contr.
O: Subuniverse H: IsAccModality O A: Type i: lgen_indices
(null_to_local_generators (acc_ngen O)) A_inO: ooExtendableAlong
(null_to_local_generators
(susp_nullgen (acc_ngen O)) i)
(fun_ : lgen_codomain
(null_to_local_generators
(susp_nullgen (acc_ngen O))) i
=> A) x, y: A ee: ooExtendableAlong
(functor_susp (fun_ : acc_ngen O i => tt))
(fun_ : Susp Unit => A)
ooExtendableAlong
(null_to_local_generators (acc_ngen O) i)
(fun_ : lgen_codomain
(null_to_local_generators (acc_ngen O)) i
=> x = y)
O: Subuniverse H: IsAccModality O A: Type i: lgen_indices
(null_to_local_generators (acc_ngen O)) A_inO: ooExtendableAlong
(null_to_local_generators
(susp_nullgen (acc_ngen O)) i)
(fun_ : lgen_codomain
(null_to_local_generators
(susp_nullgen (acc_ngen O))) i
=> A) x, y: A ee: ooExtendableAlong
(functor_susp (fun_ : acc_ngen O i => tt))
(fun_ : Susp Unit => A) e: ooExtendableAlong (fun_ : acc_ngen O i => tt)
(funx0 : Unit =>
DPath (fun_ : Susp Unit => A)
(merid x0) (fst (x, y))
(snd (x, y)))
ooExtendableAlong
(null_to_local_generators (acc_ngen O) i)
(fun_ : lgen_codomain
(null_to_local_generators (acc_ngen O)) i
=> x = y)
O: Subuniverse H: IsAccModality O A: Type i: lgen_indices
(null_to_local_generators (acc_ngen O)) A_inO: ooExtendableAlong
(null_to_local_generators
(susp_nullgen (acc_ngen O)) i)
(fun_ : lgen_codomain
(null_to_local_generators
(susp_nullgen (acc_ngen O))) i
=> A) x, y: A ee: ooExtendableAlong
(functor_susp (fun_ : acc_ngen O i => tt))
(fun_ : Susp Unit => A) e: ooExtendableAlong (fun_ : acc_ngen O i => tt)
(funx0 : Unit =>
transport (fun_ : Susp Unit => A) (merid x0) x =
y)
ooExtendableAlong
(null_to_local_generators (acc_ngen O) i)
(fun_ : lgen_codomain
(null_to_local_generators (acc_ngen O)) i
=> x = y)
O: Subuniverse H: IsAccModality O A: Type i: lgen_indices
(null_to_local_generators (acc_ngen O)) A_inO: ooExtendableAlong
(null_to_local_generators
(susp_nullgen (acc_ngen O)) i)
(fun_ : lgen_codomain
(null_to_local_generators
(susp_nullgen (acc_ngen O))) i
=> A) x, y: A ee: ooExtendableAlong
(functor_susp (fun_ : acc_ngen O i => tt))
(fun_ : Susp Unit => A) e: ooExtendableAlong (fun_ : acc_ngen O i => tt)
(funx0 : Unit =>
transport (fun_ : Susp Unit => A) (merid x0) x =
y)
forallb : Unit,
transport (fun_ : Susp Unit => A) (merid b) x = y <~>
x = y
O: Subuniverse H: IsAccModality O A: Type i: lgen_indices
(null_to_local_generators (acc_ngen O)) A_inO: ooExtendableAlong
(null_to_local_generators
(susp_nullgen (acc_ngen O)) i)
(fun_ : lgen_codomain
(null_to_local_generators
(susp_nullgen (acc_ngen O))) i
=> A) x, y: A ee: ooExtendableAlong
(functor_susp (fun_ : acc_ngen O i => tt))
(fun_ : Susp Unit => A) e: ooExtendableAlong (fun_ : acc_ngen O i => tt)
(funx0 : Unit =>
transport (fun_ : Susp Unit => A) (merid x0) x =
y) b: Unit
transport (fun_ : Susp Unit => A) (merid b) x = y <~>
x = y
symmetry; exact dp_const.}Defined.(** Remark 2.16(1) of CORS *)
O: ReflectiveSubuniverse
O <= Sep O
O: ReflectiveSubuniverse
O <= Sep O
intros A ? x y; exact _.Defined.(** Part of Remark 2.16(2) of CORS *)
O: Subuniverse A, B: Type i: A -> B IsEmbedding0: IsEmbedding i H: In (Sep O) B
In (Sep O) A
O: Subuniverse A, B: Type i: A -> B IsEmbedding0: IsEmbedding i H: In (Sep O) B
In (Sep O) A
O: Subuniverse A, B: Type i: A -> B IsEmbedding0: IsEmbedding i H: In (Sep O) B x, y: A
In O (x = y)
exact (inO_equiv_inO' _ (equiv_ap_isembedding i x y)^-1).Defined.(* As a special case, if X embeds into an n-type for n >= -1 then X is an n-type. Note that this doesn't hold for n = -2. *)
X, Y: Type n: trunc_index istr: IsTrunc n.+1 Y i: X -> Y isem: IsEmbedding i
IsTrunc n.+1 X
X, Y: Type n: trunc_index istr: IsTrunc n.+1 Y i: X -> Y isem: IsEmbedding i
IsTrunc n.+1 X
X, Y: Type n: trunc_index istr: IsTrunc n.+1 Y i: X -> Y isem: IsEmbedding i
forallxy : X, IsTrunc n (x = y)
exact (@in_SepO_embedding (Tr n) _ _ i isem istr).Defined.
O: ReflectiveSubuniverse A: Type IsHProp0: IsHProp A
In (Sep O) A
O: ReflectiveSubuniverse A: Type IsHProp0: IsHProp A
In (Sep O) A
O: ReflectiveSubuniverse A: Type IsHProp0: IsHProp A
In (Sep O) Unit
intros x y; exact _.Defined.(** Remark 2.16(4) of CORS *)
O: Modality A: Type B: A -> Type A_inO: In (Sep O) A B_inO: foralla : A, In (Sep O) (B a)
In (Sep O) {x : _ & B x}
O: Modality A: Type B: A -> Type A_inO: In (Sep O) A B_inO: foralla : A, In (Sep O) (B a)
In (Sep O) {x : _ & B x}
O: Modality A: Type B: A -> Type A_inO: In (Sep O) A B_inO: foralla : A, In (Sep O) (B a) x: A u: B x y: A v: B y
In O ((x; u) = (y; v))
O: Modality A: Type B: A -> Type x, y: A A_inO: In O (x = y) B_inO: foralla : A, In (Sep O) (B a) u: B x v: B y
In O ((x; u) = (y; v))
O: Modality A: Type B: A -> Type x, y: A A_inO: In O (x = y) B_inO: foralla : A, In (Sep O) (B a) u: B x v: B y X: forallp : x = y, In O (transport B p u = v)
In O ((x; u) = (y; v))
O: Modality A: Type B: A -> Type x, y: A A_inO: In O (x = y) B_inO: foralla : A, In (Sep O) (B a) u: B x v: B y X: forallp : x = y, In O (transport B p u = v) i:= inO_sigma: forall (O : Modality) (A : Type)
(B : A -> Type),
In O A ->
(foralla : A, In O (B a)) -> In O {x : A & B x}
In O ((x; u) = (y; v))
exact (inO_equiv_inO' _ (equiv_path_sigma B _ _)).Defined.(** Lemma 2.17 of CORS *)
O: ReflectiveSubuniverse X: Type H: PreReflects (Sep O) X H0: Reflects (Sep O) X
IsConnMap (Tr (-1)) (to (Sep O) X)
O: ReflectiveSubuniverse X: Type H: PreReflects (Sep O) X H0: Reflects (Sep O) X
O: ReflectiveSubuniverse X: Type H: PreReflects (Sep O) X H0: Reflects (Sep O) X im:= himage (to (Sep O) X): Factorization (@IsConnMap (Tr (-1)))
(@MapIn (Tr (-1))) (to (Sep O) X) X0: In (Sep O) im s:= O_rec (factor1 im): O_reflector (Sep O) X -> im h: factor2 im o s == idmap z: O_reflector (Sep O) X
merely (hfiber (to (Sep O) X) z)
O: ReflectiveSubuniverse X: Type H: PreReflects (Sep O) X H0: Reflects (Sep O) X im:= himage (to (Sep O) X): Factorization (@IsConnMap (Tr (-1)))
(@MapIn (Tr (-1))) (to (Sep O) X) X0: In (Sep O) im s:= O_rec (factor1 im): O_reflector (Sep O) X -> im z: O_reflector (Sep O) X h: (s z).1 = z
merely (hfiber (to (Sep O) X) z)
O: ReflectiveSubuniverse X: Type H: PreReflects (Sep O) X H0: Reflects (Sep O) X im:= himage (to (Sep O) X): Factorization (@IsConnMap (Tr (-1)))
(@MapIn (Tr (-1))) (to (Sep O) X) X0: In (Sep O) im s:= O_rec (factor1 im): O_reflector (Sep O) X -> im z: O_reflector (Sep O) X w:= s z: im h: w.1 = z
merely (hfiber (to (Sep O) X) z)
O: ReflectiveSubuniverse X: Type H: PreReflects (Sep O) X H0: Reflects (Sep O) X im:= himage (to (Sep O) X): Factorization (@IsConnMap (Tr (-1)))
(@MapIn (Tr (-1))) (to (Sep O) X) X0: In (Sep O) im s:= O_rec (factor1 im): O_reflector (Sep O) X -> im z, w1: O_reflector (Sep O) X w2: Tr (-1) (hfiber (to (Sep O) X) w1) h: w1 = z
merely (hfiber (to (Sep O) X) z)
O: ReflectiveSubuniverse X: Type H: PreReflects (Sep O) X H0: Reflects (Sep O) X im:= himage (to (Sep O) X): Factorization (@IsConnMap (Tr (-1)))
(@MapIn (Tr (-1))) (to (Sep O) X) X0: In (Sep O) im s:= O_rec (factor1 im): O_reflector (Sep O) X -> im w1: O_reflector (Sep O) X w2: Tr (-1) (hfiber (to (Sep O) X) w1)
merely (hfiber (to (Sep O) X) w1)
exact w2.Defined.(** Proposition 2.18 of CORS. *)
H: Univalence O: ReflectiveSubuniverse A, B: Type_ O
{Z : Type & In O Z * (Z <~> A = B)}
H: Univalence O: ReflectiveSubuniverse A, B: Type_ O
{Z : Type & In O Z * (Z <~> A = B)}
H: Univalence O: ReflectiveSubuniverse A, B: Type_ O
In O (A <~> B)
H: Univalence O: ReflectiveSubuniverse A, B: Type_ O
(A <~> B) <~> A = B
H: Univalence O: ReflectiveSubuniverse A, B: Type_ O
In O (A <~> B)
exact _.
H: Univalence O: ReflectiveSubuniverse A, B: Type_ O
(A <~> B) <~> A = B
H: Univalence O: ReflectiveSubuniverse A, B: Type_ O
(A <~> B) <~> A.1 = B.1
apply equiv_path_universe.Defined.(** Lemma 2.21 of CORS *)
O: ReflectiveSubuniverse X: Type P: X -> Type H: In (Sep O) X H0: forallx : X, In O (P x)
In (Sep O) {x : _ & P x}
O: ReflectiveSubuniverse X: Type P: X -> Type H: In (Sep O) X H0: forallx : X, In O (P x)
In (Sep O) {x : _ & P x}
O: ReflectiveSubuniverse X: Type P: X -> Type H: In (Sep O) X H0: forallx : X, In O (P x) u, v: {x : _ & P x}
In O (u = v)
exact (inO_equiv_inO' _ (equiv_path_sigma P _ _)).Defined.(** Proposition 2.22 of CORS (in funext-free form). *)
O: ReflectiveSubuniverse X: Type H: PreReflects (Sep O) X H0: Reflects (Sep O) X
ReflectsD (Sep O) O X
O: ReflectiveSubuniverse X: Type H: PreReflects (Sep O) X H0: Reflects (Sep O) X
ReflectsD (Sep O) O X
srapply reflectsD_from_inO_sigma.Defined.(** Once we know that [Sep O] is a reflective subuniverse, this will mean that [O << Sep O]. *)(** And now the version with funext. *)Definitionisequiv_toSepO_inO `{Funext} (O : ReflectiveSubuniverse)
{X : Type} `{Reflects (Sep O) X}
(P : O_reflector (Sep O) X -> Type) `{forallx, In O (P x)}
: IsEquiv (fung : (forally, P y) => g o to (Sep O) X)
:= isequiv_ooextendable _ _ (extendable_to_OO P).Definitionequiv_toSepO_inO `{Funext} (O : ReflectiveSubuniverse)
{X : Type} `{Reflects (Sep O) X}
(P : O_reflector (Sep O) X -> Type) `{forallx, In O (P x)}
: (forally, P y) <~> (forallx, P (to (Sep O) X x))
:= Build_Equiv _ _ _ (isequiv_toSepO_inO O P).(** TODO: Actually prove this, and put it somewhere more appropriate. *)SectionJoinConstruction.Universes i j.Context {X : Type@{i}} {Y : Type@{j}} (f : X -> Y)
(ls : forall (y1y2 : Y),
@sig@{j j} Type@{i} (fun (Z : Type@{i}) => Equiv@{i j} Z (y1 = y2))).
X, Y: Type f: X -> Y ls: forally1y2 : Y, {Z : Type & Z <~> y1 = y2}
Type
Admitted.
X, Y: Type f: X -> Y ls: forally1y2 : Y, {Z : Type & Z <~> y1 = y2}
X -> jc_image
Admitted.
X, Y: Type f: X -> Y ls: forally1y2 : Y, {Z : Type & Z <~> y1 = y2}
jc_image -> Y
Admitted.
X, Y: Type f: X -> Y ls: forally1y2 : Y, {Z : Type & Z <~> y1 = y2}
jc_factor2 o jc_factor1 == f
Admitted.
X, Y: Type f: X -> Y ls: forally1y2 : Y, {Z : Type & Z <~> y1 = y2}
IsConnMap (Tr (-1)) jc_factor1
Admitted.
X, Y: Type f: X -> Y ls: forally1y2 : Y, {Z : Type & Z <~> y1 = y2}
IsEmbedding jc_factor2
Admitted.EndJoinConstruction.(** We'd like to say that the universe of [O]-modal types is [O]-separated, i.e. belongs to [Sep O]. But since a given subuniverse like [Sep O] lives only on a single universe size, trying to say that in the naive way yields a universe inconsistency. *)
The command has indeed failed with message:
In environment
O : ReflectiveSubuniverse
The term "Type_ O" has type "Type@{Separated.4467}"
while it is expected to have type
"Type@{Separated.4466}"
(universe inconsistency: Cannot enforce Separated.4467
<= Separated.4466 because Separated.4466
< Separated.4467).
(** Instead, we do as in Lemma 2.19 of CORS and prove the morally-equivalent "descent" property, using Lemma 2.18 and the join construction. *)
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X
Descends (Sep O) O X
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X
Descends (Sep O) O X
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X
forallP : X -> Type_ O,
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X e: forallP : X -> Type_ O,
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
Descends (Sep O) O X
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X e: forallP : X -> Type_ O,
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
Descends (Sep O) O X
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X e: forallP : X -> Type_ O,
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x} P': X -> Type P_inO: forallx : X, In O (P' x) P:= funx : X => (P' x; P_inO x) : Type_ O: X -> Type_ O ee:= e P: {Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
O_reflector (Sep O) X -> Type
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X e: forallP : X -> Type_ O,
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x} P': X -> Type P_inO: forallx : X, In O (P' x) P:= funx : X => (P' x; P_inO x) : Type_ O: X -> Type_ O ee:= e P: {Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
forallx : O_reflector (Sep O) X,
In O
((fun (P' : X -> Type)
(P_inO : forallx0 : X, In O (P' x0)) =>
letP := funx0 : X => (P' x0; P_inO x0) : Type_ O
inletee := e P in?Goal0) P' P_inO x)
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X e: forallP : X -> Type_ O,
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x} P': X -> Type P_inO: forallx : X, In O (P' x) P:= funx : X => (P' x; P_inO x) : Type_ O: X -> Type_ O ee:= e P: {Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
forallx : X,
(fun (P' : X -> Type)
(P_inO : forallx0 : X, In O (P' x0)) =>
letP := funx0 : X => (P' x0; P_inO x0) : Type_ O inletee := e P in?Goal0) P' P_inO
(to (Sep O) X x) <~> P' x
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X e: forallP : X -> Type_ O,
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x} P': X -> Type P_inO: forallx : X, In O (P' x) P:= funx : X => (P' x; P_inO x) : Type_ O: X -> Type_ O ee:= e P: {Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
O_reflector (Sep O) X -> Type
exact ee.1.
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X e: forallP : X -> Type_ O,
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x} P': X -> Type P_inO: forallx : X, In O (P' x) P:= funx : X => (P' x; P_inO x) : Type_ O: X -> Type_ O ee:= e P: {Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
forallx : O_reflector (Sep O) X,
In O
((fun (P' : X -> Type)
(P_inO : forallx0 : X, In O (P' x0)) =>
letP := funx0 : X => (P' x0; P_inO x0) : Type_ O
inletee := e P infunx0 : O_reflector (Sep O) X =>
TypeO_pr1 O (ee.1 x0)) P' P_inO x)
simpl; exact _.
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X e: forallP : X -> Type_ O,
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x} P': X -> Type P_inO: forallx : X, In O (P' x) P:= funx : X => (P' x; P_inO x) : Type_ O: X -> Type_ O ee:= e P: {Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
forallx : X,
(fun (P' : X -> Type)
(P_inO : forallx0 : X, In O (P' x0)) =>
letP := funx0 : X => (P' x0; P_inO x0) : Type_ O inletee := e P infunx0 : O_reflector (Sep O) X =>
TypeO_pr1 O (ee.1 x0)) P' P_inO
(to (Sep O) X x) <~> P' x
intros x; cbn; apply ee.2.
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X
forallP : X -> Type_ O,
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O
forallAB : Type_ O, {Z : Type & Z <~> A = B}
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B}
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O
forallAB : Type_ O, {Z : Type & Z <~> A = B}
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O A, B: Type_ O
{Z : Type & Z <~> A = B}
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O A, B: Type_ O q:= almost_inSepO_typeO O A B: {Z : Type & In O Z * (Z <~> A = B)}
{Z : Type & Z <~> A = B}
exact (q.1; snd q.2).
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B}
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} p:= jc_factor2 P ls: jc_image P ls -> Type_ O
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type p:= jc_factor2 P ls: J -> Type_ O
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type p:= jc_factor2 P ls: J -> Type_ O
In (Sep O) J
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type p:= jc_factor2 P ls: J -> Type_ O X0: In (Sep O) J
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type p:= jc_factor2 P ls: J -> Type_ O
In (Sep O) J
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type p:= jc_factor2 P ls: J -> Type_ O x, y: J
In O (x = y)
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type p:= jc_factor2 P ls: J -> Type_ O x, y: J q:= almost_inSepO_typeO O (p x) (p y): {Z : Type & In O Z * (Z <~> p x = p y)}
In O (x = y)
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type p:= jc_factor2 P ls: J -> Type_ O x, y: J q:= almost_inSepO_typeO O (p x) (p y): {Z : Type & In O Z * (Z <~> p x = p y)}
q.1 <~> x = y
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type p:= jc_factor2 P ls: J -> Type_ O x, y: J q:= almost_inSepO_typeO O (p x) (p y): {Z : Type & In O Z * (Z <~> p x = p y)}
?Goal0 <~> x = y
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type p:= jc_factor2 P ls: J -> Type_ O x, y: J q:= almost_inSepO_typeO O (p x) (p y): {Z : Type & In O Z * (Z <~> p x = p y)}
q.1 <~> ?Goal0
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type p:= jc_factor2 P ls: J -> Type_ O x, y: J q:= almost_inSepO_typeO O (p x) (p y): {Z : Type & In O Z * (Z <~> p x = p y)}
?Goal0 <~> x = y
symmetry; srapply (equiv_ap_isembedding p).
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type p:= jc_factor2 P ls: J -> Type_ O x, y: J q:= almost_inSepO_typeO O (p x) (p y): {Z : Type & In O Z * (Z <~> p x = p y)}
q.1 <~> p x = p y
exact (snd q.2).
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type p:= jc_factor2 P ls: J -> Type_ O X0: In (Sep O) J
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type p:= jc_factor2 P ls: J -> Type_ O X0: In (Sep O) J j:= O_rec (jc_factor1 P ls): O_reflector (Sep O) X -> jc_image P ls
{Q : O_reflector (Sep O) X -> Type_ O &
forallx : X, Q (to (Sep O) X x) <~> P x}
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type p:= jc_factor2 P ls: J -> Type_ O X0: In (Sep O) J j:= O_rec (jc_factor1 P ls): O_reflector (Sep O) X -> jc_image P ls
forallx : X, p (j (to (Sep O) X x)) <~> P x
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type X0: In (Sep O) J x: X
jc_factor2 P ls
(O_rec (jc_factor1 P ls) (to (Sep O) X x)) <~>
P x
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type X0: In (Sep O) J x: X
jc_factor2 P ls (jc_factor1 P ls x) <~> P x
H: Univalence O: ReflectiveSubuniverse X: Type H0: PreReflects (Sep O) X H1: Reflects (Sep O) X P: X -> Type_ O ls: forallAB : Type_ O, {Z : Type & Z <~> A = B} J:= jc_image P ls: Type X0: In (Sep O) J x: X
jc_factor2 P ls (jc_factor1 P ls x) = P x
exact ((jc_factors P ls x)..1).Defined.(** Once we know that [Sep O] is a reflective subuniverse, this will imply [O <<< Sep O], and that if [Sep O] is accessible (such as if [O] is) then [Type_ O] belongs to its accessible lifting (see [inO_TypeO_lex_leq]. *)(** ** Reflectiveness of [Sep O] *)(** TODO *)(** ** Left-exactness properties *)(** Nearly all of these are true in the generality of a pair of reflective subuniverses with [O <<< O'] and/or [O' <= Sep O], and as such can be found in [Descent.v]. *)