-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Subobject classifiers #802
Changes from all commits
738a7eb
753b8ed
8f2b187
92031c9
bff8acd
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,186 @@ | ||||||
# Pullbacks in large precategories | ||||||
|
||||||
```agda | ||||||
module category-theory.pullbacks-in-large-precategories where | ||||||
``` | ||||||
|
||||||
<details><summary>Imports</summary> | ||||||
|
||||||
```agda | ||||||
open import category-theory.large-precategories | ||||||
|
||||||
open import foundation.action-on-identifications-functions | ||||||
open import foundation.cartesian-product-types | ||||||
open import foundation.contractible-types | ||||||
open import foundation.dependent-pair-types | ||||||
open import foundation.identity-types | ||||||
open import foundation.propositions | ||||||
open import foundation.unique-existence | ||||||
open import foundation.universe-levels | ||||||
``` | ||||||
|
||||||
</details> | ||||||
|
||||||
## Idea | ||||||
|
||||||
A pullback of two morphisms `f : hom y x` and `g : hom z x` in a category `C` | ||||||
consists of: | ||||||
|
||||||
- an object `w` | ||||||
- morphisms `p : hom w y` and `q : hom w z` such that | ||||||
- `f ∘ p = g ∘ q` together with the universal property that for every object | ||||||
`w'` and pair of morphisms `p' : hom w' y` and `q' : hom w' z` such that | ||||||
`f ∘ p' = g ∘ q'` there exists a unique morphism `h : hom w' w` such that | ||||||
- `p ∘ h = p'` | ||||||
- `q ∘ h = q'`. | ||||||
|
||||||
We say that `C` has all pullbacks if there is a choice of a pullback for each | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
object `x` and pair of morphisms into `x` in `C`. | ||||||
|
||||||
## Definition | ||||||
|
||||||
```agda | ||||||
module _ | ||||||
{α : Level → Level} {β : Level → Level → Level} | ||||||
(C : Large-Precategory α β) {l1 l2 l3 l4 : Level} | ||||||
where | ||||||
|
||||||
is-pullback-Large-Precategory : | ||||||
(x : obj-Large-Precategory C l1) | ||||||
(y : obj-Large-Precategory C l2) | ||||||
(z : obj-Large-Precategory C l3) | ||||||
(f : hom-Large-Precategory C y x) | ||||||
(g : hom-Large-Precategory C z x) → | ||||||
(w : obj-Large-Precategory C l4) | ||||||
(p : hom-Large-Precategory C w y) → | ||||||
(q : hom-Large-Precategory C w z) → | ||||||
comp-hom-Large-Precategory C f p = comp-hom-Large-Precategory C g q → | ||||||
UU (α l1 ⊔ β l1 l1 ⊔ β l1 l2 ⊔ β l1 l3 ⊔ β l1 l4) | ||||||
is-pullback-Large-Precategory x y z f g w p q _ = | ||||||
(w' : obj-Large-Precategory C l1) → | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this should mirror the definition of There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Just to confirm your question earlier, using the above reference, |
||||||
(p' : hom-Large-Precategory C w' y) → | ||||||
(q' : hom-Large-Precategory C w' z) → | ||||||
comp-hom-Large-Precategory C f p' = comp-hom-Large-Precategory C g q' → | ||||||
∃! | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Instead of using unique existence, we prefer to define universal properties in terms of certain evaluation maps being equivalences. Here, that unfolds to requiring that the map that sends a morphism There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe to expand a little on the above remark. Notice how this definition makes itself more readily available for use with univalence down the line. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm not sure I understand how this would be an isomorphism in the category of spans. Do you mean that postcomposition with There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ah, yes, my bad, you're right! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Also, I shouldn't have said span category. It's the cone category over the cospan of |
||||||
( hom-Large-Precategory C w' w) | ||||||
( λ h → | ||||||
( comp-hom-Large-Precategory C p h = p') × | ||||||
( comp-hom-Large-Precategory C q h = q')) | ||||||
|
||||||
pullback-Large-Precategory : | ||||||
(x : obj-Large-Precategory C l1) → | ||||||
(y : obj-Large-Precategory C l2) → | ||||||
(z : obj-Large-Precategory C l3) → | ||||||
hom-Large-Precategory C y x → | ||||||
hom-Large-Precategory C z x → | ||||||
UU (α l1 ⊔ α l4 ⊔ β l1 l1 ⊔ β l1 l2 ⊔ β l1 l3 ⊔ | ||||||
β l1 l4 ⊔ β l4 l1 ⊔ β l4 l2 ⊔ β l4 l3) | ||||||
pullback-Large-Precategory x y z f g = | ||||||
Σ (obj-Large-Precategory C l4) λ w → | ||||||
Σ (hom-Large-Precategory C w y) λ p → | ||||||
Σ (hom-Large-Precategory C w z) λ q → | ||||||
Σ (comp-hom-Large-Precategory C f p | ||||||
= comp-hom-Large-Precategory C g q) λ α → | ||||||
is-pullback-Large-Precategory x y z f g w p q α | ||||||
|
||||||
has-all-pullbacks-Large-Precategory : | ||||||
UU (α l1 ⊔ α l2 ⊔ α l3 ⊔ α l4 ⊔ β l1 l1 ⊔ β l1 l2 ⊔ β l1 l3 ⊔ | ||||||
β l1 l4 ⊔ β l2 l1 ⊔ β l3 l1 ⊔ β l4 l1 ⊔ β l4 l2 ⊔ β l4 l3) | ||||||
has-all-pullbacks-Large-Precategory = | ||||||
(x : obj-Large-Precategory C l1) → | ||||||
(y : obj-Large-Precategory C l2) → | ||||||
(z : obj-Large-Precategory C l3) → | ||||||
(f : hom-Large-Precategory C y x) → | ||||||
(g : hom-Large-Precategory C z x) → | ||||||
pullback-Large-Precategory x y z f g | ||||||
|
||||||
module _ | ||||||
{α : Level → Level} {β : Level → Level → Level} | ||||||
(C : Large-Precategory α β) {l1 l2 : Level} | ||||||
(t : has-all-pullbacks-Large-Precategory C) | ||||||
(x y z : obj-Large-Precategory C l1) | ||||||
(f : hom-Large-Precategory C y x) | ||||||
(g : hom-Large-Precategory C z x) | ||||||
where | ||||||
|
||||||
object-pullback-Large-Precategory : obj-Large-Precategory C l2 | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||||||
object-pullback-Large-Precategory = pr1 (t x y z f g) | ||||||
|
||||||
pr1-pullback-Large-Precategory : | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Usually, I would want to say that you should take a look at |
||||||
hom-Large-Precategory C object-pullback-Large-Precategory y | ||||||
pr1-pullback-Large-Precategory = pr1 (pr2 (t x y z f g)) | ||||||
|
||||||
pr2-pullback-Large-Precategory : | ||||||
hom-Large-Precategory C object-pullback-Large-Precategory z | ||||||
pr2-pullback-Large-Precategory = pr1 (pr2 (pr2 (t x y z f g))) | ||||||
|
||||||
pullback-square-Large-Precategory-comm : | ||||||
comp-hom-Large-Precategory C f pr1-pullback-Large-Precategory = | ||||||
comp-hom-Large-Precategory C g pr2-pullback-Large-Precategory | ||||||
pullback-square-Large-Precategory-comm = pr1 (pr2 (pr2 (pr2 (t x y z f g)))) | ||||||
|
||||||
module _ | ||||||
(w' : obj-Large-Precategory C l1) | ||||||
(p' : hom-Large-Precategory C w' y) | ||||||
(q' : hom-Large-Precategory C w' z) | ||||||
(ε : comp-hom-Large-Precategory C f p' | ||||||
= comp-hom-Large-Precategory C g q') | ||||||
where | ||||||
|
||||||
morphism-into-pullback-Large-Precategory : | ||||||
hom-Large-Precategory C w' object-pullback-Large-Precategory | ||||||
morphism-into-pullback-Large-Precategory = | ||||||
pr1 (pr1 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p' q' ε)) | ||||||
|
||||||
morphism-into-pullback-comm-pr1-Large-Precategory : | ||||||
comp-hom-Large-Precategory C | ||||||
pr1-pullback-Large-Precategory | ||||||
morphism-into-pullback-Large-Precategory = | ||||||
p' | ||||||
morphism-into-pullback-comm-pr1-Large-Precategory = | ||||||
pr1 (pr2 (pr1 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p' q' ε))) | ||||||
|
||||||
morphism-into-pullback-comm-pr2-Large-Precategory : | ||||||
comp-hom-Large-Precategory C | ||||||
pr2-pullback-Large-Precategory | ||||||
morphism-into-pullback-Large-Precategory = | ||||||
q' | ||||||
morphism-into-pullback-comm-pr2-Large-Precategory = | ||||||
pr2 (pr2 (pr1 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p' q' ε))) | ||||||
|
||||||
is-unique-morphism-into-pullback-Large-Precategory : | ||||||
(h' : hom-Large-Precategory C w' object-pullback-Large-Precategory) → | ||||||
comp-hom-Large-Precategory C pr1-pullback-Large-Precategory h' = p' → | ||||||
comp-hom-Large-Precategory C pr2-pullback-Large-Precategory h' = q' → | ||||||
morphism-into-pullback-Large-Precategory = h' | ||||||
is-unique-morphism-into-pullback-Large-Precategory h' η θ = | ||||||
ap | ||||||
( pr1) | ||||||
( pr2 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p' q' ε) (h' , η , θ)) | ||||||
|
||||||
module _ | ||||||
{α : Level → Level} {β : Level → Level → Level} | ||||||
{l1 l2 l3 l4 : Level} (C : Large-Precategory α β) | ||||||
(x : obj-Large-Precategory C l1) | ||||||
(y : obj-Large-Precategory C l2) | ||||||
(z : obj-Large-Precategory C l3) | ||||||
(f : hom-Large-Precategory C y x) | ||||||
(g : hom-Large-Precategory C z x) | ||||||
(w : obj-Large-Precategory C l4) | ||||||
Comment on lines
+164
to
+169
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You probably want There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good point! I'll change this in the other file too. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Also, when they are implicit, I would place |
||||||
(p : hom-Large-Precategory C w y) | ||||||
(q : hom-Large-Precategory C w z) | ||||||
(ε : comp-hom-Large-Precategory C f p = comp-hom-Large-Precategory C g q) | ||||||
where | ||||||
|
||||||
is-prop-is-pullback-Large-Precategory : | ||||||
is-prop (is-pullback-Large-Precategory C x y z f g w p q ε) | ||||||
is-prop-is-pullback-Large-Precategory = | ||||||
is-prop-Π³ (λ w' p' q' → is-prop-function-type is-property-is-contr) | ||||||
|
||||||
is-pullback-prop-Large-Precategory : | ||||||
Prop (α l1 ⊔ β l1 l1 ⊔ β l1 l2 ⊔ β l1 l3 ⊔ β l1 l4) | ||||||
pr1 is-pullback-prop-Large-Precategory = | ||||||
is-pullback-Large-Precategory C x y z f g w p q ε | ||||||
pr2 is-pullback-prop-Large-Precategory = | ||||||
is-prop-is-pullback-Large-Precategory | ||||||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We write terms in boldface when defining them, and add links when mentioning terms for the first time in a file that are defined elsewhere.