Thats a unique idea.You should consider the following idea to enhance your idea so that it would impact uniquely: Program verifiers based on first-order theorem provers model the program heap as a collection of mutable maps. In such verifiers, preserving unmodified facts about the heap across procedure calls is difficult because of scoping and modification of possibly unbounded set of heap locations. Existing approaches to deal with this problem are either too imprecise, require introducing untrusted assumptions in the verifier, or resort to unpredictable reasoning using quantifiers. In this work,  propose a new approach to solve this problem. The centerpiece of our approach is the call invariant, a new annotation for procedure calls. A call invariant allows the user to specify at a call site an assertion that is inductively preserved across an arbitrary update to a heap location modified in the call. Our approach allows us to leverage existing techniques for reasoning about call-free programs to precisely and predictably reason about programs with procedure calls.  have implemented the approach and applied it to the verification of examples containing dynamic memory allocations, linked lists, and arrays.  observe that most call invariants have a fairly simple shape and discuss ways to reduce the annotation overhead.
['Shuvendu K. Lahiri', 'Shaz Qadeer']
I am writing a research paper on a idea Call invariants
[{"from": "human", "value": "I am writing a research paper on a idea Call invariants"}, {"from": "gpt", "value": "Thats a unique idea.You should consider the following idea to enhance your idea so that it would impact uniquely: Program verifiers based on first-order theorem provers model the program heap as a collection of mutable maps. In such verifiers, preserving unmodified facts about the heap across procedure calls is difficult because of scoping and modification of possibly unbounded set of heap locations. Existing approaches to deal with this problem are either too imprecise, require introducing untrusted assumptions in the verifier, or resort to unpredictable reasoning using quantifiers. In this work,  propose a new approach to solve this problem. The centerpiece of our approach is the call invariant, a new annotation for procedure calls. A call invariant allows the user to specify at a call site an assertion that is inductively preserved across an arbitrary update to a heap location modified in the call. Our approach allows us to leverage existing techniques for reasoning about call-free programs to precisely and predictably reason about programs with procedure calls.  have implemented the approach and applied it to the verification of examples containing dynamic memory allocations, linked lists, and arrays.  observe that most call invariants have a fairly simple shape and discuss ways to reduce the annotation overhead."}]