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

IndexedFreeArithmeticType

Description

Category of (nearly) free algebras.

The category IndexedFreeArithmeticType describes

X = ⊕   A = A(J) = {f : J → A |card(suppf) < ∞ }
     j∈J
(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

IndexedFreeAdditiveCombinationType(A, J);

*: (%, %) -> % 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
IndexedFreeAdditiveCombinationType(A, J);

Uses IndexedFreeAdditiveCombinationType 465.

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: %;