Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
List 如何在Coq中建立异构依赖对列表_List_Types_Coq - Fatal编程技术网

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是足够的。我终于创造了自己的唱片。