Zulip Chat Archive

Stream: new members

Topic: Invalid type universe level


Shubham Kumar 🦀 (he/him) (Apr 21 2024 at 04:14):

The following code errors with a message - The Type universes are in u + 2 instead of u + 1 which is how inductive types must be smaller than or equal to universe level 1

inductive DecodingErr : Type where
| JErr : JSONErr → DecodingErr
| JParseErr : Prod FileContext ParseErr → DecodingErr
deriving Repr

error:

error: invalid universe level in constructor 'DecodingErr.JParseErr', parameter 'ParseErr' has type
  Type ?u.13626
at universe level
  ?u.13626+2
it must be smaller than or equal to the inductive datatype universe level
  1

Can anyone point me to a direction where I can correct this error?
The implementations of the other data types are

structure Bounds where
  startLine: Int
  startCol: Int
  endLine: Int
  endCol: Int
deriving Repr

and

structure FileContext where
  file : String
  range : Bounds
deriving Repr

Timo Carlin-Burns (Apr 21 2024 at 04:19):

JSONErr and ParseErr are autoimplicits in this code. Did you intend to refer to some pre-existing types?

Timo Carlin-Burns (Apr 21 2024 at 04:20):

If I make them explicit, perhaps the error is clearer

set_option autoImplicit false

structure Bounds where
  startLine: Int
  startCol: Int
  endLine: Int
  endCol: Int
deriving Repr

structure FileContext where
  file : String
  range : Bounds
deriving Repr

inductive DecodingErr : Type where
| JErr {JSONErr : Type} : JSONErr → DecodingErr
| JParseErr {ParseErr : Type} : Prod FileContext ParseErr → DecodingErr
deriving Repr

Timo Carlin-Burns (Apr 21 2024 at 04:21):

Here the JErr constructor takes two parameters, one of which is a Type. Since DecodingError can store types in Type, it might be in at least Type 1

Shubham Kumar 🦀 (he/him) (Apr 21 2024 at 04:22):

yeah the JSONErr is

def JSONErr : Type := Prod JSONPath String

and ParseErr is something that I haven't define yet so maybe using explict option might be the better first step.
I always forget to add this to every project.
Thanks for reminding me!

Shubham Kumar 🦀 (he/him) (Apr 21 2024 at 04:22):

unknown identifier 'ParseErr'

better


Last updated: May 02 2025 at 03:31 UTC