gpt4 book ai didi

coq - 我可以使用 Inductive 类型的符号来在 Coq 中定义该类型吗?

转载 作者:行者123 更新时间:2023-12-04 20:32:25 25 4
gpt4 key购买 nike

假设我有这样的东西:

Inductive SubtypeOf :
Gamma -> UnsafeType -> Type -> Set :=
| SubRefl :
forall (gamma : GammaEnv) (u : UnsafeType)
, SubtypeOf gamma u u
| SubTrans :
forall (gamma : GammaEnv) (u1 u2 u3 : Type)
, SubtypeOf gamma u1 u2
-> SubtypeOf gamma u2 u3
-> SubtypeOf gamma u1 u3.

并定义了一个符号:

Notation "G |- x <: y " := (SubtypeOf G x y) (at level 50).

有什么方法可以将此符号纳入 SubtypeOf 的定义范围? ,所以我可以这样做:

Inductive SubtypeOf :
Gamma -> UnsafeType -> Type -> Set :=
| SubRefl :
forall (gamma : GammaEnv) (u : UnsafeType)
, gamma |- u <: u
| SubTrans :
forall (gamma : GammaEnv) (u1 u2 u3 : Type)
, gamma |- u1 <: u2
-> gamma |- u2 <: u3
-> gamma |- u1 <: u3.

最佳答案

扩展 ejgallego 的评论,有 Reserved Notation s 的文档和 a where clause for inductives .这是有效的代码:

Reserved Notation "G |-  x <: y" (at level 50, x at next level).
Definition UnsafeType := Type.
Axiom Gamma : Set.
Notation GammaEnv := Gamma.
Inductive SubtypeOf :
Gamma -> UnsafeType -> Type -> Type :=
| SubRefl :
forall (gamma : GammaEnv) (u : UnsafeType)
, gamma |- u <: u
| SubTrans :
forall (gamma : GammaEnv) (u1 u2 u3 : Type)
, gamma |- u1 <: u2
-> gamma |- u2 <: u3
-> gamma |- u1 <: u3
where "G |- x <: y " := (SubtypeOf G x y).

注意我们必须把x在下一级 (49),因此 <:被解析为 |- , 而不是被吸收到 x .

关于coq - 我可以使用 Inductive 类型的符号来在 Coq 中定义该类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42237410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com