Types Coq:宇宙作为变量的符号或定义

Types Coq:宇宙作为变量的符号或定义,types,coq,Types,Coq,是否有可能将一个符号或宇宙的定义定义为一个变量?以下 Universe x. Notation "/ x" := Type@{x}. 结果左侧x为变量,右侧x为常数: Check /u. (*Type@{x} : Type@{x+1}*) 你在找这样的东西吗 Set Universe Polymorphism. Definition in_type@{i} x := (x : Type@{i}). Check in_type@{Set} nat. 请注意,定义必须是universe多态的,

是否有可能将一个符号或宇宙的定义定义为一个变量?以下

Universe x.
Notation "/ x" := Type@{x}.
结果左侧
x
为变量,右侧
x
为常数:

Check /u. (*Type@{x} : Type@{x+1}*)

你在找这样的东西吗

Set Universe Polymorphism.
Definition in_type@{i} x := (x : Type@{i}).
Check in_type@{Set} nat.

请注意,定义必须是universe多态的,才能起作用。

的确,谢谢。有趣的是,同样的方法不适用于注释:
注释“type@{i}”:=type@{i}。失败检查类型@{Set}。(*Error:Undeclared universe:i*)
(可能是因为透明,因为
失败检查类型@{i}。
给出了相同的错误)方法是
设置universe多态性。表示法类型:=类型。选中类型@{{}。
我不确定你所说的透明度是什么意思。请注意,符号中的变量绑定在与universes完全不同的命名空间中。您可以对类似于
i universe
的内容发出功能请求,如在
符号“type@{i}”:=type@{i}(i universe)。
设置universe多态性。
是我的示例前面的前缀<代码>设置宇宙多态性。表示法类型:=类型。检查类型{{{}。给出了
语法错误:[constr:universe\u level]在“{”(在[instance])之后应该出现。
替换检查类型{Set}。给出了
错误:符号类型不能有universe实例,它的扩展头不以引用开头。
“透明性”指的是“突然展开”到
键入{i}
.PS。我在这里有一个定义就足够了——刚才提到,这不适用于带符号。(我使用的是Coq 8.6.1)哦,呃,
{i}
显然只适用于>=8.7+beta1。而且,哦,嗯,我认为这个错误是Coq中的一个错误。(报告为)这是有效的:
Set-Universe多态性。定义类型“:=type。表示法类型:=type”。检查类型@{Set}。
i-Universe的功能请求