{-# OPTIONS --without-K #-}
module agda.fibration where
open import agda.prelude
open import agda.postulates
infix 4 _↗_
_↗_ :
{l : Level}
{φ : Set}
{A : Set l}
(t : φ → A)
(x : A)
→
Set l
t ↗ x = ∀ u → t u ≡ x
module
Fib
(℘ :
{l : Level}
(Γ : Set l)
→
Set l)
(℘` :
{l m : Level}
{Γ : Set l}
{Δ : Set m}
(γ : Δ → Γ)
→
℘ Δ → ℘ Γ)
(℘`comp :
{l m n : Level}
{Γ : Set l}
{Δ : Set m}
{Θ : Set n}
(γ : Δ → Γ)
(σ : Θ → Δ)
(p : ℘ Θ)
→
℘` γ (℘` σ p) ≡ ℘` (γ ∘ σ) p)
(C : {l : Level} (P : ℘ (Set l)) → Set (ℓ₁ ⊔ l))
where
isFib :
{l l' : Level}
(Γ : Set l')
(A : Γ → Set l)
→
Set (ℓ₁ ⊔ l ⊔ l')
isFib Γ A = (p : ℘ Γ) → C (℘` A p)
Fib :
{l' : Level}
(l : Level)
(Γ : Set l')
→
Set (l' ⊔ lsuc l)
Fib l Γ = Σ A ∶ (Γ → Set l), isFib Γ A
infixl 5 _[_]
_[_] :
{l l' l'' : Level}
{Γ : Set l'}
{Γ' : Set l''}
(Φ : Fib l Γ)
(γ : Γ' → Γ)
→
Fib l Γ'
(A , α) [ γ ] = (A ∘ γ , α[γ]) where
α[γ] : isFib _ (A ∘ γ)
α[γ] p' = subst C (℘`comp A γ p') (α (℘` γ p'))
Fib₀ :
{l' : Level}
(Γ : Set l')
→
Set (ℓ₁ ⊔ l')
Fib₀ = Fib ℓ₀
module
Fib₀
(℘ :
{l : Level}
(Γ : Set l)
→
Set l)
(℘` :
{l m : Level}
{Γ : Set l}
{Δ : Set m}
(γ : Δ → Γ)
→
℘ Δ → ℘ Γ)
(℘`comp :
{l m n : Level}
{Γ : Set l}
{Δ : Set m}
{Θ : Set n}
(γ : Δ → Γ)
(σ : Θ → Δ)
(p : ℘ Θ)
→
℘` γ (℘` σ p) ≡ ℘` (γ ∘ σ) p)
(C : ℘ Set → Set₁) where
isFib :
{l' : Level}
(Γ : Set l')
(A : Γ → Set)
→
Set (ℓ₁ ⊔ l')
isFib Γ A = (p : ℘ Γ) → C (℘` A p)
Fib₀ :
{l' : Level}
(Γ : Set l')
→
Set (ℓ₁ ⊔ l')
Fib₀ Γ = Σ A ∶ (Γ → Set), isFib Γ A
infixl 5 _[_]
_[_] :
{l' l'' : Level}
{Γ : Set l'}
{Γ' : Set l''}
(Φ : Fib₀ Γ)
(γ : Γ' → Γ)
→
Fib₀ Γ'
(A , α) [ γ ] = (A ∘ γ , α[γ]) where
α[γ] : isFib _ (A ∘ γ)
α[γ] p' = subst C (℘`comp A γ p') (α (℘` γ p'))