[英]How to build a list of heterogeneous dependant pairs in Coq
我想能夠有依賴對一多相序列(T, f)
其中T
是在Set
和f
如果函數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 }.
有一些符號會更好,但你有它。
@ThéoWinterhalter 的答案是去這里的方法。 只需在他的答案中添加一個精確度 [我最初將其發布為評論,但這阻礙了代碼的可讀性......]:
您在這里尋找的類型是{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)].
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.