CAS 707, Winter 2019: Assignment 4

Starting from the type definitions in http://www.cas.mcmaster.ca/~kahl/CAS707/2019/List.ltx, specify and implement the two append functions discussed in class.

Specification-level lists are shown in the ACSL definition in Example 2.41 (p. 52). (Section 2.68 (pp. 54–55) describes concrete logic types, which, according to Fig. 2.17 are not yet implemented in Frama-C.)

Section 2.7.2 (p. 60) introduces \separated (in the grammar Fig. 2.20 on p. 59) — understand the specification on p. 60! This points to section 2.3.4 (p. 35) for “tsets”.

Define a predicate separatedLists{L}(list xs, list ys) that captures separation of the memory occupied by xs and ys.

Document your explorations again in LaTeX using listingsACSL.sty.

(The home of ACSL By Example is https://github.com/fraunhoferfokus/acsl-by-example; we looked at equal from section 3.5.)