Introduction

Introduction

Deductive Synthesis from Separation Logic Specifications

Questions

Summary

This paper introduces a method for synthesizing programs based on heap (or pointer) manipulating programs that extends the specifications of separation logic. The synthesis method uses a set of pre- and post- conditions on variables within the program and then uses a proof search to synthesize the program. The main contribution of the paper is the Synthetic Separation Logic which helps generalizes the problem of moving from an initial heap state P to a final state Q. The logic incorporates many of the most common operations on heaps which gives more options for the synthesizer to build a program from. The result is a synthesizer which is capable of generating small heap-manipulating programs along with externally verifiable correctness proofs for the generated code.

Strengths

Weaknesses

Q’s…

If there were mutable variables or assignment statements within the logic, then programs could feasibly modify or change pointers throughout the program using that syntax.

With the frame rule, it specifies that if a pre and post-conditions are the same it can be assumed to be removed from the heap. However, if mutability is introduced then variables could be mutated later in a program which violates the assumption that the sub-programs can’t modify the pointer.

{ P } c { Q } { x -> z * y -> 5} c {x -> z * y -> z}

According to the paper, invertible rules have the following properties:

no rule that is applicable to the original goal can become inapplicable as a result of the modification” the effect of invertible rules is to either change a ghost into a program-level variable or strengthen the precondition.

For one, the frame rule is not like the other mentioned invertible rules in that it is not strengthening the pre or post conditions. Additionally, the frame rule does not modify them in a meaningful way. You also can’t derive or work backwards easily from the frame rule because it’s hard to determine what the removed sub-heap conditions are from the original heaps.

Introduction - zac blanco