List 如何在Coq中建立异构依赖对列表
我希望能够有一个异构的依赖对序列List 如何在Coq中建立异构依赖对列表,list,types,coq,List,Types,Coq,我希望能够有一个异构的依赖对序列(T,f),其中T位于Set中,如果函数T->bool如 Definition classif : seq (forall T : Set, T -> bool) := [:: (fun b : bool => b); (fun n : nat => false)]. 注意:我对列表使用SSReflect语法。 显然,上面写的类型不正确 可能吗?您正在寻找依赖对,而正在编写依赖函数。 指向类型的类型为 { A : Set & A
(T,f)
,其中T
位于Set
中,如果函数T->bool
如
Definition classif :
seq (forall T : Set, T -> bool) :=
[:: (fun b : bool => b); (fun n : nat => false)].
注意:我对列表使用SSReflect语法。
显然,上面写的类型不正确
可能吗?您正在寻找依赖对,而正在编写依赖函数。 指向类型的类型为
{ A : Set & A }
然后您可以构建例如nat
和1
对:
Check (existT (fun A : Set => A) nat 1) : { A : Set & A }.
使用一些符号会更好,但您已经有了它。您正在寻找依赖对,而正在编写依赖函数。 指向类型的类型为
{ A : Set & A }
然后您可以构建例如nat
和1
对:
Check (existT (fun A : Set => A) nat 1) : { A : Set & A }.
有了一些记号会更好,但你已经有了。@ThéoWinterhalter的答案是这里的方法。只需添加一个精确的w.r.t.他的答案[我最初将其作为注释发布,但这妨碍了代码的可读性…]: 您在这里查找的类型是
{T:Set&T->bool}
,它是一个的∑-类型,依赖于以下条件:
Print sigT.
Inductive sigT (A : Type) (P : A -> Type) : Type :=
existT : forall x : A, P x -> {x : A & P x}
为了简化您对classif
的定义,您还可以定义一个快捷方式:
From mathcomp Require Import all_ssreflect.
Set Implicit Arguments.
Definition sigma (T' : Set) f := (existT (fun A : Set => A -> bool) T' f).
Definition classif :
seq {T : Set & T -> bool} :=
[:: sigma (fun b : bool => b); sigma (fun n : nat => false)].
@泰奥威特的答案是走这条路。只需添加一个精确的w.r.t.他的答案[我最初将其作为注释发布,但这妨碍了代码的可读性…]: 您在这里查找的类型是
{T:Set&T->bool}
,它是一个的∑-类型,依赖于以下条件:
Print sigT.
Inductive sigT (A : Type) (P : A -> Type) : Type :=
existT : forall x : A, P x -> {x : A & P x}
为了简化您对classif
的定义,您还可以定义一个快捷方式:
From mathcomp Require Import all_ssreflect.
Set Implicit Arguments.
Definition sigma (T' : Set) f := (existT (fun A : Set => A -> bool) T' f).
Definition classif :
seq {T : Set & T -> bool} :=
[:: sigma (fun b : bool => b); sigma (fun n : nat => false)].
谢谢我没有意识到sigT是足够的。我终于创造了自己的唱片。谢谢!我没有意识到sigT是足够的。我终于创造了自己的唱片。