Macaulay2 Engine
Loading...
Searching...
No Matches
skewpoly.hpp
Go to the documentation of this file.
1// Copyright 2003 Michael E. Stillman
2
3#ifndef _skewpoly_hh_
4#define _skewpoly_hh_
5
41
42#include "poly.hpp"
43
45
61{
62 bool initialize_skew(M2_arrayint skewvars);
63
65 virtual ~SkewPolynomialRing();
66
67 public:
68 static SkewPolynomialRing *create(const Ring *K,
69 const Monoid *M,
70 M2_arrayint skewvars);
71
72 void text_out(buffer &o) const;
73
74 virtual bool has_gcd() const { return false; }
75 virtual bool is_skew_commutative_ring() const { return true; }
76 virtual bool is_commutative_ring() const { return false; }
78 {
79 return this;
80 }
82 virtual ring_elem power(const ring_elem f, mpz_srcptr n) const;
83 virtual ring_elem power(const ring_elem f, int n) const;
84
85 // antipode: implements the isomorphism of R and the opposite of R
86 // this is done by multiplying every monomial of f which has degree
87 // d (in the skew commuting variables) by (-1)^(d choose 2).
88 ring_elem antipode(const ring_elem f) const;
89
90 protected:
91 virtual ring_elem mult_by_term(const ring_elem f,
92 const ring_elem c,
93 const int *m) const;
94};
95#endif
96
97// Local Variables:
98// compile-command: "make -C $M2BUILDDIR/Macaulay2/e "
99// indent-tabs-mode: nil
100// End:
Engine-side commutative monomial monoid: variable names, ordering, multidegree machinery,...
Definition monoid.hpp:89
PolyRing()
Definition poly.hpp:82
xxx xxx xxx
Definition ring.hpp:102
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.
Definition skewpoly.cpp:98
virtual SkewPolynomialRing * cast_to_SkewPolynomialRing()
Definition skewpoly.hpp:81
virtual bool is_skew_commutative_ring() const
Definition skewpoly.hpp:75
virtual bool has_gcd() const
Definition skewpoly.hpp:74
bool initialize_skew(M2_arrayint skewvars)
Definition skewpoly.cpp:8
virtual const SkewPolynomialRing * cast_to_SkewPolynomialRing() const
Definition skewpoly.hpp:77
void text_out(buffer &o) const
Definition skewpoly.cpp:27
virtual ~SkewPolynomialRing()
Definition skewpoly.cpp:7
virtual bool is_commutative_ring() const
Definition skewpoly.hpp:76
static SkewPolynomialRing * create(const Ring *K, const Monoid *M, M2_arrayint skewvars)
Definition skewpoly.cpp:15
ring_elem antipode(const ring_elem f) const
Definition skewpoly.cpp:37
virtual ring_elem mult_by_term(const ring_elem f, const ring_elem c, const int *m) const
Definition skewpoly.cpp:67
PolyRing subclass for skew-commutative (exterior-style) polynomial rings: the listed skewvars anticom...
Definition skewpoly.hpp:61
Concrete commutative PolyRing — standard polynomial ring inheriting from PolyRingFlat.