insufficient precoditions given to Alt-Ergo to prove validity of memory access for user-defined "->" operator
ID0002026:
**This issue was created automatically from Mantis Issue 2026. Further discussion may take place here.**
---
| **Id** | **Project** | **Category** | **View** | **Due Date** | **Updated** |
| --- | --- | --- | --- | --- | --- |
| ID0002026 | Frama-Clang | Plug-in > wp | public | 2014-12-11 | 2015-02-15 |
| | | | | | |
| --- | --- | --- | --- | --- | --- |
| **Reporter** | Jochen | **Assigned To** | correnson | **Resolution** | open |
| **Priority** | normal | **Severity** | minor | **Reproducibility** | always |
| **Platform** | frama-c-Neon-20140301+dev-stance | **OS** | - | **OS Version** | xubuntu-cfe13.10 |
| **Product Version** | - | **Target Version** | - | **Fixed in Version** | - |
### Description :
The goal given to Alt-Ergo for the memory access in line 13 is:
566 goal main_assert_rte_mem_access:
567 forall t_1,t : int farray.
568 forall a : addr.
569 linked(t) ->
570 valid_rw(t_1, shiftfield_F__Z1X_a(a), 1)
where "t_1" doesn't appear outside the conclusion (line 570), and therefor the formula doesn't hold.
It looks like some "assigns \nothing" was missing in the C++ source; however, there is no more place where such a contract could be added. Maybe some function that is used internally by Cxx needs an additional "assigns" clause?
## Attachments
- [402.cpp](/uploads/a8e1183a90e9cb8e331049d590b3eaa2/402.cpp)
- [main_assert_rte_mem_access_Alt-Ergo.mlw](/uploads/b5497d0bcb4de5a5afd6458a58f4e8ac/main_assert_rte_mem_access_Alt-Ergo.mlw)
- [402a.cpp](/uploads/e84e1416b4bf04f413a3f61071eeb1c4/402a.cpp)
issue