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