List (E, C): trait
% Add singleton and concatenation
includes Deque
introduces
{__}: E -> C
__ || __: C, C -> C
asserts forall e: E, ls, ls1, ls2: C
{e} == empty \postcat e;
ls || empty == ls;
ls1 || (ls2 \postcat e) == (ls1 || ls2) \postcat e
implies
C generated by empty, {__}, ||
converts head, last, tail, init, len, {__}, ||
exempting head(empty), last(empty),
tail(empty), init(empty)
[Table of Contents] [Index]