module Label_ImperativeMap = struct type key = Graphs.label type 'data t = 'data Graphs.graph ref let create () = ref (Identifiers.empty_map PreIdentifiers.LabelTag) let clear t = t := Identifiers.empty_map PreIdentifiers.LabelTag let add k d t = t := Identifiers.add PreIdentifiers.LabelTag !t k d let find k t = match Identifiers.lookup PreIdentifiers.LabelTag !t k with Types.Some res -> res | Types.None -> raise Not_found let iter f t = Identifiers.foldi PreIdentifiers.LabelTag (fun k v () -> f k v) !t () end (** val compute_fixpoint : Fixpoints.fixpoint_computer **) let compute_fixpoint latt = let module L : Fix.PROPERTY with type property = Preamble.__ = struct type property = Preamble.__ let bottom = Fixpoints.l_bottom latt let equal x y = Fixpoints.l_equal latt x y = Bool.True let is_maximal x = Fixpoints.l_is_maximal latt x = Bool.True end in let module F = Fix.Make (Label_ImperativeMap) (L) in F.lfp