Skip to content

Default assigns generation

ID0000620: This issue was created automatically from Mantis Issue 620. Further discussion may take place here.


Id Project Category View Due Date Updated
ID0000620 Frama-C Kernel public 2010-11-05 2010-12-17
Reporter patrick Assigned To patrick Resolution fixed
Priority normal Severity minor Reproducibility always
Platform - OS - OS Version -
Product Version Frama-C Boron-20100401 Target Version - Fixed in Version Frama-C Carbon-20101201-beta1

Description :

Today, Frama-C kernel generates assigns clauses from the prototype (for function without code). To do nothing is equivalent to virtually generate "assigns everything". That is not good for some static analysis (such as Value analysis). When behaviors are completes and each of them has an assigns clause, it is possible to generate a more restrictive clause (than "assigns everything"), but still correct: "assigns locs;" where "locs" is the union of the locations assigned by all behaviors of the complete clause.

Additional Information :

With this example, the clause "assigns *b" can be added to the default behavior. requires \valid(b); behavior positive: assumes a > 0; assigns *b; ensures *b == 0; behavior not_positive: assumes a <= 0; assigns \nothing; complete behaviors; disjoint behaviors; / void foo(int a, int b);

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information