/usr/share/axiom-20170501/src/algebra/PMQFCAT.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 | )abbrev package PMQFCAT PatternMatchQuotientFieldCategory
++ Author: Manuel Bronstein
++ Date Created: 1 Dec 1989
++ Date Last Updated: 20 June 1991
++ Description:
++ This package provides pattern matching functions on quotients.
PatternMatchQuotientFieldCategory(S,R,Q) : SIG == CODE where
S : SetCategory
R : Join(IntegralDomain, PatternMatchable S, ConvertibleTo Pattern S)
Q : QuotientFieldCategory R
PAT ==> Pattern S
PRQ ==> PatternMatchResult(S, Q)
SIG ==> with
patternMatch : (Q, PAT, PRQ) -> PRQ
++ patternMatch(a/b, pat, res) matches the pattern pat to the
++ quotient a/b; res contains the variables of pat which
++ are already matched and their matches.
CODE ==> add
import PatternMatchPushDown(S, R, Q)
patternMatch(x, p, l) ==
generic? p => addMatch(p, x, l)
(r := retractIfCan x)@Union(R, "failed") case R =>
patternMatch(r::R, p, l)
(u := isQuotient p) case Record(num:PAT, den:PAT) =>
ur := u::Record(num:PAT, den:PAT)
failed?(l := patternMatch(numer x, ur.num, l)) => l
patternMatch(denom x, ur.den, l)
failed()
|