{-# OPTIONS --without-K #-}
open import Agda.Primitive
infixl 10 _≡_
infixl 50 _•_

data _≡_ { : Level} {A : Set } : (x y : A)  Set  where refl : {z : A}  z  z

Ω[_,_] : { : Level}  (A : Set )  (a : A)  Set 
Ω[ A , a ] = a  a

Ω²[_,_] : { : Level}  (A : Set )  (a : A)  Set 
Ω²[ A , a ] = Ω[ Ω[ A , a ] , refl ]

_•_ : { : Level}  {A : Set }  {x y z : A}  x  y  y  z  x  z
refl  refl = refl

Eckmann·Hilton : { : Level}  (A : Set )  (a : A)  (α β : Ω²[ A , a ])  α  β  β  α
Eckmann·Hilton A a α β = α•β≡α⋆β  α⋆β≡α⋆'β  α⋆'β≡β•α where
  sym : { : Level}  {A : Set }  {x y : A}  x  y  y  x
  sym 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
  ap : {ℓ₁ ℓ₂ : Level}  {A : Set ℓ₁}  {B : Set ℓ₂}  {x y : A}  (f : A  B)  (x  y)  f x  f y
  ap f refl = refl
  _•₁_ : { : Level}  {A : Set }  {a b c : A}  {p q : a  b}  (α : p  q)  (r : b  c)  (p  r  q  r)
  α •₁ refl = sym(ru _)  α  (ru _)
  _•₂_ : { : Level}  {A : Set }  {a b c : A}  {r s : b  c}  (q : a  b)  (β : r  s)  (q  r  q  s)
  refl •₂ β = sym(lu _)  β  (lu _)
  _⋆_ : { : Level}  {A : Set }  {a b c : A}  {p q : a  b}  {r s : b  c}  (α : p  q)  (β : r  s)  (p  r  q  s)
  α  β = (α •₁ _)  (_ •₂ β)
  _⋆'_ : { : Level}  {A : Set }  {a b c : A}  {p q : a  b}  {r s : b  c}  (α : p  q)  (β : r  s)  (p  r  q  s)
  α ⋆' β = (_ •₂ β)  (α •₁ _)
  α•β≡α⋆β : α  β  α  β
  α•β≡α⋆β = ap  x  α  x) (lu β  ru (refl  β))  ap  x  x  (refl  β  refl)) (lu α  ru (refl  α))
  α⋆β≡α⋆'β : α  β  α ⋆' β
  α⋆β≡α⋆'β = ⋆≡⋆' α β where
    ⋆≡⋆' : { : Level}  {A : Set }  {a b c : A}  {p q : a  b}  {r s : b  c}  (α : p  q)  (β : r  s)  (α  β  α ⋆' β)
    ⋆≡⋆' {p = refl} {q = refl} {r = refl} {s = refl} refl refl = refl
  α⋆'β≡β•α : α ⋆' β  β  α
  α⋆'β≡β•α = sym ((ap  x  β  x) (lu α  ru (refl  α)))  (ap  x  x  (refl  α  refl)) (lu β  ru (refl  β))))