Finite separation logic
- Signature.
-
Fix a countably infinite variable set
; each scoped program and derivation mentions only finitely many variables. The states of chapter 44 contain a total store and a finite partial heap. Assertions have exact points-to, Boolean operations, separating conjunction and implication, and existentials. The loop-free command language has the six heap/store commands, sequencing, and equality conditionals; allocation chooses a fresh non-null location. - Operational result.
-
Safety is defined structurally and distinguishes a fault from absence of a big-step derivation. Every displayed command is local: adding a disjoint frame preserves safety and every result factors into the changed footprint and the unchanged frame (theorem 44.11).
- Logic.
-
Triples mean partial correctness plus fault freedom. The frame theorem is theorem 44.13, with its necessary store-variable side condition; all displayed proof rules are sound by theorem 44.16. Assertion substitution and fresh-variable coincidence are lemma 44.14, lemma 44.9; the latter is the explicit semantic dependency of H-Exists. Each linked-chain operation changes one cell.
- Archived SLF comparison.
-
The pinned DeepSpec Software Foundations revision is
b86f18667e88828b348bcd31458dfbedcf3ae3c0, volumeslf-current. Separating conjunction isHprop.v, lines 134–140;tripleandtriple_conseq_frameareTriples.v, lines 620–622 and 705–709; its soundness connection is lines 1294–1299. Primitive declarationstriple_ref,triple_free,triple_get, andtriple_setare inRules.v, lines 445–535. The linked predicateMListand its unfolding lemma areRepr.v, lines 93–96 and 135–140; the linked append specification is lines 183–187. This is a read-only source-declaration replay. In this archived teaching tree,triple_conseq_frame,triple_free’,triple_set, andMList_ifareAdmittedexercises, so their statements are not counted as mechanized proof evidence. In particular, SLF uses a total-correctness omni-big-step triple, returns command values, and stores a data field in eachMListnode; none of those signatures is silently transferred to the book calculus. - Boundary.
-
No theorem gives loop termination, race or leak freedom, an ownership type system, or a concurrent frame rule. A semantic heap split is not by itself program authority.
- Executable.
-
Appendix E’s pinned Kappa corpus runs framed update, allocation/deallocation, chain push/pop, use-after-free, and alias rejection. It is implementation evidence, not a proof of locality or Hoare soundness.