更新 Coq 中的单个记录字段
Update single record field in Coq
我有一个包含很多字段的记录类型:
Record r : Set :=
R {
field1 : nat;
field2 : nat;
field3 : nat;
...
field2137 : nat;
}
我想要一个只更新该记录中一个字段的函数。在 Haskell 我会这样做
update2019 record x = record {field2019 = x}
如何在 Coq 中执行这样的操作?
不幸的是,Coq 不支持记录更新。对我们来说幸运的是,@tchajed 的 coq-record-update 库大大简化了这一过程。这是一个例子:
From RecordUpdate Require Import RecordSet.
Import RecordSetNotations.
Record r : Set :=
R {
f1 : nat;
f2 : nat;
f3 : nat;
}.
Instance eta_r : Settable _ := settable! R <f1; f2; f3>.
Definition update3 record x : r := record <| f3 := x |>.
有关详细信息,请参阅图书馆的 README.md 文件。
我有一个包含很多字段的记录类型:
Record r : Set :=
R {
field1 : nat;
field2 : nat;
field3 : nat;
...
field2137 : nat;
}
我想要一个只更新该记录中一个字段的函数。在 Haskell 我会这样做
update2019 record x = record {field2019 = x}
如何在 Coq 中执行这样的操作?
不幸的是,Coq 不支持记录更新。对我们来说幸运的是,@tchajed 的 coq-record-update 库大大简化了这一过程。这是一个例子:
From RecordUpdate Require Import RecordSet.
Import RecordSetNotations.
Record r : Set :=
R {
f1 : nat;
f2 : nat;
f3 : nat;
}.
Instance eta_r : Settable _ := settable! R <f1; f2; f3>.
Definition update3 record x : r := record <| f3 := x |>.
有关详细信息,请参阅图书馆的 README.md 文件。