
module LevelConstraints where

open import Common.Level

postulate
  a b     : Level
  OfLvl   : ∀ ℓ → Set ℓ → Set
  SameLvl : ∀ {ℓ} → Set ℓ → Set ℓ → Set

  -- Here we get two constraints by themselves unsolveable constraints:
  --   _18 ⊔ a = _18   (solved by _18 := a ⊔ ℓ, for any ℓ)
  --   a ⊔ _18 = a     (solved by _18 := a  or  _18 := 0)
  -- By looking at both constraints together we can find the unique solution
  --   _18 := a
  bar : (A : Set _)(B : Set a) → SameLvl A (A → B) → SameLvl B (A → B)
