AFAICS you declare 2 argument variables as export of
MaybeSkewPolynomialCategory. There are 24 domains of this category,
but you provide implementation only for one domain. We should also
provide implementation for other domains, say give default
implementation in the category using variables and merging.
> diff --git a/src/algebra/fspace.spad b/src/algebra/fspace.spad
> index cda59470..a6df8af6 100644
> --- a/src/algebra/fspace.spad
> +++ b/src/algebra/fspace.spad
> @@ -1047,7 +1047,7 @@ FunctionSpace2(R : Comparable, K : KernelCategory(%)) : Category ==
> par : % -> %
>
> mainKernel x == mainVariable(x)$QF
> - kernels(x : %) : List(K) == variables(x)$QF
> + kernels(x : %) : List(K) == variables(numer x, denom x)
> univariate(x : %, k : K) == univariate(x, k)$QF
> isPlus x == isPlus(x)$QF
> isTimes x == isTimes(x)$QF
> diff --git a/src/algebra/multpoly.spad b/src/algebra/multpoly.spad
> index 10ffdc0a..62a232e1 100644
> --- a/src/algebra/multpoly.spad
> +++ b/src/algebra/multpoly.spad
> @@ -639,6 +639,11 @@ SparseMultivariatePolynomial(R : Join(SemiRng, AbelianMonoid),
>
> variables p == reverse! collect_variables(p, empty())
>
> + variables(p, q) ==
> + acc := collect_variables(p, empty())
> + acc := collect_variables(q, acc)
> + reverse! acc
> +
> mainVariable p ==
> p case R => "failed"
> p.v
> diff --git a/src/algebra/polycat.spad b/src/algebra/polycat.spad
> index 05c40029..2df824f5 100644
> --- a/src/algebra/polycat.spad
> +++ b/src/algebra/polycat.spad
> @@ -222,6 +222,9 @@ MaybeSkewPolynomialCategory(R : Join(SemiRng, AbelianMonoid),
> variables : % -> List(VarSet)
> ++ variables(p) returns the list of those variables actually
> ++ appearing in the polynomial p.
> + variables : (%, %) -> List(VarSet)
> + ++ variables(p, q) returns the list of those variables actually
> + ++ appearing in the polynomial p and q.
> if R has SemiRing then
> primitiveMonomials : % -> List %
> ++ primitiveMonomials(p) gives the list of monomials of the
> diff --git a/src/algebra/rf.spad b/src/algebra/rf.spad
> index 5472143c..6aed739d 100644
> --- a/src/algebra/rf.spad
> +++ b/src/algebra/rf.spad
> @@ -92,16 +92,7 @@ PolynomialCategoryQuotientFunctions(E, V, R, P, F):
> v := x::P::F
> ((numer f) v) / ((denom f) v)
>
> - mymerge : (List V, List V) ->List V
> - mymerge(l : List V, m : List V) : List V==
> - empty? l => m
> - empty? m => l
> - first l = first m => cons(first l, mymerge(rest l, rest m))
> - first l > first m => cons(first l, mymerge(rest l, m))
> - cons(first m, mymerge(l, rest m))
> -
> - variables f ==
> - mymerge(variables numer f, variables denom f)
> + variables f == variables(numer f, denom f)
>
> isPower f ==
> (den := denom f) ~= 1 =>
--
Waldek Hebisch