Skip to content

Burstall-Bornat style on array init

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


Id Project Category View Due Date Updated
ID0000377 Frama-C Plug-in > jessie public 2010-01-20 2014-02-12
Reporter dpariente Assigned To cmarche Resolution fixed
Priority normal Severity minor Reproducibility always
Platform - OS - OS Version -
Product Version Frama-C Beryllium-20090902 Target Version - Fixed in Version -

Description :

(This issue was previously discussed with Frama-C team, and its solution - if not distorted too much - provided by CM)

On the following code:

void f() { float t[100]={0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14., ...}; //@ assert t[0]==0.; }

analyzed with : frama-c -jessie foo.c

PO generated for assert clause contains "nested" memory stores: mem1 == store(mem0, t[0], 0.) mem2 == store(mem1, t[1], 1.) mem3 == store(mem2, t[2], 2.) ... which can make difficult discharging by automatic theorem provers.

This could be avoided by replacing these nested stores by something like: select(mem0, t[0]) == 0. select(mem0, t[1]) == 1. select(mem0, t[2]) == 2. ...

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