Module NormAtLabels


module NormAtLabels: sig .. end
push the Tat and Told down to the 'data' operations. This can be useful in cases like \at (x + \at(y, Ly), Lx) because it gives \at(x, Lx) + \at(y, Ly) so there is no more \at imbrications. Also try to "normalize" label :

type label_mapping = Cil_types.logic_label -> Cil_types.logic_label 
class norm_at : (Cil_types.logic_label -> Cil_types.logic_label) -> object .. end
push the Tat and Told down to the 'data' operations.
exception LabelError of Cil_types.logic_label
val labels_fct_pre : Cil_types.logic_label -> Cil_types.logic_label
val labels_fct_post : Cil_types.logic_label -> Cil_types.logic_label
val labels_spec_pre : Cil_types.stmt -> Cil_types.logic_label -> Cil_types.logic_label
val labels_spec_post : Cil_types.stmt -> Cil_types.logic_label -> Cil_types.logic_label
val labels_stmt_spec : bool -> Cil_types.stmt -> Cil_types.logic_label -> Cil_types.logic_label
val labels_assert : bool -> Cil_types.stmt -> Cil_types.logic_label -> Cil_types.logic_label
val labels_loop_inv : Cil_types.stmt -> Cil_types.logic_label -> Cil_types.logic_label
val labels_loop_assigns : Cil_types.stmt -> Cil_types.logic_label -> Cil_types.logic_label
val labels_fct_assigns : Cil_types.logic_label -> Cil_types.logic_label
val labels_predicate : ('a * 'a) list -> 'a -> 'a
val preproc_annot : (Cil_types.logic_label -> Cil_types.logic_label) ->
Cil_types.predicate Cil_types.named -> Cil_types.predicate Cil_types.named
Raises LabelError if there is a label in p that is incompatible with the labels translation
val preproc_assigns : (Cil_types.logic_label -> Cil_types.logic_label) ->
Cil_types.identified_term Cil_types.assigns ->
Cil_types.identified_term Cil_types.assigns
Raises LabelError if there is a label in p that is incompatible with the labels translation