(************************************************************************)
(*         *      The Rocq Prover / The Rocq Development Team           *)
(*  v      *         Copyright INRIA, CNRS and contributors             *)
(* <O___,, * (see version control and CREDITS file for authors & dates) *)
(*   \VV/  **************************************************************)
(*    //   *    This file is distributed under the terms of the         *)
(*         *     GNU Lesser General Public License Version 2.1          *)
(*         *     (see LICENSE file for the text of the license)         *)
(************************************************************************)
(** * Finite sets library *)
(** This module proves many properties of finite sets that are consequences of the axiomatization in [FsetInterface] Contrary to the functor in [FsetProperties] it uses sets operations instead of predicates over sets, i.e. [mem x s=true] instead of [In x s], [equal s s'=true] instead of [Equal s s'], etc. *)
Require  FSetEqProperties.
Module WEqPropertiesOn (Import E:DecidableType)(M:WSetsOn E).
Module Import MP := WPropertiesOn E M.
Definition Add := MP.Add.
Section BasicProperties.
(** Some old specifications written with boolean equalities. *)
Variable s s' s'': t.
Variable x y z : elt.

Lemma remove_mem_2: ~E.eq x y -> mem y (remove x s)=mem y s.