sig
type tag =
MARK of Cil_types.stmt
| THEN of Cil_types.stmt
| ELSE of Cil_types.stmt
| CALL of Cil_types.stmt * Cil_types.kernel_function
| CASE of Cil_types.stmt * int64 list
| DEFAULT of Cil_types.stmt
| ASSERT of Cil_types.identified_predicate * int * int
val loc : Wp.Splitter.tag -> Cil_types.location
val pretty : Stdlib.Format.formatter -> Wp.Splitter.tag -> unit
val mark : Cil_types.stmt -> Wp.Splitter.tag
val if_then : Cil_types.stmt -> Wp.Splitter.tag
val if_else : Cil_types.stmt -> Wp.Splitter.tag
val switch_cases : Cil_types.stmt -> int64 list -> Wp.Splitter.tag
val switch_default : Cil_types.stmt -> Wp.Splitter.tag
val cases :
Cil_types.identified_predicate ->
(Wp.Splitter.tag * Cil_types.predicate) list option
val call : Cil_types.stmt -> Cil_types.kernel_function -> Wp.Splitter.tag
type 'a t
val empty : 'a Wp.Splitter.t
val singleton : 'a -> 'a Wp.Splitter.t
val group :
Wp.Splitter.tag ->
('a list -> 'a) -> 'a Wp.Splitter.t -> 'a Wp.Splitter.t
val union :
('a -> 'a -> 'a) ->
'a Wp.Splitter.t -> 'a Wp.Splitter.t -> 'a Wp.Splitter.t
val merge :
left:('a -> 'c) ->
both:('a -> 'b -> 'c) ->
right:('b -> 'c) ->
'a Wp.Splitter.t -> 'b Wp.Splitter.t -> 'c Wp.Splitter.t
val merge_all :
('a list -> 'a) -> 'a Wp.Splitter.t list -> 'a Wp.Splitter.t
val length : 'a Wp.Splitter.t -> int
val map : ('a -> 'b) -> 'a Wp.Splitter.t -> 'b Wp.Splitter.t
val iter : (Wp.Splitter.tag list -> 'a -> unit) -> 'a Wp.Splitter.t -> unit
val fold :
(Wp.Splitter.tag list -> 'a -> 'b -> 'b) -> 'a Wp.Splitter.t -> 'b -> 'b
val exists : ('a -> bool) -> 'a Wp.Splitter.t -> bool
val for_all : ('a -> bool) -> 'a Wp.Splitter.t -> bool
val filter : ('a -> bool) -> 'a Wp.Splitter.t -> 'a Wp.Splitter.t
end