sig
val stack : LogicId.Iset.elt list Pervasives.ref
val push : LogicId.Iset.elt -> unit
val pop : LogicId.id -> unit
val recursive : LogicId.id -> bool
type state =
Undefined
| Defined of LogicDef.item
| Cyclic of LogicDef.Cofix.cycle
and cycle = {
mutable ccitem : LogicDef.Cofix.ccitem;
mutable stable : bool;
mutable inners : LogicId.Iset.t;
}
and ccitem =
Cnone
| Cdefault of LogicDef.item
| Cupdated of LogicDef.item * LogicDef.description
val cofix : LogicDef.Cofix.cycle LogicId.Ihmap.t
val lookup : LogicId.Ihmap.key -> LogicDef.Cofix.state
val is_stable : LogicId.Ihmap.key -> bool
val current : LogicDef.Cofix.ccitem -> LogicDef.item
val define : LogicId.Ihmap.key -> unit
val is_stable : LogicId.Ihmap.key -> bool
exception Unstable
val all_stable : LogicId.Iset.t -> bool
val set_stable : LogicId.Ihmap.key -> unit
val get_cycle : LogicId.id -> LogicId.id list -> LogicId.id list
val add_cycle : LogicId.Iset.elt list -> LogicId.Ihmap.key -> unit
val compatible_signature : LogicLang.var list -> LogicLang.var list -> bool
val compatible : LogicDef.item -> LogicDef.item -> bool
val default : LogicId.Ihmap.key -> LogicDef.item -> unit
val update :
LogicId.Ihmap.key -> LogicDef.item -> LogicDef.description -> unit
val compute : LogicId.Iset.elt -> (LogicId.Iset.elt -> 'a) -> unit
val fixpoint :
LogicDef.Cofix.cycle ->
LogicId.Iset.elt -> (LogicId.Iset.elt -> 'a) -> LogicDef.item
val obtain : LogicId.Ihmap.key -> (LogicId.Iset.elt -> 'a) -> LogicDef.item
end