Class Bycase_ai.visit_propagating_pre_post_constraints_bycase


class visit_propagating_pre_post_constraints_bycase : 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

Associates each labeled statement to a pre-condition

Associates each labeled statement to a post-condition

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.

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.

Pre or post condition of each loop key stmt, and for FWD and BWD AI

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

This function returns the current 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 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 spec of the given statement. WARNING ! Side effects of this function : The pre of the current stmt is updated according to the given pre

Body of propagates_post (after list.rev)

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