348{
349 try
350 {
353 if (K == nullptr)
354 {
355 ERROR(
"expected a tower ring");
356 return nullptr;
357 }
359
360 std::vector<M2::ARingTower::ElementType> extensions;
361
362 for (int i = 0; i < eqns->len; i++)
363 {
367 {
368 ERROR(
"extension element has incorrect base ring");
369 return nullptr;
370 }
372 extensions.push_back(f1);
373 }
376 std::unique_ptr<M2::ARingTower>(
T));
378 {
380 return nullptr;
381 }
382}
ARingPolynomial ElementType
void from_ring_elem(ElementType &result, const ring_elem &a) const
static ARingTower * create(const BaseRingType &baseRing, const std::vector< std::string > &names)
aring-style coefficient ring for tower polynomial rings (Z/p)[x_0][x_1]...[x_{n-1}...
const RingType & ring() const
static ConcreteRing< RingType > * create(std::unique_ptr< RingType > R)
ring_elem get_value() const
const Ring * get_ring() const
Front-end-visible "ring element" value: an engine ring_elem paired with the Ring* that gives it meani...