Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 128 lines (81 sloc) 3.578 kB
eca763b @UrsSchreiber added Cohesion.v
authored
1
2 (* This file contains Coq-HoTT code formulating the notion
3
4 "cohesive infinity-topos"
5
6 in the internal language of an infinity-topos.
7
8 For background on cohesion see
9
10 http://ncatlab.org/nlab/show/cohesive-(infinity,1)-topos
11
12 For general background on Coq and homotopy type theory see
13
14 http://ncatlabl.org/nlab/show/Coq
15 http://ncatlabl.org/nlab/show/homotopy+type+theory
16
17 *)
18
19 (* ================================================================= *)
20 (* We speak in the internal language of an ambient infinity-topos H. *)
21 Require Import Homotopy.
22 (* ================================================================= *)
23
24
25 (* ================================================================= *)
26 (* ==== Definition ================================================= *)
27 (* ================================================================= *)
28
29
30 (* A cohesive structure on an infinity-topos is a choice of full
31 subcategory that is embedded reflectively in two different, but
32 compatible ways. The first pieces of the following code are
33 therefore taken from
34
a300f67 @UrsSchreiber added Cohesive.v
authored
35 ReflectiveSubcategory.v .
eca763b @UrsSchreiber added Cohesion.v
authored
36
37 *)
38
39 (* There is a full subcategory of discrete objects... *)
40
41 Parameter is_discrete : Type -> Type.
42
43 Axiom is_discrete_is_prop : forall X, is_prop (is_discrete X).
44
45 Axiom discrete_sum_of_discrete_is_discrete : forall X (P : X -> Type),
46 is_discrete X -> (forall x, is_discrete (P x)) -> is_discrete (sigT P).
47
48 (* ...and one of codiscrete objects. *)
49
50 Parameter is_codiscrete : Type -> Type.
51
52 Axiom is_codiscrete_is_prop : forall X, is_prop (is_codiscrete X).
53
54 Axiom codiscrete_sum_of_codiscrete_is_codiscrete : forall X (P : X -> Type),
55 is_discrete X -> (forall x, is_discrete (P x)) -> is_discrete (sigT P).
56
57 (* The discrete objects objects are internally reflective... *)
58
59 Parameter pi : Type -> Type.
60
61 Parameter map_to_pi : forall X, X -> pi X.
62
63 Axiom pi_is_discrete : forall X, is_discrete (pi X).
64
65 Axiom pi_is_reflection : forall X Y, is_discrete Y ->
66 is_equiv (fun f: pi X -> Y => f o (map_to_pi X)).
67
68 (* ... as are the codiscrete objects. *)
69
70 Parameter sharp : Type -> Type.
71
72 Parameter map_to_sharp : forall X, X -> sharp X.
73
74 Axiom sharp_is_codiscrete : forall X, is_codiscrete (sharp X).
75
76 Axiom sharp_is_reflection : forall X Y, is_codiscrete Y ->
77 is_equiv (fun f: sharp X -> Y => f o (map_to_sharp X)).
78
79
80 (* With the two reflective subcategories defined, the remaining
81 axiom to impose is that sharp exhibits an equivalence between them. *)
82
83 (* Name the two subcategories. *)
84
85 Definition DiscType : Type :=
86 sigT is_discrete.
87
88 Definition coDiscType : Type :=
89 sigT is_codiscrete.
90
91 (* Restrict sharp to a map between the two. *)
92
a300f67 @UrsSchreiber added Cohesive.v
authored
93 Definition sharp_on_discrete : DiscType -> coDiscType :=
eca763b @UrsSchreiber added Cohesion.v
authored
94 (fun f =>
95 existT
96 is_codiscrete
97 ( sharp (projT1 f) )
98 ( sharp_is_codiscrete ( (projT1 f) ) )
99 ).
100
101 (* This map is to exhibit an equivalence between the two *)
102
103 Axiom discrete_is_equivalent_to_codiscrete :
a300f67 @UrsSchreiber added Cohesive.v
authored
104 is_equiv sharp_on_discrete.
105
a0d4df6 @UrsSchreiber added Cohesion.v
authored
106 Definition equivalence_of_discrete_with_codiscrete :
107 equiv DiscType coDiscType.
108 Proof.
109 apply existT with sharp_on_discrete.
110 apply discrete_is_equivalent_to_codiscrete.
111 Defined.
112
113 (* In terms of this equivalence we now obtain the remaining functor flat. *)
114
115 Definition flat : Type -> Type :=
116 (fun A =>
117 projT1
118 (
119 (inverse equivalence_of_discrete_with_codiscrete)
120 ( existT
121 is_codiscrete
122 ( sharp A )
123 ( sharp_is_codiscrete A )
124 )
125 )
126 ).
eca763b @UrsSchreiber added Cohesion.v
authored
127
Something went wrong with that request. Please try again.