Module StoreMotionOracle.StTotal

module StTotal: sig .. end

type t = StoreMotionOracle.cand list 
type s = int 
val empty : t
val block_entry : t -> t
val empty_subset : t -> s
val subset : t ->
s -> StoreMotionOracle.cand list
val meminv : t -> BTL_Invariants.imem
val self_inv_annot : t -> 'a option
val remove_addr : StoreMotionOracle.address ->
t ->
t * bool *
(s ->
s * StoreMotionOracle.stores)
val limit_size : t ->
t * bool *
(s -> s)
val push0 : StoreMotionOracle.cand ->
t ->
t *
(s -> s * bool)
val push : StoreMotionOracle.cand ->
t ->
t * (bool * bool) *
(s ->
s * StoreMotionOracle.stores * bool)
type smash_t = t ->
t *
(s -> s)
val smash : (StoreMotionOracle.cand -> bool) ->
t ->
t *
(s -> s)
val smash_reg : Registers.reg -> smash_t
val smash_all : smash_t
val t_join : t ->
t ->
(t,
s ->
s * BTL.meminv_annot_t)
StoreMotionOracle.join_res
val s_join : t ->
s ->
s ->
(s, StoreMotionOracle.stores)
StoreMotionOracle.join_res
val print : Stdlib.out_channel -> StoreMotionOracle.cand list -> unit
val print_subset : Stdlib.out_channel -> int -> unit