Functions for Sets of Propositions with and without sharing

### Sets of Propositions

`type t`````

Sets of propositions. The invariant is maintaned that Prop.prop_rename_primed_footprint_vars is called on any prop added to the set.

`val compare : t ‑> t ‑> int`

Compare propsets

`val singleton : InferIR.Tenv.t ‑> InferModules.Prop.normal InferModules.Prop.t ‑> t`

Singleton set.

`val mem : InferModules.Prop.normal InferModules.Prop.t ‑> t ‑> bool`

Set membership.

`val union : t ‑> t ‑> t`

Set union.

`val inter : t ‑> t ‑> t`

Set intersection

`val add : InferIR.Tenv.t ‑> InferModules.Prop.normal InferModules.Prop.t ‑> t ‑> t`

Add `prop` to propset.

`val diff : t ‑> t ‑> t`

Set difference.

`val empty : t`

The empty set of propositions.

`val size : t ‑> int`

Size of the set

`val from_proplist : InferIR.Tenv.t ‑> InferModules.Prop.normal InferModules.Prop.t list ‑> t`
`val to_proplist : t ‑> InferModules.Prop.normal InferModules.Prop.t list`
`val map : InferIR.Tenv.t ‑> (InferModules.Prop.normal InferModules.Prop.t ‑> InferModules.Prop.normal InferModules.Prop.t) ‑> t ‑> t`

Apply function to all the elements of the propset.

`val map_option : InferIR.Tenv.t ‑> (InferModules.Prop.normal InferModules.Prop.t ‑> InferModules.Prop.normal InferModules.Prop.t option) ‑> t ‑> t`

Apply function to all the elements of the propset, removing those where it returns `None`.

`val fold : ('a ‑> InferModules.Prop.normal InferModules.Prop.t ‑> 'a) ‑> 'a ‑> t ‑> 'a`

`fold f pset a` computes `(f pN ... (f p2 (f p1 a))...)`, where `p1 ... pN` are the elements of pset, in increasing order.

`val iter : (InferModules.Prop.normal InferModules.Prop.t ‑> unit) ‑> t ‑> unit`

`iter f pset` computes (f p1;f p2;..;f pN) where `p1 ... pN` are the elements of pset, in increasing order.

`val partition : (InferModules.Prop.normal InferModules.Prop.t ‑> bool) ‑> t ‑> t * t`
`val subseteq : t ‑> t ‑> bool`
`val is_empty : t ‑> bool`

Set emptiness check.

`val filter : (InferModules.Prop.normal InferModules.Prop.t ‑> bool) ‑> t ‑> t`

### Pretty print

`val d : InferModules.Prop.normal InferModules.Prop.t ‑> t ‑> unit`

dump a propset coming form the given initial prop