Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Types Coq:固定宇宙层次结构和显式宇宙_Types_Coq - Fatal编程技术网

Types Coq:固定宇宙层次结构和显式宇宙

Types Coq:固定宇宙层次结构和显式宇宙,types,coq,Types,Coq,我正在研究使用Coq构建固定宇宙层次结构的可能性。尝试在构建过程中使用常量(2、3、4)失败:最后,所有组合仍然进行类型检查(即,所有声明的通用都被视为分层任意): 请注意,definitionk:=Type@{2}和definitionk:=Type@{x+1}会导致语法错误。是否可以使用显式宇宙来构建固定的层次结构?如果可以,如何使用 我的工作方式如下: Universe X Y Z. Definition x := Type@{X}. Definition y := Type@{Y}. D

我正在研究使用Coq构建固定宇宙层次结构的可能性。尝试在构建过程中使用常量(2、3、4)失败:最后,所有组合仍然进行类型检查(即,所有声明的通用都被视为分层任意):


请注意,
definitionk:=Type@{2}
definitionk:=Type@{x+1}
会导致语法错误。是否可以使用显式宇宙来构建固定的层次结构?如果可以,如何使用

我的工作方式如下:

Universe X Y Z.
Definition x := Type@{X}.
Definition y := Type@{Y}.
Definition z := Type@{Z}.

(* bogus definition to fix hierarchy *)
Definition dummy:x:y:z := unit.

Check x:y.
(* ok:
   x : y
        : y
*)

Check x:z.
(* also ok (transitivity is still acceptable):
   x : z
        : z
*)

Check z:y.
(* Error:
   The term "z" has type "Type@{Z+1}" while it is expected to have type "y"
   (universe inconsistency: Cannot enforce Z < Y because Y < Z).
*)
宇宙X Y Z。
定义x:=类型@{x}。
定义y:=类型@{y}。
定义z:=类型@{z}。
(*修复层次结构的虚假定义*)
定义:x:y:z:=单位。
支票x:y。
(*好:
x:y
:y
*)
勾选x:z。
(*也可以(传递性仍然可以接受):
x:z
:z
*)
检查z:y。
(*错误:
术语“z”的类型为“type@{z+1}”,而预期的类型为“y”
(宇宙不一致:无法强制Z

(但也许有比我知识更渊博的人会提出更好的想法?特别是,这种方法不允许声明固定常数,因此在声明的级别之间可能仍然存在任意多个级别。)

您可以规定一个固定的宇宙层次结构,其中包含一条公理:

Universe X Y Z.
Notation X := Type@{X}.
Notation Y := Type@{Y}.
Definition Z := Type@{Z}.
Axiom fuh: (fun (x:Type) => x)(X:Y:Z).
Check X:Y.
Check Y:Z.
Check X:Z.
Fail Check Z:Y.
Fail Check Y:X.
Fail Check Z:X.
无人提出的特定问题仍然是一个公开的挑战

可以使用以下命令:

宇宙x y z。
约束x

请注意,这种方法并不能真正解决宇宙水平问题。

显然,这就是它的本意。我怀疑不可能确定声明的宇宙变量的级别我认为你是对的。我没有看过源代码,但从我读过的论文中,我收集到宇宙级别没有显式数字,只有抽象变量之间的约束。不过我可能错了。如果你想确定最好的询问地点是Coq俱乐部的邮件列表。
Universe X Y Z.
Notation X := Type@{X}.
Notation Y := Type@{Y}.
Definition Z := Type@{Z}.
Axiom fuh: (fun (x:Type) => x)(X:Y:Z).
Check X:Y.
Check Y:Z.
Check X:Z.
Fail Check Z:Y.
Fail Check Y:X.
Fail Check Z:X.
Universes x y z.

Constraint x < y, y < z.

Definition X := Type@{x}.
Definition Y := Type@{y}.
Definition Z := Type@{z}.

Check X:Y.
Check Y:Z.
Check X:Z.
Fail Check Z:Y.
Fail Check Y:X.
Fail Check Z:X.