Written Assignment #2 ===================== Due 3/29 at 11:59pm, submit via Blackboard In either LaTeX or in a .txt file: 0) Write separation-logic specifications, in the form of pre- and post-conditions, for the following list-manipulating programs: - list_sum (sums the elements of a null-terminated input list) - list_reverse (reverses the elements of a null-terminated input list, as in class) - list_append (appends two lists) - tree_sum (sums the elements of a binary tree) Give complete definitions for any predicates you use in specifications. For example, to specify list_sum, you'll need a specification in SL for "List" [a list datastructure in memory] as well a mathematical characterization of sequences. 1) Prove in separation logic -- in the form of an annotated program in an Imp-like imperative language -- that the four programs listed in 0) meet their specifications. 2) Work on your final projects! [0) and 1) should be relatively easy.]