|
Macaulay2 Engine
|
PolyRing subclass for solvable polynomial algebras (PBW-type non-commutative rings where each pair of non-commuting variables satisfies a relation of the form x_j x_i = c_ij x_i x_j + lower). More...
#include <solvable.hpp>
Public Member Functions | |
| virtual bool | is_commutative_ring () const |
| virtual bool | is_solvable_algebra () const |
| virtual const SolvableAlgebra * | cast_to_SolvableAlgebra () const |
| virtual SolvableAlgebra * | cast_to_SolvableAlgebra () |
| virtual ring_elem | power (const ring_elem f, mpz_srcptr n) const |
| Exponentiation. This is the default function, if a class doesn't define this. | |
| virtual ring_elem | power (const ring_elem f, int n) const |
| virtual ring_elem | mult_by_term (const ring_elem f, const ring_elem c, const int *m) const |
| Public Member Functions inherited from PolyRing | |
| virtual void | clear () |
| virtual const PolyRing * | cast_to_PolyRing () const |
| virtual PolyRing * | cast_to_PolyRing () |
| virtual void | text_out (buffer &o) const |
| ring_elem | fromCoefficient (ring_elem &coeff) const |
| virtual ring_elem | from_long (long n) const |
| virtual ring_elem | from_int (mpz_srcptr n) const |
| virtual bool | from_rational (mpq_srcptr q, ring_elem &result) const |
| virtual bool | from_BigComplex (gmp_CC z, ring_elem &result) const |
| virtual bool | from_BigReal (gmp_RR z, ring_elem &result) const |
| virtual bool | from_Interval (gmp_RRi z, ring_elem &result) const |
| virtual bool | from_ComplexInterval (gmp_CCi z, ring_elem &result) const |
| virtual bool | from_double (double a, ring_elem &result) const |
| virtual bool | from_complex_double (double re, double im, ring_elem &result) const |
| virtual ring_elem | var (int v) const |
| virtual int | index_of_var (const ring_elem a) const |
| virtual M2_arrayint | support (const ring_elem a) const |
| virtual bool | promote (const Ring *R, const ring_elem f, ring_elem &result) const |
| virtual bool | lift (const Ring *R, const ring_elem f, ring_elem &result) const |
| virtual ring_elem | preferred_associate (ring_elem f) const |
| ring_elem | preferred_associate_divisor (ring_elem ff) const |
| virtual bool | is_unit (const ring_elem f) const |
| virtual bool | is_zero (const ring_elem f) const |
| virtual bool | is_equal (const ring_elem f, const ring_elem g) const |
| virtual int | compare_elems (const ring_elem f, const ring_elem g) const |
| virtual bool | is_homogeneous (const ring_elem f) const |
| virtual bool | multi_degree (const ring_elem f, monomial d) const |
| virtual void | degree_weights (const ring_elem f, const std::vector< int > &wts, int &lo, int &hi) const |
| virtual ring_elem | homogenize (const ring_elem f, int v, int deg, const std::vector< int > &wts) const |
| virtual ring_elem | homogenize (const ring_elem f, int v, const std::vector< int > &wts) const |
| virtual ring_elem | copy (const ring_elem f) const |
| virtual void | remove (ring_elem &f) const |
| void | internal_negate_to (ring_elem &f) const |
| void | internal_add_to (ring_elem &f, ring_elem &g) const |
| void | internal_subtract_to (ring_elem &f, ring_elem &g) const |
| virtual ring_elem | negate (const ring_elem f) const |
| virtual ring_elem | add (const ring_elem f, const ring_elem g) const |
| virtual ring_elem | subtract (const ring_elem f, const ring_elem g) const |
| virtual ring_elem | mult (const ring_elem f, const ring_elem g) const |
| virtual ring_elem | invert (const ring_elem f) const |
| virtual ring_elem | divide (const ring_elem f, const ring_elem g) const |
| Warning! This function works even if g does not divide f. | |
| ring_elem | gcd (const ring_elem f, const ring_elem g) const |
| ring_elem | gcd_extended (const ring_elem f, const ring_elem g, ring_elem &u, ring_elem &v) const |
| virtual ring_elem | remainder (const ring_elem f, const ring_elem g) const |
| virtual ring_elem | quotient (const ring_elem f, const ring_elem g) const |
| virtual ring_elem | remainderAndQuotient (const ring_elem f, const ring_elem g, ring_elem ") const |
| virtual void | syzygy (const ring_elem a, const ring_elem b, ring_elem &x, ring_elem &y) const |
| virtual ring_elem | random () const |
| virtual void | elem_text_out (buffer &o, const ring_elem f, bool p_one=true, bool p_plus=false, bool p_parens=false) const |
| virtual ring_elem | eval (const RingMap *map, const ring_elem f, int first_var) const |
| virtual int | n_flat_terms (const ring_elem f) const |
| virtual int | n_logical_terms (int nvars0, const ring_elem f) const |
| virtual ring_elem | get_coeff (const Ring *coeffR, const ring_elem f, const_varpower vp) const |
| virtual ring_elem | get_terms (int nvars0, const ring_elem f, int lo, int hi) const |
| virtual ring_elem | make_flat_term (const ring_elem a, const_monomial m) const |
| virtual ring_elem | make_logical_term (const Ring *coeffR, const ring_elem a, const_exponents exp) const |
| virtual ring_elem | lead_flat_coeff (const ring_elem f) const |
| virtual ring_elem | lead_logical_coeff (const Ring *coeffR, const ring_elem f) const |
| virtual const_monomial | lead_flat_monomial (const ring_elem f) const |
| virtual void | lead_logical_exponents (int nvars0, const ring_elem f, exponents_t result_exp) const |
| ring_elem | lead_term (const ring_elem f) const |
| virtual engine_RawArrayPairOrNull | list_form (const Ring *coeffR, const ring_elem f) const |
| virtual ring_elem * | get_parts (const std::vector< int > &wts, const ring_elem f, long &result_len) const |
| virtual ring_elem | get_part (const std::vector< int > &wts, const ring_elem f, bool lobound_given, bool hibound_given, long lobound, long hibound) const |
| virtual void | mult_coeff_to (ring_elem a, ring_elem &f) const |
| virtual void | divide_coeff_to (ring_elem &f, ring_elem a) const |
| virtual ring_elem | lead_term (int nparts, const ring_elem f) const |
| ring_elem | fromSmallIntegerCoefficients (const std::vector< long > &coeffs, int var) const |
| virtual ring_elem | zeroize_tiny (gmp_RR epsilon, const ring_elem f) const |
| virtual void | increase_maxnorm (gmp_RRmutable norm, const ring_elem f) const |
| virtual vec | vec_lead_term (int nparts, const FreeModule *F, vec v) const |
| virtual vec | vec_top_coefficient (const vec v, int &var, int &exp) const |
| const vecterm * | vec_locate_lead_term (const FreeModule *F, vec v) const |
| virtual void | monomial_divisor (const ring_elem a, exponents_t exp) const |
| virtual ring_elem | diff (ring_elem a, ring_elem b, int use_coeff) const |
| virtual bool | in_subring (int nslots, const ring_elem a) const |
| virtual void | degree_of_var (int n, const ring_elem a, int &lo, int &hi) const |
| virtual ring_elem | divide_by_var (int n, int d, const ring_elem a) const |
| virtual ring_elem | divide_by_expvector (const_exponents exp, const ring_elem a) const |
| virtual void | lower_content (ring_elem &cont, ring_elem new_coeff) const |
| virtual ring_elem | content (ring_elem f) const |
| virtual ring_elem | content (ring_elem f, ring_elem g) const |
| virtual ring_elem | divide_by_given_content (ring_elem f, ring_elem c) const |
| void | sort (Nterm *&f) const |
| void | determine_common_denominator_QQ (ring_elem f, mpz_ptr denom_so_far) const |
| ring_elem | get_denominator_QQ (ring_elem f) const |
| ring_elem | vec_get_denominator_QQ (vec f) const |
| gbvector * | translate_gbvector_from_vec_QQ (const FreeModule *F, const vec v, ring_elem &result_denominator) const |
| vec | translate_gbvector_to_vec_QQ (const FreeModule *F, const gbvector *v, const ring_elem denom) const |
| gbvector * | translate_gbvector_from_ringelem_QQ (ring_elem coeff) const |
| gbvector * | translate_gbvector_from_ringelem (ring_elem coeff) const |
| gbvector * | translate_gbvector_from_vec (const FreeModule *F, const vec v, ring_elem &result_denominator) const |
| vec | translate_gbvector_to_vec (const FreeModule *F, const gbvector *v) const |
| vec | translate_gbvector_to_vec_denom (const FreeModule *F, const gbvector *v, const ring_elem denom) const |
| Public Member Functions inherited from PolyRingFlat | |
| virtual Nterm * | numerator (ring_elem f) const |
| virtual const PolyRingFlat * | cast_to_PolyRingFlat () const |
| virtual PolyRingFlat * | cast_to_PolyRingFlat () |
| Public Member Functions inherited from PolynomialRing | |
| Matrix * | getPresentation () const |
| unsigned long | get_precision () const |
| bool | is_basic_ring () const |
| bool | is_poly_ring () const |
| bool | is_graded () const |
| CoefficientType | coefficient_type () const |
| int | n_vars () const |
| QRingInfo * | get_quotient_info () const |
| const Ring * | getCoefficientRing () const |
| MonomialTable * | get_quotient_MonomialTable () const |
| const MonomialIdeal * | get_quotient_monomials () const |
| const MonomialTableZZ * | get_quotient_MonomialTableZZ () const |
| int | n_quotients () const |
| Nterm * | quotient_element (int i) const |
| const gbvector * | quotient_gbvector (int i) const |
| const MonomialIdeal * | make_basis_MonomialIdeal () const |
| bool | is_quotient_ring () const |
| bool | is_skew_commutative () const |
| int | n_skew_commutative_vars () const |
| int | skew_variable (int i) const |
| bool | is_skew_var (int v) const |
| const SkewMultiplication & | getSkewInfo () const |
| virtual bool | is_weyl_algebra () const |
| virtual bool | is_skew_commutative_ring () const |
| virtual const PolyRing * | getNumeratorRing () const |
| virtual const PolynomialRing * | getAmbientRing () const |
| virtual const Ring * | getDenominatorRing () const |
| virtual GBRing * | get_gb_ring () const |
| virtual const Ring * | getCoefficients () const |
| virtual const Monoid * | getMonoid () const |
| virtual bool | is_fraction_poly_ring () const |
| virtual int | n_fraction_vars () const |
| virtual const PolynomialRing * | cast_to_PolynomialRing () const |
| virtual PolynomialRing * | cast_to_PolynomialRing () |
| SumCollector * | make_SumCollector () const |
| virtual unsigned int | computeHashValue (const ring_elem a) const |
| int | n_terms (const ring_elem f) const |
| virtual ring_elem | make_logical_term (const Ring *coeffR, const ring_elem a, const_exponents exp) const =0 |
| virtual ring_elem | get_coeff (const Ring *coeffR, const ring_elem f, const_varpower vp) const =0 |
| virtual void | lead_logical_exponents (int nvars0, const ring_elem f, exponents_t result_exp) const =0 |
| virtual void | monomial_divisor (const ring_elem a, exponents_t exp) const =0 |
| virtual ring_elem | divide_by_expvector (const_exponents exp, const ring_elem a) const =0 |
| Public Member Functions inherited from Ring | |
| virtual | ~Ring () |
| const CoefficientRingR * | getCoefficientRingR () const |
| long | characteristic () const |
| const Monoid * | degree_monoid () const |
| const PolynomialRing * | get_degree_ring () const |
| const std::vector< int > & | get_heft_vector () const |
| virtual M2::RingID | ringID () const |
| virtual bool | isFinitePrimeField () const |
| virtual bool | isGaloisField () const |
| virtual bool | is_ZZ () const |
| virtual bool | is_QQ () const |
| virtual bool | is_RRR () const |
| virtual bool | is_RRi () const |
| virtual bool | is_CCC () const |
| virtual bool | is_fraction_field () const |
| bool | is_field () const |
| bool | declare_field () |
| ring_elem | get_non_unit () const |
| void | set_non_unit (ring_elem zero_div) const |
| virtual bool | has_associate_divisors () const |
| virtual const RingZZ * | cast_to_RingZZ () const |
| virtual RingZZ * | cast_to_RingZZ () |
| virtual const Z_mod * | cast_to_Z_mod () const |
| virtual Z_mod * | cast_to_Z_mod () |
| virtual const GF * | cast_to_GF () const |
| virtual GF * | cast_to_GF () |
| virtual const Tower * | cast_to_Tower () const |
| virtual Tower * | cast_to_Tower () |
| virtual const PolyQQ * | cast_to_PolyQQ () const |
| virtual PolyQQ * | cast_to_PolyQQ () |
| virtual const FractionField * | cast_to_FractionField () const |
| virtual FractionField * | cast_to_FractionField () |
| virtual const LocalRing * | cast_to_LocalRing () const |
| virtual LocalRing * | cast_to_LocalRing () |
| virtual const M2FreeAlgebra * | cast_to_M2FreeAlgebra () const |
| virtual M2FreeAlgebra * | cast_to_M2FreeAlgebra () |
| virtual const M2FreeAlgebraQuotient * | cast_to_M2FreeAlgebraQuotient () const |
| virtual M2FreeAlgebraQuotient * | cast_to_M2FreeAlgebraQuotient () |
| virtual const M2FreeAlgebraOrQuotient * | cast_to_M2FreeAlgebraOrQuotient () const |
| virtual M2FreeAlgebraOrQuotient * | cast_to_M2FreeAlgebraOrQuotient () |
| virtual const SchurRing * | cast_to_SchurRing () const |
| virtual SchurRing * | cast_to_SchurRing () |
| virtual const SchurRing2 * | cast_to_SchurRing2 () const |
| virtual SchurRing2 * | cast_to_SchurRing2 () |
| virtual const SchurSnRing * | cast_to_SchurSnRing () const |
| virtual SchurSnRing * | cast_to_SchurSnRing () |
| virtual const SkewPolynomialRing * | cast_to_SkewPolynomialRing () const |
| virtual SkewPolynomialRing * | cast_to_SkewPolynomialRing () |
| virtual const WeylAlgebra * | cast_to_WeylAlgebra () const |
| virtual RRR * | cast_to_RRR () |
| virtual const RRR * | cast_to_RRR () const |
| virtual RRi * | cast_to_RRi () |
| virtual const RRi * | cast_to_RRi () const |
| virtual CCC * | cast_to_CCC () |
| virtual const CCC * | cast_to_CCC () const |
| virtual const RingElement * | getMinimalPolynomial () const |
| virtual const RingElement * | getGenerator () const |
| virtual long | discreteLog (const ring_elem &a) const |
| virtual const RingElement * | getRepresentation (const ring_elem &a) const |
| virtual MutableMatrix * | makeMutableMatrix (size_t nrows, size_t ncols, bool dense) const |
| virtual FreeModule * | make_FreeModule () const |
| virtual FreeModule * | make_Schreyer_FreeModule () const |
| virtual FreeModule * | make_FreeModule (int n) const |
| virtual std::pair< bool, long > | coerceToLongInteger (ring_elem a) const |
| ring_elem | one () const |
| ring_elem | minus_one () const |
| ring_elem | zero () const |
| virtual bool | lower_associate_divisor (ring_elem &f, ring_elem g) const |
| void | negate_to (ring_elem &f) const |
| void | add_to (ring_elem &f, const ring_elem &g) const |
| void | subtract_to (ring_elem &f, const ring_elem &g) const |
| void | mult_to (ring_elem &f, const ring_elem g) const |
| const_monomial | degree (const ring_elem f) const |
| virtual ring_elem | antipode (ring_elem f) const |
| vec | vec_zeroize_tiny (gmp_RR epsilon, const vec f) const |
| void | vec_increase_maxnorm (gmp_RRmutable norm, const vec f) const |
| void | vec_sort (vecterm *&f) const |
| int | compare_vecs (vec v, vec w) const |
| vec | e_sub_i (int r) const |
| vec | make_vec (int r, ring_elem a) const |
| vec | make_vec_from_array (int len, Nterm **array) const |
| vec | copy_vec (const vecterm *v) const |
| void | remove_vec (vec v) const |
| bool | is_equal (const vecterm *a, const vecterm *b) const |
| bool | get_entry (const vecterm *v, int r, ring_elem &result) const |
| ring_elem | get_entry (vec v, int r) const |
| vec | sub_vector (const vecterm *v, M2_arrayint r) const |
| int | n_nonzero_terms (const vecterm *v) const |
| void | vec_text_out (buffer &o, const vecterm *v, bool p_one=true, bool p_plus=false, bool p_parens=false) const |
| vec | vec_eval (const RingMap *map, const FreeModule *F, const vec v) const |
| vec | negate_vec (vec v) const |
| vec | add_vec (vec v, vec w) const |
| vec | subtract_vec (vec v, vec w) const |
| vec | mult_vec (int n, vec v) const |
| vec | mult_vec (const ring_elem f, const vec w) const |
| vec | rightmult_vec (const vec w, const ring_elem f) const |
| void | set_entry (vec &v, int i, ring_elem r) const |
| void | mult_vec_to (vec &v, const ring_elem r, bool opposite_mult) const |
| void | mult_row (vec &v, const ring_elem r, int i, bool opposite_mult) const |
| void | negate_vec_to (vec &v) const |
| void | add_vec_to (vec &v, vec &w) const |
| void | subtract_vec_to (vec &v, vec &w) const |
| vec | mult_vec_matrix (const Matrix *m, vec v, bool opposite_mult) const |
| vec | component_shift (int n, vec v) const |
| vec | tensor_shift (int n, int m, vec v) const |
| vec | tensor (const FreeModule *F, vec v, const FreeModule *G, vec w) const |
| void | divide_vec_to (vec &v, const ring_elem a) const |
| void | divide_row (vec &v, int r, const ring_elem a) const |
| ring_elem | dot_product (const vecterm *v, const vecterm *w) const |
| vec | vec_diff (vec v, int rankFw, vec w, int use_coeff) const |
| int | vec_in_subring (int n, const vec v) const |
| void | vec_degree_of_var (int n, const vec v, int &lo, int &hi) const |
| vec | vec_divide_by_var (int n, int d, const vec v) const |
| vec | vec_divide_by_expvector (const_exponents exp, const vec v) const |
| bool | vec_is_scalar_multiple (vec f, vec g) const |
| vec | vec_remove_monomial_factors (vec f, bool make_squarefree_only) const |
| bool | vec_multi_degree (const FreeModule *F, const vec f, monomial degf) const |
| void | vec_degree_weights (const FreeModule *F, const vec f, const std::vector< int > &wts, int &lo, int &hi) const |
| bool | vec_is_homogeneous (const FreeModule *F, const vec f) const |
| vec | vec_homogenize (const FreeModule *F, const vec f, int v, int deg, const std::vector< int > &wts) const |
| vec | vec_homogenize (const FreeModule *F, const vec f, int v, const std::vector< int > &wts) const |
| ring_elem | divide_by_content (ring_elem f) const |
| ring_elem | split_off_content (ring_elem f, ring_elem &result) const |
| ring_elem | vec_content (vec f) const |
| vec | vec_divide_by_given_content (vec f, ring_elem c) const |
| vec | vec_divide_by_content (vec f) const |
| ring_elem | vec_split_off_content (vec f, vec &result) const |
| Public Member Functions inherited from MutableEngineObject | |
| MutableEngineObject () | |
| virtual | ~MutableEngineObject () |
| unsigned int | hash () const |
| Public Member Functions inherited from our_gc_cleanup | |
| our_gc_cleanup () | |
| virtual | ~our_gc_cleanup () |
Static Public Member Functions | |
| static SolvableAlgebra * | create (const PolynomialRing *R, const Matrix *Q) |
| Static Public Member Functions inherited from PolyRing | |
| static const PolyRing * | create (const Ring *K, const Monoid *M) |
| static const PolyRing * | get_trivial_poly_ring () |
| Static Public Member Functions inherited from PolynomialRing | |
| static PolynomialRing * | create_quotient (const PolynomialRing *R, const Matrix *M) |
| static PolynomialRing * | create_quotient (const PolynomialRing *R, const PolynomialRing *B) |
| static PolynomialRing * | create_quotient_ring (const Matrix *M) |
| Static Public Member Functions inherited from our_new_delete | |
| static void * | operator new (size_t size) |
| static void * | operator new[] (size_t size) |
| static void | operator delete (void *obj) |
| static void | operator delete[] (void *obj) |
| static void * | operator new (size_t size, void *existing_memory) |
| static void * | operator new[] (size_t size, void *existing_memory) |
| static void | operator delete (void *obj, void *existing_memory) |
| static void | operator delete[] (void *obj, void *existing_memory) |
Protected Member Functions | |
| bool | initialize_solvable (const Matrix *Q) |
| SolvableAlgebra () | |
| virtual | ~SolvableAlgebra () |
| Protected Member Functions inherited from PolyRing | |
| void | initialize_poly_ring (const Ring *K, const Monoid *M) |
| virtual | ~PolyRing () |
| PolyRing () | |
| void | minimal_monomial (ring_elem f, monomial &monom) const |
| Nterm * | division_algorithm (Nterm *f, Nterm *g, Nterm *") const |
| Nterm * | division_algorithm (Nterm *f, Nterm *g) const |
| Nterm * | powerseries_division_algorithm (Nterm *f, Nterm *g, Nterm *") const |
| std::vector< int > | setNegativeExponentMonomial (Nterm *f) const |
| Create an exponent vector whose i-th value is the minimum of the exponents of that variable, if that variable is a Laurent variable (i.e. allows negative exponents). | |
| Nterm * | division_algorithm_with_laurent_variables (Nterm *f, Nterm *g, Nterm *") const |
| vec | vec_coefficient_of_var (vec v, int var, int exp) const |
| ring_elem | diff_term (const_monomial m, const_monomial n, monomial resultmon, int use_coeff) const |
| ring_elem | power_direct (const ring_elem f, int n) const |
| ring_elem | get_logical_coeff (const Ring *coeffR, const Nterm *&f) const |
| Nterm * | new_term () const |
| Nterm * | copy_term (const Nterm *t) const |
| bool | imp_attempt_to_cancel_lead_term (ring_elem &f, ring_elem g, ring_elem &coeff, monomial monom) const |
| ring_elem | imp_skew_mult_by_term (const ring_elem f, const ring_elem c, const_monomial m) const |
| void | imp_subtract_multiple_to (ring_elem &f, ring_elem a, const_monomial m, const ring_elem g) const |
| Protected Member Functions inherited from PolynomialRing | |
| void | setIsGraded (bool new_val) |
| void | setQuotientInfo (QRingInfo *qinfo0) |
| void | initialize_PolynomialRing (const Ring *K, const Monoid *M, const PolyRing *numeratorR, const PolynomialRing *ambientR, const Ring *denomR) |
| virtual | ~PolynomialRing () |
| PolynomialRing () | |
| void | sort (Nterm *&f) const |
| Protected Member Functions inherited from Ring | |
| const ARing * | getARing () const |
| void | initialize_ring (long charac, const PolynomialRing *DR=nullptr, const std::vector< int > &heft_vec={}) |
| Ring () | |
| vec | new_vec () const |
| vector operations //////////////////// | |
| void | remove_vec_node (vec n) const |
Static Private Member Functions | |
| static SolvableAlgebra * | create (const Ring *K, const Monoid *M, const Matrix *Q) |
Private Attributes | |
| const Matrix * | Q_ |
PolyRing subclass for solvable polynomial algebras (PBW-type non-commutative rings where each pair of non-commuting variables satisfies a relation of the form x_j x_i = c_ij x_i x_j + lower).
Q_ is the matrix of lower correction terms indexed by variable pairs — when mult_by_term1 would normally commute x_j past x_i, the engine looks up Q_ to add in the lower-order polynomial that the relation demands. Constructed via create(R, Q) so the relations can be validated against the ambient PolynomialRing before the new ring is exposed.
Definition at line 56 of file solvable.hpp.