swh:1:snp:ca722f838562be139d7880d2b37d9db111694bf0
Tip revision: cd974a77f59ee803c453d808feb78c05cf2c229e authored by Pierre-Yves Strub on 23 January 2023, 10:23:53 UTC
[theories]: ring with generic (choice based) inverse
[theories]: ring with generic (choice based) inverse
Tip revision: cd974a7
ecUFind.mli
(* -------------------------------------------------------------------- *)
module type Item = sig
type t
val equal : t -> t -> bool
val compare: t -> t -> int
end
(* -------------------------------------------------------------------- *)
module type Data = sig
type data
type effects
val default : data
val isvoid : data -> bool
val noeffects : effects
val union : data -> data -> data * effects
end
(* -------------------------------------------------------------------- *)
module type S = sig
type item
type data
type effects
type t
val initial: t
val find : item -> t -> item
val same : item -> item -> t -> bool
val data : item -> t -> data
val set : item -> data -> t -> t
val isset : item -> t -> bool
val union : item -> item -> t -> t * effects
val domain: t -> item list
val closed: t -> bool
val opened: t -> int
end
(* -------------------------------------------------------------------- *)
module Make (I : Item) (D : Data)
: S with type item = I.t
and type data = D.data
and type effects = D.effects
(* -------------------------------------------------------------------- *)
module type US = sig
type item
type t
val initial : t
val find : item -> t -> item
val union : item -> item -> t -> t
val same : item -> item -> t -> bool
end
(* -------------------------------------------------------------------- *)
module UMake (I : Item) : US with type item = I.t