Library UniMath.CategoryTheory.Presheaves.Sites
Require Import UniMath.MoreFoundations.All.
Require Import UniMath.CategoryTheory.Core.Prelude.
Require Import UniMath.CategoryTheory.Core.PosetCat.
Require Import UniMath.CategoryTheory.Presheaves.SubobjectClassifier.
Local Open Scope cat.
Require Import UniMath.CategoryTheory.Core.Prelude.
Require Import UniMath.CategoryTheory.Core.PosetCat.
Require Import UniMath.CategoryTheory.Presheaves.SubobjectClassifier.
Local Open Scope cat.
Definition grothendieck_topology
(C : category)
: UU
:= ∑ (P : ∏ (x : C), sieve x → hProp),
(∏ (x : C),
P x (truth_sieve x))
×
(∏ (x y : C)
(f : x --> y)
(ω : sieve y),
P y ω
→ P x (f^* ω))
×
(∏ (y : C)
(ω₁ ω₂ : sieve y),
P y ω₁
→ (∏ (x : C) (h : x --> y), ω₁ _ h → P x (h^* ω₂))
→ P y ω₂).
Definition make_grothendieck_topology
{C : category}
(P : ∏ (x : C), sieve x → hProp)
(Pt : ∏ (x : C), P x (truth_sieve x))
(Pp : ∏ (x y : C)
(f : x --> y)
(ω : sieve y),
P y ω
→ P x (f^* ω))
(PT : ∏ (y : C)
(ω₁ ω₂ : sieve y),
P y ω₁
→ (∏ (x : C) (h : x --> y), ω₁ _ h → P x (h^* ω₂))
→ P y ω₂)
: grothendieck_topology C
:= P ,, Pt ,, Pp ,, PT.
(C : category)
: UU
:= ∑ (P : ∏ (x : C), sieve x → hProp),
(∏ (x : C),
P x (truth_sieve x))
×
(∏ (x y : C)
(f : x --> y)
(ω : sieve y),
P y ω
→ P x (f^* ω))
×
(∏ (y : C)
(ω₁ ω₂ : sieve y),
P y ω₁
→ (∏ (x : C) (h : x --> y), ω₁ _ h → P x (h^* ω₂))
→ P y ω₂).
Definition make_grothendieck_topology
{C : category}
(P : ∏ (x : C), sieve x → hProp)
(Pt : ∏ (x : C), P x (truth_sieve x))
(Pp : ∏ (x y : C)
(f : x --> y)
(ω : sieve y),
P y ω
→ P x (f^* ω))
(PT : ∏ (y : C)
(ω₁ ω₂ : sieve y),
P y ω₁
→ (∏ (x : C) (h : x --> y), ω₁ _ h → P x (h^* ω₂))
→ P y ω₂)
: grothendieck_topology C
:= P ,, Pt ,, Pp ,, PT.
Definition site
: UU
:= ∑ (C : category), grothendieck_topology C.
Definition make_site
(C : category)
(G : grothendieck_topology C)
: site
:= C ,, G.
Coercion site_to_cat
(C : site)
: category
:= pr1 C.
Definition site_to_sieve_pred
(C : site)
(x : C)
(ω : sieve x)
: hProp
:= pr12 C x ω.
Coercion site_to_sieve_pred : site >-> Funclass.
Proposition site_truth_sieve
{C : site}
(x : C)
: C x (truth_sieve x).
Proof.
exact (pr122 C x).
Defined.
Proposition site_sieve_stable
{C : site}
{x y : C}
(f : x --> y)
{ω : sieve y}
(p : C y ω)
: C x (f^* ω).
Proof.
exact (pr1 (pr222 C) x y f ω p).
Defined.
Proposition site_trans_sieve
{C : site}
{y : C}
{ω₁ ω₂ : sieve y}
(p : C y ω₁)
(H : ∏ (x : C) (h : x --> y), ω₁ x h → C x (h^* ω₂))
: C y ω₂.
Proof.
exact (pr2 (pr222 C) y ω₁ ω₂ p H).
Defined.
: UU
:= ∑ (C : category), grothendieck_topology C.
Definition make_site
(C : category)
(G : grothendieck_topology C)
: site
:= C ,, G.
Coercion site_to_cat
(C : site)
: category
:= pr1 C.
Definition site_to_sieve_pred
(C : site)
(x : C)
(ω : sieve x)
: hProp
:= pr12 C x ω.
Coercion site_to_sieve_pred : site >-> Funclass.
Proposition site_truth_sieve
{C : site}
(x : C)
: C x (truth_sieve x).
Proof.
exact (pr122 C x).
Defined.
Proposition site_sieve_stable
{C : site}
{x y : C}
(f : x --> y)
{ω : sieve y}
(p : C y ω)
: C x (f^* ω).
Proof.
exact (pr1 (pr222 C) x y f ω p).
Defined.
Proposition site_trans_sieve
{C : site}
{y : C}
{ω₁ ω₂ : sieve y}
(p : C y ω₁)
(H : ∏ (x : C) (h : x --> y), ω₁ x h → C x (h^* ω₂))
: C y ω₂.
Proof.
exact (pr2 (pr222 C) y ω₁ ω₂ p H).
Defined.