ssreflect finset理解中的使用条件

时间:2019-05-01 21:32:52

标签: coq ssreflect

我有一个函数f,它使用fintype A的斧头和P x的证明来返回fintype B的元素。对于所有满足P的x,我想返回fx的鳍集,可以这样写: / p>

From mathcomp
Require Import ssreflect ssrbool fintype finset.

Variable A B : finType.
Variable P : pred A.
Variable f : forall x : A, P x -> B.

Definition myset := [set (@f x _) | x : A & P x].

但是,这失败了,因为Coq没有在右边的信息中填充占位符,并且我不知道如何显式地提供它。

无论是在ssreflect代码还是在书中,我都没有找到有关如何执行此操作的指示。我意识到我可以通过使用sigma类型{x:A; P x}并修改f,但感觉比应该的要复杂得多。有没有一种简单/可读的方法可以做到这一点?

1 个答案:

答案 0 :(得分:2)

实际上,使事情按您建议的方式工作的最简单方法是使用sigma类型:

 git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

 export PATH=$PATH:/my-path/to/depot_tools

 mkdir ~/webrTEST && cd ~/webrtcTEST

 fetch --nohooks webrtc_android

 gclient sync

./build/install-build-deps.sh

但是,实际上,Definition myset := [set f (tagged x) | x : { x : A | P x }]. 有点奇怪,我想我们需要了解有关您的用例的更多详细信息,以了解您的去向。