functor (Domain : Domain) (Param : Param) ->
sig
type loop = Param.loop
type state = Domain.t
type store
type propagation
type shadow
type widening
val empty_store : stmt:Cil_types.stmt option -> store
val empty_propagation : unit -> propagation
val empty_shadow : unit -> shadow
val empty_widening : stmt:Cil_types.stmt option -> widening
val initial_propagation : state list -> propagation
val pretty_store : Format.formatter -> store -> unit
val pretty_propagation : Format.formatter -> propagation -> unit
val expanded : store -> state list
val smashed : store -> state Bottom.Type.or_bottom
val is_empty_store : store -> bool
val is_empty_propagation : propagation -> bool
val is_empty_shadow : shadow -> bool
val store_size : store -> int
val propagation_size : propagation -> int
val reset_store : store -> unit
val reset_propagation : propagation -> unit
val reset_shadow : shadow -> unit
val reset_widening : widening -> unit
val enter_loop : propagation -> loop -> unit
val leave_loop : propagation -> loop -> unit
val next_loop_iteration : propagation -> loop -> unit
val clear_propagation : propagation -> unit
val transfer : (state list -> state list) -> propagation -> unit
val merge : into:propagation -> propagation -> unit
val join : (propagation * shadow) list -> store -> propagation
val widen : store -> widening -> propagation -> bool
end