Я изучаю возможность использования explicit universes
для построения фиксированной иерархии юниверсов в Coq. Попытка использовать константы (2, 3, 4) в строительстве он не удалось: в конце концов, все комбинации еще typecheck (т.е. все объявленные вселенные рассматриваются как иерархически произвольно):Coq: фиксированная иерархия юниверсов с явными юниверсами
Universe k l m x y z.
Let x := 2.
Definition k := [email protected]{x}.
Notation y := 3.
Definition l := [email protected]{y}.
Notation z := 4.
Definition m := [email protected]{z}.
Print x. (*x = 2: nat*)
Print y. (*Notation y := 3*)
Check l:k:m.
Check m:k:l.
Check k:m:l.
Обратите внимание, что Definition k := [email protected]{2}
и Definition k := [email protected]{x+1}
результат в синтаксической ошибке. Можно ли использовать явные юниверсы для построения фиксированной иерархии, и если да, то как?
Очевидно, что так оно и должно было быть сделано. Я подозреваю, что невозможно зафиксировать уровни объявленных переменных юниверса – jaam
Я думаю, что вы правы. Я не смотрел исходный код, но из прочитанных статей я понял, что нет явных чисел для уровней юниверсов, а только ограничений между абстрактными переменными. Возможно, я ошибаюсь. Если вы хотите быть уверенным, что лучше всего спросить, это список рассылки Coq Club. –