JetBrains / Arend

The Arend Proof Assistant
https://arend-lang.github.io/
Apache License 2.0
689 stars 33 forks source link

Additional levels #217

Closed valis closed 2 years ago

valis commented 4 years ago

Every definition has a single (predicative) level, but it might be useful to have a definition with additional levels. For example, the type of categories might have two levels: for objects and for morphisms. We can allow this as follows:

\func foo (l : \Level \lp) (A : \Type \lp) (B : \Type l) => {?}

Here, l is an addition level; \lp after \Level just indicates that this is a predictive level (as opposed to homotopy level). Maybe, we can add two keywords instead (e.g., \pLevel and \hLevel).

Also, we can add equations in the declaration of additional levels. For example,

\func foo (lp : \Level<= \suc \lp) (lh : \Level>= \max \lh 0) (A : \Type lp lh) => {?}

Additional levels will be implicit just as ordinary levels and will be inferred as usual. If needed, they can be specified explicitly after \lp and \lh arguments.

valis commented 2 years ago

Fixed