Class Abstract_ai.visit_propagating_pre_post_constraints


class visit_propagating_pre_post_constraints : Promelaast.typed_automaton -> object .. end
This visitor requires that each function has a specification. It then computes a finer specification by forward and backard abstract interpretation on states.

This vistor use mainly 2 sub-functions (propagates_pre and propagates_post) that implement respectively forward and backward treatment.
Inherits


Associates each statement of the fonction to a pre/post specification

During the pre-condition propagation, it represents the set of statements that need second computation of specification. For instance, it can occurs when the statement is pointed by a goto instruction.

This variable contains the result of the pre-condition propagation.

Set of observed labeled statement. This information is used for goto treatment.

True if and only if the computation has to be done again in oreder to compute a fix-point result.

Name of the current function.

Propagates pre-condition to each statement, by following control flow. It returns a couple af bool array, definig the strongest post-condition of the statement list.

This function returns the curent pre of a statement or an empty pre if no specification exists

This function makes an OR filter between the given pre and the old pre of the given stmt. The result is stored as the new pre of the given stmt.

This function returns the current pre of the given statement. WARNING ! Side effects of this function : If the statement is in stmts_to_compute_one_more_time then it is removed The pre of the current stmt is updated according to the current pre_st and pre_tr

Propagates post-condition to each statement, by following control flow. It returns a couple of bool array, definig the weakest pre-condition of the statement list. Since then analysis is a backward one, the list is first reversed.

This function returns the current spec of a statement or an empty spec if no specification exists

This function makes an AND filter between the given post and the old post of the given stmt The result is storing as the new post of the given stmt.

This function makes an OR filter between the given post and the old post of the given stmt The result is storing as the new post of the given stmt.

This function returns the current spec of the given statement. WARNING ! Side effects of this function : The post of the current stmt is updated according to the given post_st and post_tr

Body of propagates_post (after list.rev)

method vfunc : Cil_types.fundec -> Cil_types.fundec Cil.visitAction