append_first(other:DS_LINEAR[G])-- Add items of other to beginning of list.
-- Keep items of other in the same order. -- Resize container if needed.-- Do not move cursors. -- (Performance: O(count+other.count)[+resizing].)-- (From DS_INDEXABLE.)require
other_not_void: other /=Voidensure
new_count:count= oldcount+ other.count
same_order:(not other.is_empty)implies(first= other.first)

append_last(other:DS_LINEAR[G])-- Add items of other to end of list.
-- Keep items of other in the same order. -- Resize container if needed.-- Do not move cursors. -- (Performance: O(other.count)[+resizing].)-- (From DS_INDEXABLE.)require
other_not_void: other /=Voidensure
new_count:count= oldcount+ other.count
same_order:(not other.is_empty)implies(item(oldcount +1) = other.first)

append_left(other:DS_LINEAR[G])-- Add items of other to left of internal cursor position.
-- Keep items of other in the same order.
-- Resize container if needed.
-- Do not move cursors. -- (Performance: O(count-index+other.count)[+resizing].)-- (From DS_LIST.)require
other_not_void: other /=Void
not_before:notbeforeensure
new_count:count= oldcount+ other.count
same_order:(not other.is_empty)implies(item(oldindex) = other.first)