/usr/share/axiom-20170501/src/algebra/DLAGG.spad is in axiom-source 20170501-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | )abbrev category DLAGG DoublyLinkedAggregate
++ Author: Michael Monagan; revised by Manuel Bronstein and Richard Jenks
++ Date Created: August 87 through August 88
++ Date Last Updated: April 1991
++ Description:
++ A doubly-linked aggregate serves as a model for a doubly-linked
++ list, that is, a list which can has links to both next and previous
++ nodes and thus can be efficiently traversed in both directions.
DoublyLinkedAggregate(S) : Category == SIG where
S : Type
SIG ==> RecursiveAggregate S with
last : % -> S
++ last(l) returns the last element of a doubly-linked aggregate l.
++ Error: if l is empty.
head : % -> %
++ head(l) returns the first element of a doubly-linked aggregate l.
++ Error: if l is empty.
tail : % -> %
++ tail(l) returns the doubly-linked aggregate l starting at
++ its second element.
++ Error: if l is empty.
previous : % -> %
++ previous(l) returns the doubly-link list beginning with its previous
++ element.
++ Error: if l has no previous element.
++ Note that \axiom{next(previous(l)) = l}.
next : % -> %
++ next(l) returns the doubly-linked aggregate beginning with its next
++ element.
++ Error: if l has no next element.
++ Note that \axiom{next(l) = rest(l)} and \axiom{previous(next(l)) = l}.
if % has shallowlyMutable then
concat_! : (%,%) -> %
++ concat!(u,v) destructively concatenates doubly-linked aggregate v
++ to the end of doubly-linked aggregate u.
setprevious_! : (%,%) -> %
++ setprevious!(u,v) destructively sets the previous node of
++ doubly-linked aggregate u to v, returning v.
setnext_! : (%,%) -> %
++ setnext!(u,v) destructively sets the next node of doubly-linked
++ aggregate u to v, returning v.
|