{-# OPTIONS --without-K #-}
open import Agda.Primitive
Π :
  {ℓ₁ ℓ₂ : Level}  →
  (A : Set ℓ₁)     →
  (B : A → Set ℓ₂) →
  Set (ℓ₁ ⊔ ℓ₂)
Π A B = (x : A) → B x
record Σ
  {ℓ₁ ℓ₂ : Level}
  (A : Set ℓ₁)
  (B : A → Set ℓ₂) :
  Set (ℓ₁ ⊔ ℓ₂)
  where
  constructor
    [_,_]
  field
    fst : A
    snd : B fst
infixl 50 _×_
_×_ :
  {ℓ₁ ℓ₂ : Level} →
  (A : Set ℓ₁)    →
  (B : Set ℓ₂)    →
  Set (ℓ₁ ⊔ ℓ₂)
A × B = Σ A λ a → B
infixl 10 _≡_
data _≡_
  {ℓ : Level}
  {A : Set ℓ} :
  (x y : A) → Set ℓ
  where
  refl : {z : A} → z ≡ z
refl' :
  {ℓ : Level} →
  {A : Set ℓ} →
  (x : A)     →
  x ≡ x
refl' x = refl
id :
  {ℓ : Level} →
  {X : Set ℓ} →
  (X → X)
id x = x
id' : 
  {ℓ : Level}    →
  (X : Set ℓ)    →
  (X → X)
id' X x = x
sym :
  {ℓ : Level} →
  {A : Set ℓ} →
  {x y : A}   →
  x ≡ y       →
  y ≡ x
sym refl = refl
infixl 50 _•_
_•_ :
  {ℓ : Level}      →
  {A : Set ℓ}      →
  {x y z : A}      →
  x ≡ y            →
  y ≡ z            →
  x ≡ z
refl • refl = refl
infixl 30 _≡•_
_≡•_ :
  {ℓ : Level}      →
  {A : Set ℓ}      →
  {x y z : A}      →
  {p q : x ≡ y}    →
  (s : p ≡ q)      →
  (r : y ≡ z)      →
  p • r ≡ q • r
refl ≡• refl = refl
infixl 30 _•≡_
_•≡_ :
  {ℓ : Level}      →
  {A : Set ℓ}      →
  {x y z : A}      →
  {p q : y ≡ z}    →
  (r : x ≡ y)      →
  (s : p ≡ q)      →
  r • p ≡ r • q
refl •≡ refl = refl
ass : 
  {ℓ : Level}             →
  {A : Set ℓ}             →
  {x y z w : A}           →
  {p : x ≡ y}             →
  {q : y ≡ z}             →
  {r : z ≡ w}             →
  (p • q) • r ≡ p • (q • r)
ass {p = refl} {q = refl} {r = refl} = refl
ru : 
  {ℓ : Level}    →
  {A : Set ℓ}    →
  {x y : A}      →
  (p : x ≡ y)    →
  p ≡ p • refl
ru refl = refl
lu : 
  {ℓ : Level}   →
  {A : Set ℓ}   →
  {x y : A}     →
  (p : x ≡ y)   →
  p ≡ refl • p
lu refl = refl
ri : 
  {ℓ : Level}      →
  {A : Set ℓ}      →
  {x y : A}        →
  (p : x ≡ y)      →
  p • sym p ≡ refl
ri refl = refl
li : 
  {ℓ : Level}      →
  {A : Set ℓ}      →
  {x y : A}        →
  (p : x ≡ y)      →
  sym p • p ≡ refl
li refl = refl
ii : 
  {ℓ : Level}   →
  {A : Set ℓ}   →
  {x y : A}     →
  (p : x ≡ y)   →
  p ≡ sym (sym p)
ii refl = refl