functor (Ground : Dalton_sig.GROUND) ->
functor (Print : Dalton_sig.PRINT) ->
functor (Draw : Dalton_sig.DRAW) ->
functor (Report : Dalton_sig.ERROR_REPORT) ->
sig
type cset
val cset : unit -> Dalton.Make.cset
val merge_cset : Dalton.Make.cset -> Dalton.Make.cset -> unit
type node
val variable :
Dalton.Make.cset -> Dalton_aux.kind -> Dalton.Make.node
val variable_in_sk : Dalton.Make.node -> Dalton.Make.node
val typ :
Dalton.Make.cset ->
Dalton.Make.node Ground.Type.t -> Dalton.Make.node
val row :
Dalton.Make.cset ->
Ground.Label.t * Dalton.Make.node * Dalton.Make.node ->
Dalton.Make.node
type skeleton
and node_or_skeleton =
Nd of Dalton.Make.node
| Sk of Dalton.Make.skeleton
and unification_report
exception UnificationError of Dalton.Make.unification_report
val report_unification :
Format.formatter -> Dalton.Make.unification_report -> unit
val same_skel : Dalton.Make.node -> Dalton.Make.node -> unit
val equal : Dalton.Make.node -> Dalton.Make.node -> unit
val strong_leq : Dalton.Make.node -> Dalton.Make.node -> unit
val weak_leq :
Dalton.Make.node_or_skeleton ->
Dalton.Make.node_or_skeleton -> unit
val lower_bound :
Ground.Lb.t -> Dalton.Make.node_or_skeleton -> unit
val upper_bound :
Dalton.Make.node_or_skeleton -> Ground.Ub.t -> unit
type subst = {
lb : Ground.Lb.t -> Ground.Lb.t;
ub : Ground.Ub.t -> Ground.Ub.t;
typ : 'a. 'a Ground.Type.t -> 'a Ground.Type.t;
label : Ground.Label.t -> Ground.Label.t;
}
module type SCHEME_ROOT =
sig
type t
val cset : Dalton.Make.SCHEME_ROOT.t -> Dalton.Make.cset
val copy :
Dalton.Make.cset ->
(Dalton.Make.node -> Dalton.Make.node) ->
Dalton.Make.SCHEME_ROOT.t -> Dalton.Make.SCHEME_ROOT.t
val iter :
(Dalton_aux.variance -> Dalton.Make.node -> unit) ->
Dalton.Make.SCHEME_ROOT.t -> unit
val iter2 :
(Dalton_aux.variance ->
Dalton.Make.node -> Dalton.Make.node -> unit) ->
Dalton.Make.SCHEME_ROOT.t ->
Dalton.Make.SCHEME_ROOT.t -> unit
val fprint :
Format.formatter ->
Dalton.Make.cset Dalton_aux.printer ->
(Dalton_aux.variance ->
Format.formatter -> Dalton.Make.node -> unit) ->
Dalton.Make.SCHEME_ROOT.t -> unit
end
module Scheme :
functor (Root : SCHEME_ROOT) ->
sig
val copy : ?subst:Dalton.Make.subst -> Root.t -> Root.t
val fprint : Format.formatter -> Root.t -> unit
val draw : Draw.window -> Root.t -> int -> int -> int * int
type solve_report
val report_solve :
Format.formatter -> Dalton.Make.Scheme.solve_report -> unit
val solve : Root.t -> Dalton.Make.Scheme.solve_report option
type comparison_report
val report_comparison :
Format.formatter ->
Dalton.Make.Scheme.comparison_report -> unit
val compare :
Root.t ->
Root.t -> Dalton.Make.Scheme.comparison_report option
val equivalent : Root.t -> Root.t -> bool
type minimal_report
val report_minimal :
Format.formatter ->
Dalton.Make.Scheme.minimal_report -> unit
val has_minimal_instance :
Root.t -> Dalton.Make.Scheme.minimal_report option
end
val set_expand_manifest :
(Dalton.Make.skeleton Ground.Type.t ->
(Dalton.Make.node * Dalton.Make.node) option) ->
unit
val skeleton_stamp : Dalton.Make.node -> int
val get_lower_bound : Dalton.Make.node -> Ground.Lb.t
val get_upper_bound : Dalton.Make.node -> Ground.Ub.t
end