Module LogicDef.Cofix


module Cofix: sig .. end

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 cycle

type cycle = {
   mutable ccitem : ccitem;
   mutable stable : bool;
   mutable inners : LogicId.Iset.t;
}
type ccitem =
| Cnone
| Cdefault of LogicDef.item
| Cupdated of LogicDef.item * LogicDef.description
val cofix : cycle LogicId.Ihmap.t
val lookup : LogicId.Ihmap.key -> state
val is_stable : LogicId.Ihmap.key -> bool
val current : 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 : cycle ->
LogicId.Iset.elt -> (LogicId.Iset.elt -> 'a) -> LogicDef.item
val obtain : LogicId.Ihmap.key -> (LogicId.Iset.elt -> 'a) -> LogicDef.item