If R is the provided ring then R[X] is the returned polynomial ring:
• Scheme’s null list represents the 0 of R[X],
• If x represents x ∈ R[X] and x≠0 and y represents y ∈ R then (cons y x) represents xX + y.
• Thus if x, y ∈ R then (list x y) represents xX0 + yX1 ∈ R[X]
• The last member of the list is not 0 and every member of the list is from R. The representation is thus unique.
poly
Given a ring R in the form of the following seven arguments, return a tool list for the Polynomials over the ring.

((fileVal "Poly/poly") zer zer? + - * rng? one)

 zer R the additive identity of the ring zer? R→bool ring zero tester + R×R→R ring addition - R×R→R ring subtraction * R×R→R ring multiplication rng? membership in R one R any non zero element in R
The only use of rng? is to produce the last element of the yield and the only requirement on one is that (zer? one) yield #f.
The returned value is the list with elements:
 R[X]×R[X]→R[X] polynomial addition. R[X]×R[X]→R[X] polynomial subtraction. R[X]×R[X]→R[X] polynomial multiplication. R×R[X]→R[X] ring times polynomial. well formed polynomial query.
'() serves as a zero and null? serves as a zero test.
qr
Division Pack.
Let
z = ((fileVal "Poly/qr") / zer zer? + - * rng? one)
The arguments are the same as for "Poly/poly" above except for the additional multiplicative inverse.

For polynomials n and d≠0 the yield of ((z 'qr) n d) is a pair of polynomials (q . r) such that n = qd + r and r is of lesser degree than d.

(z 'ply) is the yield of (fileVal "Poly/poly") above for the same arguments.

((z 'gcd) p q) returns the gcd of polynomials p and q. The high order term is always one.

tfe
((fileVal "Poly/tfe") / zer zer? + - * rng? one) with the same arguments as qr yields a list of values for the transcendental extension over the rationals.
• zero
• zero?
• one