cat/src/Cat/Category/Properties.agda

91 lines
3.1 KiB
Agda
Raw Normal View History

2018-01-24 15:38:28 +00:00
{-# OPTIONS --allow-unsolved-metas --cubical #-}
module Cat.Category.Properties where
open import Agda.Primitive
open import Data.Product
open import Cubical.PathPrelude
open import Cat.Category
open import Cat.Functor
open import Cat.Categories.Sets
module _ { ' : Level} { : Category '} { A B : .Category.Object } {X : .Category.Object} (f : .Category.Arrow A B) where
open Category
open IsCategory (isCategory)
iso-is-epi : Isomorphism { = } f Epimorphism { = } {X = X} f
iso-is-epi (f- , left-inv , right-inv) g₀ g₁ eq =
begin
g₀ ≡⟨ sym (proj₁ ident)
g₀ 𝟙 ≡⟨ cong (_⊕_ g₀) (sym right-inv)
g₀ (f f-) ≡⟨ assoc
(g₀ f) f- ≡⟨ cong (λ φ φ f-) eq
(g₁ f) f- ≡⟨ sym assoc
g₁ (f f-) ≡⟨ cong (_⊕_ g₁) right-inv
g₁ 𝟙 ≡⟨ proj₁ ident
g₁
iso-is-mono : Isomorphism { = } f Monomorphism { = } {X = X} f
iso-is-mono (f- , (left-inv , right-inv)) g₀ g₁ eq =
begin
g₀ ≡⟨ sym (proj₂ ident)
𝟙 g₀ ≡⟨ cong (λ φ φ g₀) (sym left-inv)
(f- f) g₀ ≡⟨ sym assoc
f- (f g₀) ≡⟨ cong (_⊕_ f-) eq
f- (f g₁) ≡⟨ assoc
(f- f) g₁ ≡⟨ cong (λ φ φ g₁) left-inv
𝟙 g₁ ≡⟨ proj₂ ident
g₁
iso-is-epi-mono : Isomorphism { = } f Epimorphism { = } {X = X} f × Monomorphism { = } {X = X} f
iso-is-epi-mono iso = iso-is-epi iso , iso-is-mono iso
{-
epi-mono-is-not-iso : { '} ¬ (( : Category {} {'}) {A B X : Object } (f : Arrow A B ) Epimorphism { = } {X = X} f Monomorphism { = } {X = X} f Isomorphism { = } f)
epi-mono-is-not-iso f =
let k = f {!!} {!!} {!!} {!!}
in {!!}
-}
2018-01-25 11:01:37 +00:00
module _ { : Level} { : Category } where
open import Cat.Category
open Category
open import Cat.Categories.Cat using (Cat)
module Cat = Cat.Categories.Cat
2018-01-24 15:38:28 +00:00
open Exponential
2018-01-25 11:01:37 +00:00
private
Cat = Cat
2018-01-25 11:01:37 +00:00
-- Exp : Set (lsuc (lsuc ))
-- Exp = Exponential (Cat (lsuc ) )
-- Sets (Opposite )
2018-01-21 20:29:15 +00:00
2018-01-25 11:01:37 +00:00
_⇑_ : (A B : Cat .Object) Cat .Object
A B = (exponent A B) .obj
where
2018-01-25 12:58:56 +00:00
open HasExponentials (Cat.hasExponentials )
2018-01-21 20:29:15 +00:00
2018-01-25 11:01:37 +00:00
private
-- I need `Sets` to be a `Category ` but it simlpy isn't.
Setz : Category
Setz = {!Sets!}
:func*: : .Object (Setz Opposite ) .Object
:func*: A = {!!}
2018-01-25 12:58:56 +00:00
-- prsh = presheaf { = }
2018-01-25 13:11:28 +00:00
-- k = prsh {!!}
2018-01-25 12:58:56 +00:00
-- :func*:' : .Object Presheaf
-- :func*:' = prsh
-- module _ {A B : .Object} (f : .Arrow A B) where
-- open import Cat.Categories.Fun
-- :func→:' : NaturalTransformation (prsh A) (prsh B)
2018-01-25 11:01:37 +00:00
yoneda : Functor (Setz (Opposite ))
yoneda = record
{ func* = :func*:
2018-01-25 13:11:28 +00:00
; func→ = {!!}
2018-01-25 11:01:37 +00:00
; ident = {!!}
; distrib = {!!}
}