This file is indexed.

/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.