Coq中MSets的示例用法

Car*_*lin 5 set coq

MSets似乎是使用OCaml样式的有限集的方法。可悲的是,我找不到示例用法。

如何定义一个空的MSet或单例的MSet?如何将两个MSets结合在一起?

Ant*_*nov 5

让我为有限的自然数展示一个简单的例子:

From Coq
Require Import MSets Arith.

(* We can make a set out of an ordered type *)
Module S := Make Nat_as_OT.

Definition test := S.union (S.singleton 42)
                           (S.empty).

(* membership *)
Compute S.mem 0 test.   (* evaluates to `false` *)
Compute S.mem 42 test.  (* evaluates to `true`  *)

Compute S.is_empty test.     (* evaluates to `false` *)
Compute S.is_empty S.empty.  (* evaluates to `true` *)
Run Code Online (Sandbox Code Playgroud)

您可以阅读Coq.MSets.MSetInterface以发现提供的操作和规格MSet

  • 您可以查看基于 typecalsses 的 MathClasses 库,例如参见 [​​here](https://github.com/math-classes/math-classes/blob/751e63b260bd2f78b280f2566c08a18034bd40b3/interfaces/finite_sets.v) (2认同)