#### 17.3 IndexedFreeArithmeticType

ToDo 78
rhx 58 10-Jan-2007: This is close to IndexedFreeLinearArithmeticType of the Algebra library, but as in IndexedFreeAdditiveCombinationType we have no function

*: (A, %) -> %

although there is now a function

*: (%, %) -> %

But since we do not require J to contain a multiplicative unit element, there is no canonical way to provide a function

coerce: A -> %

Type Constructor

Description

Category of (nearly) free algebras.

The category IndexedFreeArithmeticType describes

 (178)
where A is known to be a ring and J is known to be a multiplicative semigroup.

Multiplication of A and J need not be commutative.

X is the monoid ring A[J] where elements of A commute with elements of J.

X will have a multiplicative unit if A has one and J is a monoid.

Parameters

A:

A ring.

J:

A totally ordered multiplicative monoid that serves as index set.

495cat: IndexedFreeArithmeticType 495  (462)
define IndexedFreeArithmeticType(
A: with {
zero?: % -> Boolean;
+: (%, %) -> %;
*: (%, %) -> %
},
J: with {
TotallyOrderedType;
*: (%, %) -> %;
}
): Category == with {
exports: IndexedFreeArithmeticType 496
}

Defines:
IndexedFreeArithmeticType, used in chunks 501 and 527.

Uses TotallyOrderedType 571.

Exports of IndexedFreeArithmeticType

*: (%, %) -> % Multiplies two polynomials.

if A has with {one?: % -> Boolean} and J has with {one?: % -> Boolean} then {

one?: % -> Boolean Returns true if the argument is the multiplicative identity.

}

if A has with {1: %} and J has with {1: %} then {

1: % Returns true if the argument is the multiplicative identity.

}

496exports: IndexedFreeArithmeticType 496  (495)  497a

Export of IndexedFreeArithmeticType

*: (%, %) -> %

Description

Multiplies two polynomials.

497aexports: IndexedFreeArithmeticType 496+   (495)  496  497b
*: (%, %) -> %;
497bexports: IndexedFreeArithmeticType 496+   (495)  497a  498b
if A has with {one?: % -> Boolean} and J has with {one?: % -> Boolean} then {
exports: IndexedFreeArithmeticType: one? 498a
}

Export of IndexedFreeArithmeticType

one?: % -> Boolean

Description

Returns true if the argument is the multiplicative identity.

498aexports: IndexedFreeArithmeticType: one? 498a  (497b)
one?: % -> Boolean;
498bexports: IndexedFreeArithmeticType 496+   (495)  497b
if A has with {1: %} and J has with {1: %} then {
exports: IndexedFreeArithmeticType: 1 499
}

Export of IndexedFreeArithmeticType

1: %

Description

Returns true if the argument is the multiplicative identity.

499exports: IndexedFreeArithmeticType: 1 499  (498b)
1: %;