sig
type variable = MultiEquation.descriptor UnionFind.point
and descriptor = {
mutable structure : MultiEquation.structure option;
mutable rank : IntRank.t;
mutable mark : Mark.t;
mutable kind : MultiEquation.variable_kind;
mutable name : MultiEquation.tname option;
mutable pos : Positions.position option;
mutable var : MultiEquation.variable option;
}
and structure = MultiEquation.variable CoreAlgebra.term
and variable_kind = Rigid | Flexible | Constant
and tname = TName of string
type crterm = MultiEquation.variable CoreAlgebra.arterm
val is_structured : MultiEquation.variable -> bool
val are_equivalent :
MultiEquation.variable -> MultiEquation.variable -> bool
val variable_name : MultiEquation.variable -> MultiEquation.tname option
val variable_structure :
MultiEquation.variable -> MultiEquation.structure option
val explode :
MultiEquation.crterm -> MultiEquation.variable CoreAlgebra.term
val variable :
MultiEquation.variable_kind ->
?name:MultiEquation.tname ->
?structure:MultiEquation.crterm ->
?pos:Positions.position -> unit -> MultiEquation.variable
val variable_list :
MultiEquation.variable_kind ->
'a list -> MultiEquation.variable list * ('a * MultiEquation.crterm) list
val variable_list_from_names :
(MultiEquation.tname ->
MultiEquation.variable_kind * MultiEquation.tname option) ->
MultiEquation.tname list ->
MultiEquation.variable list *
(MultiEquation.tname * MultiEquation.crterm) list
val variable_set :
(MultiEquation.tname ->
MultiEquation.variable_kind * MultiEquation.tname option) ->
Misc.StringSet.t ->
MultiEquation.variable list *
(MultiEquation.crterm * Positions.position) Misc.StringMap.t
val is_rigid : MultiEquation.variable -> bool
val is_flexible : MultiEquation.variable -> bool
type pool
val inhabitants : MultiEquation.pool -> MultiEquation.variable list
val number : MultiEquation.pool -> int
val new_pool : MultiEquation.pool -> MultiEquation.pool
val init : unit -> MultiEquation.pool
val register : MultiEquation.pool -> MultiEquation.variable -> unit
val introduce : MultiEquation.pool -> MultiEquation.variable -> unit
val instance :
MultiEquation.pool -> MultiEquation.variable -> MultiEquation.variable
val chop :
MultiEquation.pool -> MultiEquation.crterm -> MultiEquation.variable
val chopi : IntRank.t -> MultiEquation.crterm -> MultiEquation.variable
end