# FunctionSpace R¶

- R: Comparable

A space of formal functions with arguments in an arbitrary ordered set.

- 0: % if R has AbelianSemiGroup
- from AbelianMonoid
- 1: % if R has SemiGroup
- from MagmaWithUnit
- *: (%, %) -> % if R has SemiGroup
- from Magma
- *: (%, Fraction Integer) -> % if R has IntegralDomain
- from RightModule Fraction Integer
- *: (%, R) -> % if R has CommutativeRing
- from RightModule R
- *: (Fraction Integer, %) -> % if R has IntegralDomain
- from LeftModule Fraction Integer
- *: (Integer, %) -> % if R has AbelianGroup
- from AbelianGroup
- *: (NonNegativeInteger, %) -> % if R has AbelianSemiGroup
- from AbelianMonoid
- *: (PositiveInteger, %) -> % if R has AbelianSemiGroup
- from AbelianSemiGroup
- *: (R, %) -> % if R has CommutativeRing
- from LeftModule R
- +: (%, %) -> % if R has AbelianSemiGroup
- from AbelianSemiGroup
- -: % -> % if R has AbelianGroup
- from AbelianGroup
- -: (%, %) -> % if R has AbelianGroup
- from AbelianGroup
- /: (%, %) -> % if R has IntegralDomain or R has Group
- from Group

- /: (SparseMultivariatePolynomial(R, Kernel %), SparseMultivariatePolynomial(R, Kernel %)) -> % if R has IntegralDomain
`p1/p2`

returns the quotient of`p1`

and`p2`

as an element of %.- =: (%, %) -> Boolean
- from BasicType
- ^: (%, Integer) -> % if R has IntegralDomain or R has Group
- from Group
- ^: (%, NonNegativeInteger) -> % if R has SemiGroup
- from MagmaWithUnit
- ^: (%, PositiveInteger) -> % if R has SemiGroup
- from Magma
- ~=: (%, %) -> Boolean
- from BasicType

- algtower: % -> List Kernel % if R has IntegralDomain
`algtower(f)`

is algtower([`f`

])

- algtower: List % -> List Kernel % if R has IntegralDomain
`algtower([f1, ..., fn])`

returns list of kernels`[ak1, ..., akl]`

such that each toplevel algebraic kernel in one of`f1`

, …,`fn`

or in arguments of`ak1`

, …, akl is one of`ak1`

, …, akl.- annihilate?: (%, %) -> Boolean if R has Ring
- from Rng
- antiCommutator: (%, %) -> % if R has Ring
- from NonAssociativeSemiRng

- applyQuote: (Symbol, %) -> %
`applyQuote(foo, x)`

returns`'foo(x)`

.

- applyQuote: (Symbol, %, %) -> %
`applyQuote(foo, x, y)`

returns`'foo(x, y)`

.

- applyQuote: (Symbol, %, %, %) -> %
`applyQuote(foo, x, y, z)`

returns`'foo(x, y, z)`

.

- applyQuote: (Symbol, %, %, %, %) -> %
`applyQuote(foo, x, y, z, t)`

returns`'foo(x, y, z, t)`

.

- applyQuote: (Symbol, List %) -> %
`applyQuote(foo, [x1, ..., xn])`

returns`'foo(x1, ..., xn)`

.- associates?: (%, %) -> Boolean if R has IntegralDomain
- from EntireRing
- associator: (%, %, %) -> % if R has Ring
- from NonAssociativeRng
- belong?: BasicOperator -> Boolean
- from ExpressionSpace
- box: % -> %
- from ExpressionSpace
- characteristic: () -> NonNegativeInteger if R has Ring
- from NonAssociativeRing
- charthRoot: % -> Union(%, failed) if R has CharacteristicNonZero
- from CharacteristicNonZero
- coerce: % -> % if R has IntegralDomain
- from Algebra %
- coerce: % -> OutputForm
- from CoercibleTo OutputForm
- coerce: Fraction Integer -> % if R has IntegralDomain or R has RetractableTo Fraction Integer
- from Algebra Fraction Integer

- coerce: Fraction Polynomial Fraction R -> % if R has IntegralDomain
`coerce(f)`

returns`f`

as an element of %.- coerce: Fraction Polynomial R -> % if R has IntegralDomain
- from RetractableTo Fraction Polynomial R

- coerce: Fraction R -> % if R has IntegralDomain
`coerce(q)`

returns`q`

as an element of %.- coerce: Integer -> % if R has RetractableTo Integer or R has Ring
- from NonAssociativeRing
- coerce: Kernel % -> %
- from RetractableTo Kernel %

- coerce: Polynomial Fraction R -> % if R has IntegralDomain
`coerce(p)`

returns`p`

as an element of %.- coerce: Polynomial R -> % if R has Ring
- from RetractableTo Polynomial R
- coerce: R -> %
- from RetractableTo R

- coerce: SparseMultivariatePolynomial(R, Kernel %) -> % if R has Ring
`coerce(p)`

returns`p`

as an element of %.- coerce: Symbol -> %
- from RetractableTo Symbol
- commutator: (%, %) -> % if R has Ring or R has Group
- from NonAssociativeRng
- conjugate: (%, %) -> % if R has Group
- from Group
- convert: % -> InputForm if R has ConvertibleTo InputForm
- from ConvertibleTo InputForm
- convert: % -> Pattern Float if R has ConvertibleTo Pattern Float
- from ConvertibleTo Pattern Float
- convert: % -> Pattern Integer if R has ConvertibleTo Pattern Integer
- from ConvertibleTo Pattern Integer

- convert: Factored % -> % if R has IntegralDomain
`convert(f1\^e1 ... fm\^em)`

returns`(f1)\^e1 ... (fm)\^em`

as an element of %, using formal kernels created using a paren.- D: (%, List Symbol) -> % if R has Ring
- from PartialDifferentialRing Symbol
- D: (%, List Symbol, List NonNegativeInteger) -> % if R has Ring
- from PartialDifferentialRing Symbol
- D: (%, Symbol) -> % if R has Ring
- from PartialDifferentialRing Symbol
- D: (%, Symbol, NonNegativeInteger) -> % if R has Ring
- from PartialDifferentialRing Symbol
- definingPolynomial: % -> % if % has Ring
- from ExpressionSpace

- denom: % -> SparseMultivariatePolynomial(R, Kernel %) if R has IntegralDomain
`denom(f)`

returns the denominator of`f`

viewed as a polynomial in the kernels over`R`

.

- denominator: % -> % if R has IntegralDomain
`denominator(f)`

returns the denominator of`f`

converted to %.- differentiate: (%, List Symbol) -> % if R has Ring
- from PartialDifferentialRing Symbol
- differentiate: (%, List Symbol, List NonNegativeInteger) -> % if R has Ring
- from PartialDifferentialRing Symbol
- differentiate: (%, Symbol) -> % if R has Ring
- from PartialDifferentialRing Symbol
- differentiate: (%, Symbol, NonNegativeInteger) -> % if R has Ring
- from PartialDifferentialRing Symbol
- distribute: % -> %
- from ExpressionSpace
- distribute: (%, %) -> %
- from ExpressionSpace
- divide: (%, %) -> Record(quotient: %, remainder: %) if R has IntegralDomain
- from EuclideanDomain
- elt: (BasicOperator, %) -> %
- from ExpressionSpace
- elt: (BasicOperator, %, %) -> %
- from ExpressionSpace
- elt: (BasicOperator, %, %, %) -> %
- from ExpressionSpace
- elt: (BasicOperator, %, %, %, %) -> %
- from ExpressionSpace
- elt: (BasicOperator, %, %, %, %, %) -> %
- from ExpressionSpace
- elt: (BasicOperator, %, %, %, %, %, %) -> %
- from ExpressionSpace
- elt: (BasicOperator, %, %, %, %, %, %, %) -> %
- from ExpressionSpace
- elt: (BasicOperator, %, %, %, %, %, %, %, %) -> %
- from ExpressionSpace
- elt: (BasicOperator, %, %, %, %, %, %, %, %, %) -> %
- from ExpressionSpace
- elt: (BasicOperator, List %) -> %
- from ExpressionSpace
- euclideanSize: % -> NonNegativeInteger if R has IntegralDomain
- from EuclideanDomain

- eval: % -> % if R has ConvertibleTo InputForm
`eval(f)`

unquotes all the quoted operators in`f`

.- eval: (%, %, %) -> %
- from InnerEvalable(%, %)
- eval: (%, BasicOperator, % -> %) -> %
- from ExpressionSpace

- eval: (%, BasicOperator, %, Symbol) -> % if R has ConvertibleTo InputForm
`eval(x, s, f, y)`

replaces every`s(a)`

in`x`

by`f(y)`

with`y`

replaced by`a`

for any`a`

.- eval: (%, BasicOperator, List % -> %) -> %
- from ExpressionSpace
- eval: (%, Equation %) -> %
- from Evalable %
- eval: (%, Kernel %, %) -> %
- from InnerEvalable(Kernel %, %)
- eval: (%, List %, List %) -> %
- from InnerEvalable(%, %)
- eval: (%, List BasicOperator, List % -> %) -> %
- from ExpressionSpace

- eval: (%, List BasicOperator, List %, Symbol) -> % if R has ConvertibleTo InputForm
`eval(x, [s1, ..., sm], [f1, ..., fm], y)`

replaces every`si(a)`

in`x`

by`fi(y)`

with`y`

replaced by`a`

for any`a`

.- eval: (%, List BasicOperator, List List % -> %) -> %
- from ExpressionSpace
- eval: (%, List Equation %) -> %
- from Evalable %
- eval: (%, List Kernel %, List %) -> %
- from InnerEvalable(Kernel %, %)

- eval: (%, List Symbol) -> % if R has ConvertibleTo InputForm
`eval(f, [foo1, ..., foon])`

unquotes all the`fooi`

`'s`

in`f`

.- eval: (%, List Symbol, List % -> %) -> %
- from ExpressionSpace
- eval: (%, List Symbol, List List % -> %) -> %
- from ExpressionSpace

- eval: (%, List Symbol, List NonNegativeInteger, List % -> %) -> % if R has Ring
`eval(x, [s1, ..., sm], [n1, ..., nm], [f1, ..., fm])`

replaces every`si(a)^ni`

in`x`

by`fi(a)`

for any`a`

.

- eval: (%, List Symbol, List NonNegativeInteger, List List % -> %) -> % if R has Ring
`eval(x, [s1, ..., sm], [n1, ..., nm], [f1, ..., fm])`

replaces every`si(a1, ..., an)^ni`

in`x`

by`fi(a1, ..., an)`

for any`a1`

, …, am.

- eval: (%, Symbol) -> % if R has ConvertibleTo InputForm
`eval(f, foo)`

unquotes all the foo`'s`

in`f`

.- eval: (%, Symbol, % -> %) -> %
- from ExpressionSpace
- eval: (%, Symbol, List % -> %) -> %
- from ExpressionSpace

- eval: (%, Symbol, NonNegativeInteger, % -> %) -> % if R has Ring
`eval(x, s, n, f)`

replaces every`s(a)^n`

in`x`

by`f(a)`

for any`a`

.

- eval: (%, Symbol, NonNegativeInteger, List % -> %) -> % if R has Ring
`eval(x, s, n, f)`

replaces every`s(a1, ..., am)^n`

in`x`

by`f(a1, ..., am)`

for any`a1`

, …, am.- even?: % -> Boolean if % has RetractableTo Integer
- from ExpressionSpace
- expressIdealMember: (List %, %) -> Union(List %, failed) if R has IntegralDomain
- from PrincipalIdealDomain
- exquo: (%, %) -> Union(%, failed) if R has IntegralDomain
- from EntireRing
- extendedEuclidean: (%, %) -> Record(coef1: %, coef2: %, generator: %) if R has IntegralDomain
- from EuclideanDomain
- extendedEuclidean: (%, %, %) -> Union(Record(coef1: %, coef2: %), failed) if R has IntegralDomain
- from EuclideanDomain
- factor: % -> Factored % if R has IntegralDomain
- from UniqueFactorizationDomain
- freeOf?: (%, %) -> Boolean
- from ExpressionSpace
- freeOf?: (%, Symbol) -> Boolean
- from ExpressionSpace
- gcd: (%, %) -> % if R has IntegralDomain
- from GcdDomain
- gcd: List % -> % if R has IntegralDomain
- from GcdDomain
- gcdPolynomial: (SparseUnivariatePolynomial %, SparseUnivariatePolynomial %) -> SparseUnivariatePolynomial % if R has IntegralDomain
- from GcdDomain

- ground: % -> R
`ground(f)`

returns`f`

as an element of`R`

. An error occurs if`f`

is not an element of`R`

.

- ground?: % -> Boolean
`ground?(f)`

tests if`f`

is an element of`R`

.- hash: % -> SingleInteger
- from SetCategory
- hashUpdate!: (HashState, %) -> HashState
- from SetCategory
- height: % -> NonNegativeInteger
- from ExpressionSpace
- inv: % -> % if R has IntegralDomain or R has Group
- from Group
- is?: (%, BasicOperator) -> Boolean
- from ExpressionSpace
- is?: (%, Symbol) -> Boolean
- from ExpressionSpace

- isExpt: % -> Union(Record(var: Kernel %, exponent: Integer), failed) if R has SemiGroup
`isExpt(p)`

returns`[x, n]`

if`p = x^n`

and`n ~= 0`

.

- isExpt: (%, BasicOperator) -> Union(Record(var: Kernel %, exponent: Integer), failed) if R has Ring
`isExpt(p, op)`

returns`[x, n]`

if`p = x^n`

and`n ~= 0`

and`x = op(a)`

.

- isExpt: (%, Symbol) -> Union(Record(var: Kernel %, exponent: Integer), failed) if R has Ring
`isExpt(p, f)`

returns`[x, n]`

if`p = x^n`

and`n ~= 0`

and`x = f(a)`

.

- isMult: % -> Union(Record(coef: Integer, var: Kernel %), failed) if R has AbelianSemiGroup
`isMult(p)`

returns`[n, x]`

if`p = n * x`

and`n ~= 0`

.

- isPlus: % -> Union(List %, failed) if R has AbelianSemiGroup
`isPlus(p)`

returns`[m1, ..., mn]`

if`p = m1 +...+ mn`

and`n > 1`

.

- isPower: % -> Union(Record(val: %, exponent: Integer), failed) if R has Ring
`isPower(p)`

returns`[x, n]`

if`p = x^n`

and`n ~= 0`

.

- isTimes: % -> Union(List %, failed) if R has SemiGroup
`isTimes(p)`

returns`[a1, ..., an]`

if`p = a1*...*an`

and`n > 1`

.- kernel: (BasicOperator, %) -> %
- from ExpressionSpace
- kernel: (BasicOperator, List %) -> %
- from ExpressionSpace
- kernels: % -> List Kernel %
- from ExpressionSpace
- kernels: List % -> List Kernel %
- from ExpressionSpace
- latex: % -> String
- from SetCategory
- lcm: (%, %) -> % if R has IntegralDomain
- from GcdDomain
- lcm: List % -> % if R has IntegralDomain
- from GcdDomain
- lcmCoef: (%, %) -> Record(llcm_res: %, coeff1: %, coeff2: %) if R has IntegralDomain
- from LeftOreRing
- leftPower: (%, NonNegativeInteger) -> % if R has SemiGroup
- from MagmaWithUnit
- leftPower: (%, PositiveInteger) -> % if R has SemiGroup
- from Magma
- leftRecip: % -> Union(%, failed) if R has SemiGroup
- from MagmaWithUnit
- mainKernel: % -> Union(Kernel %, failed)
- from ExpressionSpace
- map: (% -> %, Kernel %) -> %
- from ExpressionSpace
- minPoly: Kernel % -> SparseUnivariatePolynomial % if % has Ring
- from ExpressionSpace
- multiEuclidean: (List %, %) -> Union(List %, failed) if R has IntegralDomain
- from EuclideanDomain

- numer: % -> SparseMultivariatePolynomial(R, Kernel %) if R has Ring
`numer(f)`

returns the numerator of`f`

viewed as a polynomial in the kernels over`R`

if`R`

is an integral domain. If not, then numer(`f`

) =`f`

viewed as a polynomial in the kernels over`R`

.

- numerator: % -> % if R has Ring
`numerator(f)`

returns the numerator of`f`

converted to %.- odd?: % -> Boolean if % has RetractableTo Integer
- from ExpressionSpace
- one?: % -> Boolean if R has SemiGroup
- from MagmaWithUnit
- operator: BasicOperator -> BasicOperator
- from ExpressionSpace
- operators: % -> List BasicOperator
- from ExpressionSpace
- opposite?: (%, %) -> Boolean if R has AbelianSemiGroup
- from AbelianMonoid
- paren: % -> %
- from ExpressionSpace
- patternMatch: (%, Pattern Float, PatternMatchResult(Float, %)) -> PatternMatchResult(Float, %) if R has PatternMatchable Float
- from PatternMatchable Float
- patternMatch: (%, Pattern Integer, PatternMatchResult(Integer, %)) -> PatternMatchResult(Integer, %) if R has PatternMatchable Integer
- from PatternMatchable Integer
- prime?: % -> Boolean if R has IntegralDomain
- from UniqueFactorizationDomain
- principalIdeal: List % -> Record(coef: List %, generator: %) if R has IntegralDomain
- from PrincipalIdealDomain
- quo: (%, %) -> % if R has IntegralDomain
- from EuclideanDomain
- recip: % -> Union(%, failed) if R has SemiGroup
- from MagmaWithUnit
- reducedSystem: (Matrix %, Vector %) -> Record(mat: Matrix Integer, vec: Vector Integer) if R has Ring and R has LinearlyExplicitOver Integer
- from LinearlyExplicitOver Integer
- reducedSystem: (Matrix %, Vector %) -> Record(mat: Matrix R, vec: Vector R) if R has Ring
- from LinearlyExplicitOver R
- reducedSystem: Matrix % -> Matrix Integer if R has Ring and R has LinearlyExplicitOver Integer
- from LinearlyExplicitOver Integer
- reducedSystem: Matrix % -> Matrix R if R has Ring
- from LinearlyExplicitOver R
- rem: (%, %) -> % if R has IntegralDomain
- from EuclideanDomain
- retract: % -> Fraction Integer if R has RetractableTo Integer and R has IntegralDomain or R has RetractableTo Fraction Integer
- from RetractableTo Fraction Integer
- retract: % -> Fraction Polynomial R if R has IntegralDomain
- from RetractableTo Fraction Polynomial R
- retract: % -> Integer if R has RetractableTo Integer
- from RetractableTo Integer
- retract: % -> Kernel %
- from RetractableTo Kernel %
- retract: % -> Polynomial R if R has Ring
- from RetractableTo Polynomial R
- retract: % -> R
- from RetractableTo R
- retract: % -> Symbol
- from RetractableTo Symbol
- retractIfCan: % -> Union(Fraction Integer, failed) if R has RetractableTo Integer and R has IntegralDomain or R has RetractableTo Fraction Integer
- from RetractableTo Fraction Integer
- retractIfCan: % -> Union(Fraction Polynomial R, failed) if R has IntegralDomain
- from RetractableTo Fraction Polynomial R
- retractIfCan: % -> Union(Integer, failed) if R has RetractableTo Integer
- from RetractableTo Integer
- retractIfCan: % -> Union(Kernel %, failed)
- from RetractableTo Kernel %
- retractIfCan: % -> Union(Polynomial R, failed) if R has Ring
- from RetractableTo Polynomial R
- retractIfCan: % -> Union(R, failed)
- from RetractableTo R
- retractIfCan: % -> Union(Symbol, failed)
- from RetractableTo Symbol
- rightPower: (%, NonNegativeInteger) -> % if R has SemiGroup
- from MagmaWithUnit
- rightPower: (%, PositiveInteger) -> % if R has SemiGroup
- from Magma
- rightRecip: % -> Union(%, failed) if R has SemiGroup
- from MagmaWithUnit
- sample: % if R has AbelianSemiGroup or R has SemiGroup
- from MagmaWithUnit
- sizeLess?: (%, %) -> Boolean if R has IntegralDomain
- from EuclideanDomain
- smaller?: (%, %) -> Boolean
- from Comparable
- squareFree: % -> Factored % if R has IntegralDomain
- from UniqueFactorizationDomain
- squareFreePart: % -> % if R has IntegralDomain
- from UniqueFactorizationDomain
- subst: (%, Equation %) -> %
- from ExpressionSpace
- subst: (%, List Equation %) -> %
- from ExpressionSpace
- subst: (%, List Kernel %, List %) -> %
- from ExpressionSpace
- subtractIfCan: (%, %) -> Union(%, failed) if R has AbelianGroup
- from CancellationAbelianMonoid
- tower: % -> List Kernel %
- from ExpressionSpace
- tower: List % -> List Kernel %
- from ExpressionSpace
- unit?: % -> Boolean if R has IntegralDomain
- from EntireRing
- unitCanonical: % -> % if R has IntegralDomain
- from EntireRing
- unitNormal: % -> Record(unit: %, canonical: %, associate: %) if R has IntegralDomain
- from EntireRing

- univariate: (%, Kernel %) -> Fraction SparseUnivariatePolynomial % if R has IntegralDomain
`univariate(f, k)`

returns`f`

viewed as a univariate fraction in`k`

.

- variables: List % -> List Symbol
`variables([f1, ..., fn])`

returns the list of all the variables of`f1`

, …,`fn`

.- zero?: % -> Boolean if R has AbelianSemiGroup
- from AbelianMonoid

AbelianGroup if R has AbelianGroup

AbelianMonoid if R has AbelianSemiGroup

AbelianSemiGroup if R has AbelianSemiGroup

Algebra % if R has IntegralDomain

Algebra Fraction Integer if R has IntegralDomain

Algebra R if R has CommutativeRing

BiModule(Fraction Integer, Fraction Integer) if R has IntegralDomain

BiModule(R, R) if R has CommutativeRing

CancellationAbelianMonoid if R has AbelianGroup

canonicalsClosed if R has IntegralDomain

canonicalUnitNormal if R has IntegralDomain

CharacteristicNonZero if R has CharacteristicNonZero

CharacteristicZero if R has CharacteristicZero

CommutativeRing if R has IntegralDomain

CommutativeStar if R has IntegralDomain

ConvertibleTo InputForm if R has ConvertibleTo InputForm

ConvertibleTo Pattern Float if R has ConvertibleTo Pattern Float

ConvertibleTo Pattern Integer if R has ConvertibleTo Pattern Integer

DivisionRing if R has IntegralDomain

EntireRing if R has IntegralDomain

EuclideanDomain if R has IntegralDomain

Evalable %

Field if R has IntegralDomain

FullyLinearlyExplicitOver R if R has Ring

GcdDomain if R has IntegralDomain

InnerEvalable(%, %)

InnerEvalable(Kernel %, %)

IntegralDomain if R has IntegralDomain

LeftModule % if R has Ring

LeftModule Fraction Integer if R has IntegralDomain

LeftModule R if R has CommutativeRing

LeftOreRing if R has IntegralDomain

LinearlyExplicitOver Integer if R has Ring and R has LinearlyExplicitOver Integer

LinearlyExplicitOver R if R has Ring

MagmaWithUnit if R has SemiGroup

Module % if R has IntegralDomain

Module Fraction Integer if R has IntegralDomain

Module R if R has CommutativeRing

NonAssociativeRing if R has Ring

NonAssociativeRng if R has Ring

NonAssociativeSemiRing if R has Ring

NonAssociativeSemiRng if R has Ring

noZeroDivisors if R has IntegralDomain

PartialDifferentialRing Symbol if R has Ring

PatternMatchable Float if R has PatternMatchable Float

PatternMatchable Integer if R has PatternMatchable Integer

PrincipalIdealDomain if R has IntegralDomain

RetractableTo Fraction Integer if R has RetractableTo Fraction Integer or R has RetractableTo Integer and R has IntegralDomain

RetractableTo Fraction Polynomial R if R has IntegralDomain

RetractableTo Integer if R has RetractableTo Integer

RetractableTo Polynomial R if R has Ring

RightModule % if R has Ring

RightModule Fraction Integer if R has IntegralDomain

RightModule R if R has CommutativeRing

TwoSidedRecip if R has IntegralDomain or R has Group

UniqueFactorizationDomain if R has IntegralDomain

unitsKnown if R has Ring or R has Group