This file is indexed.

/usr/share/axiom-20170501/src/algebra/PGROEB.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
53
54
55
56
57
58
59
60
61
62
63
64
)abbrev package PGROEB PolyGroebner
++ Author: P. Gianni
++ Date Created: Summer 1988
++ References:
++ Normxx Notes 13: How to Compute a Groebner Basis
++ Coxx07 Ideals, varieties and algorithms
++ Description:
++ Groebner functions for P F
++ This package is an interface package to the groebner basis
++ package which allows you to compute groebner bases for polynomials
++ in either lexicographic ordering or total degree ordering refined
++ by reverse lex. The input is the ordinary polynomial type which
++ is internally converted to a type with the required ordering. 
++ The resulting grobner basis is converted back to ordinary polynomials.
++ The ordering among the variables is controlled by an explicit list
++ of variables which is passed as a second argument. The coefficient
++ domain is allowed to be any gcd domain, but the groebner basis is
++ computed as if the polynomials were over a field.
 
PolyGroebner(F) : SIG == CODE where
  F : GcdDomain

  NNI ==>  NonNegativeInteger
  P   ==>  Polynomial F
  L   ==>  List
  E   ==>  Symbol
 
  SIG ==> with

    lexGroebner : (L P,L E)  ->  L P
      ++ lexGroebner(lp,lv) computes Groebner basis
      ++ for the list of polynomials lp in lexicographic order.
      ++ The variables are ordered by their position in the list lv.
      ++
      ++X lexGroebner([2*x^2+y, 2*y^2+x],[x,y])
 
    totalGroebner : (L P, L E) ->  L P
      ++ totalGroebner(lp,lv) computes Groebner basis
      ++ for the list of polynomials lp with the terms
      ++ ordered first by total degree and then
      ++ refined by reverse lexicographic ordering.
      ++ The variables are ordered by their position in the list lv.
      ++
      ++X totalGroebner([2*x^2+y, 2*y^2+x],[x,y])
 
  CODE ==> add

     lexGroebner(lp: L P,lv:L E) : L P ==
       PP:=  PolToPol(lv,F)
       DPoly := DistributedMultivariatePolynomial(lv,F)
       DP:=DirectProduct(#lv,NNI)
       OV:=OrderedVariableList lv
       b:L DPoly:=[pToDmp(pol)$PP for pol in lp]
       gb:L DPoly :=groebner(b)$GroebnerPackage(F,DP,OV,DPoly)
       [dmpToP(pp)$PP for pp in gb]
 
     totalGroebner(lp: L P,lv:L E) : L P ==
       PP:=  PolToPol(lv,F)
       HDPoly := HomogeneousDistributedMultivariatePolynomial(lv,F)
       HDP:=HomogeneousDirectProduct(#lv,NNI)
       OV:=OrderedVariableList lv
       b:L HDPoly:=[pToHdmp(pol)$PP for pol in lp]
       gb:=groebner(b)$GroebnerPackage(F,HDP,OV,HDPoly)
       [hdmpToP(pp)$PP for pp in gb]