Module Domains.Transformations

Simple transformation functors

Since Frama-c's parser already removes ternary expressions, this isn't used. Removes Ast.Expr.E_IfThenElse constructs by making the control flow jumps explicit.

Add a guard divisor <> 0 before every division.

Add a guard shift_ammount >= 0 before every shift.

Simplification via simple queries. This functor is often inlined for efficiency, as in Product.ClassicalQueryLeft or Numeric.ClassicalQuery.

Simple expression rewrites using queries (x + 0 -> x and others). This domain isn't complete: it will rewrite things like x = x -> 1 which can cause problems if x contains a division by 0.

SSA variant of SimplifyExpression.

Simplification via simple queries. This functor is often inlined for efficiency, as in Product.SSAQueryLeft or Numeric.SSAQuery.