HomeMadeBDDPartitionPI.ConditionMap
module PI : sig ... end
module Cond = PI.Cond
type 'a0 t = 'a ConditionMapPartition.t
val ar1 :
(module Condition_map.LConditionMap
with type t = 'a t
and type Cond.t = Cond.t
and type L.t = 'a) ->
joina:('a -> 'a -> 'a) ->
bottoma:'a ->
(module Condition_map.LConditionMap
with type t = 'res t
and type Cond.t = Cond.t
and type L.t = 'res) ->
interres:('res -> 'res -> 'res) ->
Cond.t ->
('a -> 'res) ->
'a t ->
'res t ->
'res t
val ar2 :
(module Condition_map.LConditionMap
with type t = 'a t
and type Cond.t = Cond.t
and type L.t = 'a) ->
joina:('a -> 'a -> 'a) ->
bottoma:'a ->
(module Condition_map.LConditionMap
with type t = 'b t
and type Cond.t = Cond.t
and type L.t = 'b) ->
joinb:('b -> 'b -> 'b) ->
bottomb:'b ->
(module Condition_map.LConditionMap
with type t = 'res t
and type Cond.t = Cond.t
and type L.t = 'res) ->
interres:('res -> 'res -> 'res) ->
Cond.t ->
('a -> 'b -> 'res) ->
'a t ->
'b t ->
'res t ->
'res t
val ar1_bwd :
(module Condition_map.LConditionMap
with type t = 'a t
and type Cond.t = Cond.t
and type L.t = 'a) ->
joina:('a -> 'a -> 'a) ->
bottoma:'a ->
intera:('a -> 'a -> 'a) ->
(module Condition_map.LConditionMap
with type t = 'res t
and type Cond.t = Cond.t
and type L.t = 'res) ->
joinres:('res -> 'res -> 'res) ->
bottomres:'res ->
Cond.t ->
('a -> 'res -> 'a option) ->
'a t ->
'res t ->
Cond.t * 'a t
val ar2_bwd :
(module Condition_map.LConditionMap
with type t = 'a t
and type Cond.t = Cond.t
and type L.t = 'a) ->
joina:('a -> 'a -> 'a) ->
bottoma:'a ->
intera:('a -> 'a -> 'a) ->
(module Condition_map.LConditionMap
with type t = 'b t
and type Cond.t = Cond.t
and type L.t = 'b) ->
joinb:('b -> 'b -> 'b) ->
bottomb:'b ->
interb:('b -> 'b -> 'b) ->
(module Condition_map.LConditionMap
with type t = 'res t
and type Cond.t = Cond.t
and type L.t = 'res) ->
joinres:('res -> 'res -> 'res) ->
bottomres:'res ->
Cond.t ->
('a -> 'b -> 'res -> 'a option * 'b option) ->
'a t ->
'b t ->
'res t ->
(Cond.t * 'a t) * (Cond.t * 'b t)
val nondet_disjoint :
(module Condition_map.LConditionMap
with type t = 'res t
and type Cond.t = Cond.t
and type L.t = 'res) ->
conda:Cond.t ->
notconda:Cond.t ->
cma:'res t ->
condb:Cond.t ->
notcondb:Cond.t ->
cmb:'res t ->
join:('res -> 'res -> 'res) ->
bottom:'res ->
inter:('res -> 'res -> 'res) ->
old:'res t ->
'res t
val nondet_non_disjoint :
(module Condition_map.LConditionMap
with type t = 'res t
and type Cond.t = Cond.t
and type L.t = 'res) ->
conda:Cond.t ->
cma:'res t ->
condb:Cond.t ->
cmb:'res t ->
condaorb:Cond.t ->
notcondaorb:Cond.t ->
join:('res -> 'res -> 'res) ->
bottom:'res ->
inter:('res -> 'res -> 'res) ->
old:'res t ->
'res t