{-# OPTIONS --without-K #-}
open import Base
open import Equality
module logic.Fibers {ℓᵢ ℓⱼ} {A : Type ℓᵢ} {B : Type ℓⱼ} where
-- The fiber of a map over a point is given by
fib : (f : A → B) → B → Type (ℓᵢ ⊔ ℓⱼ)
fib f b = Σ A (λ a → f a == b)
-- A function applied over the fiber returns the original point
fib-eq : {f : A → B} → {b : B} → (h : fib f b) → f (fst h) == b
fib-eq (a , α) = α
-- Each point is on the fiber of its image
fib-image : {f : A → B} → {a : A} → fib f (f a)
fib-image {f} {a} = a , refl (f a)