首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在coq中导出记录的规范结构(ssreflect)

在coq中导出记录的规范结构(ssreflect)
EN

Stack Overflow用户
提问于 2018-07-25 10:43:34
回答 1查看 158关注 0票数 3

鉴于以下假设:

代码语言:javascript
复制
Variable A : finType.
Variable B : finType.
Variable C : finType.

记录的定义为:

代码语言:javascript
复制
Record example := Example {
       example_A : A;
       example_B : B;
       example_C : C;
}.

从直觉上看,似乎也必须以finType为例。

查看其他代码库,我看到人们使用表单的构造来派生只有一个非验证术语的记录的finType

代码语言:javascript
复制
Definition <record>_subType := Eval hnf in [subtype for <record-accessor>].
Definition <record>_finMixin := Eval hnf in [finMixin of <record> by <:].

但是在这种情况下,记录中有多个字段。

是否有自动为记录派生fintype的方法,如果没有,如何为记录派生fintype?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-25 15:01:19

通过显示您的类型是实现该接口的其他类型的撤回,可以导出数学组件中的许多接口实现。在您的示例中,我们只需将记录转换为元组。

代码语言:javascript
复制
From mathcomp Require Import
  ssreflect ssrfun ssrbool ssrnat eqtype seq choice fintype.

Variables A B C : finType.

Record example := Example {
  example_A : A;
  example_B : B;
  example_C : C
}.

Definition prod_of_example e :=
  let: Example a b c := e in (a, b, c).

Definition example_of_prod p :=
  let: (a, b, c) := p in Example a b c.

Lemma prod_of_exampleK : cancel prod_of_example example_of_prod.
Proof. by case. Qed.

Definition example_eqMixin :=
  CanEqMixin prod_of_exampleK.
Canonical example_eqType :=
  Eval hnf in EqType example example_eqMixin.
Definition example_choiceMixin :=
  CanChoiceMixin prod_of_exampleK.
Canonical example_choiceType :=
  Eval hnf in ChoiceType example example_choiceMixin.
Definition example_countMixin :=
  CanCountMixin prod_of_exampleK.
Canonical example_countType :=
  Eval hnf in CountType example example_countMixin.
Definition example_finMixin :=
  CanFinMixin prod_of_exampleK.
Canonical example_finType :=
  Eval hnf in FinType example example_finMixin.

在这个片段的末尾,example被声明为一个finType。(请注意,eqTypechoiceType等的所有其他声明也是必要的,因为finType是这些声明的子类。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51516954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档