Package edu.jas.poly

Class RelationTable<C extends RingElem<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 Detail

      • table

        public final java.util.Map<java.util.List<java.lang.Integer>,​java.util.List> table
        The data structure for the relations.
      • 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 class java.lang.Object
        See Also:
        Object.equals(java.lang.Object)
      • hashCode

        public int hashCode()
        Hash code for this relation table.
        Overrides:
        hashCode in class java.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 class java.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<Clookup​(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.