[Agda] Is it possible to switch off universes checking?

effectfully effectfully at gmail.com
Mon Dec 28 18:55:59 CET 2015


Hi. I have a data type that contains a lot of level arithmetic. In
order to satisfy the typechecker I have to write

  call   : ∀ {Rs Rs′} i
         -> (Lift∃ᵐ (lsuc ∘ proj₁) i αεs λ A ->
               Lift∃ᶻ r′ˡ i αεs ρs λ R′ ->
                 Lift∃ᵐ proj₂ i αεs {lookupᶻ i Ψs (lookupᵐ i Rs) A R′} λ _ ->
                   Lift∀ᵐ  proj₁ i αεs λ x ->
                     Eff Ψs B (replaceᵐ i (R′ x) Rs) Rs′)
         -> Eff Ψs B Rs Rs′

instead of

  call   : ∀ {Rs Rs′} i {A R′}
         -> lookupᶻ i Ψs (lookupᵐ i Rs) A R′
         -> (∀ x -> Eff Ψs B (replaceᵐ i (R′ x) Rs) Rs′)
         -> Eff Ψs B Rs Rs′

Those `Lift*' are functions, so I'm no longer able to write

  h (call i a f) = ...

Instead, it's

  h (call i p) = let a , f = runLifts p in ...

(I haven't tried yet to define this `runLifts' though).

It would be great to have something like a NO_UNIVERSE_CHECK pragma,
so it's possible to write e.g.

{-# NO_UNIVERSE_CHECK #-}
data D α β : Set β where
  c : Set α -> D α β

Is is possible to implement or somehow emulate this in Agda?


More information about the Agda mailing list