2017-06-28 4 views

Répondre

3

Laissez-moi vous montrer un exemple simple pour des ensembles finis de nombres naturels:

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` *) 

Vous pouvez lire Coq.MSets.MSetInterface pour découvrir les opérations et les spécifications MSet s fournissent.

+0

Merci beaucoup! L'exigence selon laquelle nous travaillons avec un 'OrderedType' est peut-être un peu désagréable, n'y a-t-il pas de formulations d'ensembles qui reposent sur des classes de types à la place? –

+1

Vous pouvez consulter la bibliothèque MathClasses basée sur typecalsses, voir par ex. [ici] (https://github.com/math-classes/math-classes/blob/751e63b260bd2f78b280f2566c08a18034bd40b3/interfaces/finite_sets.v) –

+0

C'est juste merveilleux, merci Anton. –