Package edu.jas.poly
Class RelationTable<C extends RingElem<C>>
- java.lang.Object
-
- edu.jas.poly.RelationTable<C>
-
- All Implemented Interfaces:
java.io.Serializable
public class RelationTable<C extends RingElem<C>> extends java.lang.Object implements java.io.Serializable
RelationTable for solvable polynomials. This class maintains the non-commutative multiplication relations of solvable polynomial rings. The table entries are initialized with relations of the form xj * xi = pij. During multiplication the relations are updated by relations of the form xjk * xil = pijkl. If no relation for xj * xi is found in the table, this multiplication is assumed to be commutative xi xj. Can also be used for relations between coefficients and main variables.- Author:
- Heinz Kredel
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description boolean
coeffTable
Usage indicator: table or coeffTable.GenSolvablePolynomialRing<C>
ring
The factory for the solvable polynomial ring.java.util.Map<java.util.List<java.lang.Integer>,java.util.List>
table
The data structure for the relations.
-
Constructor Summary
Constructors Constructor Description RelationTable(GenSolvablePolynomialRing<C> r)
Constructor for RelationTable requires ring factory.RelationTable(GenSolvablePolynomialRing<C> r, boolean coeffTable)
Constructor for RelationTable requires ring factory.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addRelations(java.util.List<GenPolynomial<C>> rel)
Add list of polynomial triples as relations.void
addSolvRelations(java.util.List<GenSolvablePolynomial<C>> rel)
Add list of polynomial triples as relations.void
contract(RelationTable<C> tab)
Contract variables.boolean
equals(java.lang.Object p)
RelationTable equals.void
extend(RelationTable<C> tab)
Extend variables.int
hashCode()
Hash code for this relation table.boolean
isEmpty()
Test if the table is empty.TableRelation<C>
lookup(ExpVector e, ExpVector f)
Lookup RelationTable for existing relation.protected java.util.List<java.lang.Integer>
makeKey(ExpVector e, ExpVector f)
Construct a key for (e,f).void
recursive(RelationTable tab)
Recursive representation.java.util.List<GenSolvablePolynomial<C>>
relationList()
Convert relation table to list of polynomial triples.void
reverse(RelationTable<C> tab)
Reverse variables and relations.int
size()
Size of the table.java.lang.String
toScript()
Get a scripting compatible string representation.java.lang.String
toString()
Get the String representation.java.lang.String
toString(java.lang.String[] vars)
Get the String representation.void
update(ExpVector e, ExpVector f, GenPolynomial<C> p)
Update or initialize RelationTable with new relation. relation is e * f = p.void
update(ExpVector e, ExpVector f, GenSolvablePolynomial<C> p)
Update or initialize RelationTable with new relation. relation is e * f = p.void
update(GenPolynomial<C> E, GenPolynomial<C> F, GenPolynomial<C> p)
Update or initialize RelationTable with new relation. relation is e * f = p.void
update(GenPolynomial<C> E, GenPolynomial<C> F, GenSolvablePolynomial<C> p)
Update or initialize RelationTable with new relation. relation is e * f = p.
-
-
-
Field Detail
-
table
public final java.util.Map<java.util.List<java.lang.Integer>,java.util.List> table
The data structure for the relations.
-
ring
public final GenSolvablePolynomialRing<C extends RingElem<C>> ring
The factory for the solvable polynomial ring.
-
coeffTable
public final boolean coeffTable
Usage indicator: table or coeffTable.
-
-
Constructor Detail
-
RelationTable
public RelationTable(GenSolvablePolynomialRing<C> r)
Constructor for RelationTable requires ring factory. Note: This constructor is called within the constructor of the ring factory, so methods of this class can only be used after the other constructor has terminated.- Parameters:
r
- solvable polynomial ring factory.
-
RelationTable
public RelationTable(GenSolvablePolynomialRing<C> r, boolean coeffTable)
Constructor for RelationTable requires ring factory. Note: This constructor is called within the constructor of the ring factory, so methods of this class can only be used after the other constructor has terminated.- Parameters:
r
- solvable polynomial ring factory.coeffTable
- indicator for coeffTable.
-
-
Method Detail
-
equals
public boolean equals(java.lang.Object p)
RelationTable equals. Tests same keySets and base relations.- Overrides:
equals
in classjava.lang.Object
- See Also:
Object.equals(java.lang.Object)
-
hashCode
public int hashCode()
Hash code for this relation table.- Overrides:
hashCode
in classjava.lang.Object
- See Also:
Object.hashCode()
-
isEmpty
public boolean isEmpty()
Test if the table is empty.- Returns:
- true if the table is empty, else false.
-
toString
public java.lang.String toString()
Get the String representation.- Overrides:
toString
in classjava.lang.Object
- See Also:
Object.toString()
-
toString
public java.lang.String toString(java.lang.String[] vars)
Get the String representation.- Parameters:
vars
- names for the variables.- See Also:
Object.toString()
-
toScript
public java.lang.String toScript()
Get a scripting compatible string representation.- Returns:
- script compatible representation for this relation table.
-
update
public void update(ExpVector e, ExpVector f, GenSolvablePolynomial<C> p)
Update or initialize RelationTable with new relation. relation is e * f = p.- Parameters:
e
- first term.f
- second term.p
- solvable product polynomial.
-
update
public void update(GenPolynomial<C> E, GenPolynomial<C> F, GenSolvablePolynomial<C> p)
Update or initialize RelationTable with new relation. relation is e * f = p.- Parameters:
E
- first term polynomial.F
- second term polynomial.p
- solvable product polynomial.
-
update
public void update(GenPolynomial<C> E, GenPolynomial<C> F, GenPolynomial<C> p)
Update or initialize RelationTable with new relation. relation is e * f = p.- Parameters:
E
- first term polynomial.F
- second term polynomial.p
- product polynomial.
-
update
public void update(ExpVector e, ExpVector f, GenPolynomial<C> p)
Update or initialize RelationTable with new relation. relation is e * f = p.- Parameters:
e
- first term.f
- second term.p
- solvable product polynomial.
-
lookup
public TableRelation<C> lookup(ExpVector e, ExpVector f)
Lookup RelationTable for existing relation. Find p with e * f = p. If no relation for e * f is contained in the table then return the symmetric product p = 1 e f.- Parameters:
e
- first term.f
- second term.- Returns:
- t table relation container, contains e' and f' with e f = e' lt(p) f'.
-
makeKey
protected java.util.List<java.lang.Integer> makeKey(ExpVector e, ExpVector f)
Construct a key for (e,f).- Parameters:
e
- first term.f
- second term.- Returns:
- k key for (e,f).
-
size
public int size()
Size of the table.- Returns:
- n number of non-commutative relations.
-
extend
public void extend(RelationTable<C> tab)
Extend variables. Used e.g. in module embedding. Extend all ExpVectors and polynomials of the given relation table by i elements and put the relations into this table, i.e. this should be empty.- Parameters:
tab
- a relation table to be extended and inserted into this.
-
contract
public void contract(RelationTable<C> tab)
Contract variables. Used e.g. in module embedding. Contract all ExpVectors and polynomials of the given relation table by i elements and put the relations into this table, i.e. this should be empty.- Parameters:
tab
- a relation table to be contracted and inserted into this.
-
recursive
public void recursive(RelationTable tab)
Recursive representation. Split all ExpVectors and polynomials of the given relation table to lower elements and upper elements and put the relations into this table or this as coefficient table, i.e. this should be empty.- Parameters:
tab
- a relation table to be contracted and inserted into this.
-
reverse
public void reverse(RelationTable<C> tab)
Reverse variables and relations. Used e.g. in opposite rings. Reverse all ExpVectors and polynomials of the given relation table and put the modified relations into this table, i.e. this should be empty.- Parameters:
tab
- a relation table to be reverted and inserted into this.
-
relationList
public java.util.List<GenSolvablePolynomial<C>> relationList()
Convert relation table to list of polynomial triples.- Returns:
- rel = (e1,f1,p1, ...) where ei * fi = pi are solvable relations.
-
addSolvRelations
public void addSolvRelations(java.util.List<GenSolvablePolynomial<C>> rel)
Add list of polynomial triples as relations.- Parameters:
rel
- = (e1,f1,p1, ...) where ei * fi = pi are solvable relations. Note: Only because of type erasure, equivalent to addRelations().
-
addRelations
public void addRelations(java.util.List<GenPolynomial<C>> rel)
Add list of polynomial triples as relations.- Parameters:
rel
- = (e1,f1,p1, ...) where ei * fi = pi are solvable relations.
-
-