/usr/share/axiom-20170501/src/algebra/PMSYM.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 | )abbrev package PMSYM PatternMatchSymbol
++ Author: Manuel Bronstein
++ Date Created: 9 Jan 1990
++ Date Last Updated: 20 June 1991
++ Description:
++ This package provides pattern matching functions on symbols.
PatternMatchSymbol(S) : SIG == CODE where
S : SetCategory
SIG ==> with
patternMatch : (Symbol, Pattern S, PatternMatchResult(S, Symbol)) ->
PatternMatchResult(S, Symbol)
++ patternMatch(expr, pat, res) matches the pattern pat to the
++ expression expr; res contains the variables of pat which
++ are already matched and their matches (necessary for recursion).
CODE ==> add
import TopLevelPatternMatchControl
patternMatch(s, p, l) ==
generic? p => addMatch(p, s, l)
constant? p =>
((u := retractIfCan(p)@Union(Symbol, "failed")) case Symbol)
and (u::Symbol) = s => l
failed()
failed()
|