# SugarDegree

© 2009 Anna Bigatti
GNU Free Documentation License, Version 1.2

- User documentation
  - Member functions
  - Non member functions

CoCoALib Documentation Index

## User documentation

Abstract class for implementing several kinds of sugar:

- homogenous case (= the degree)
- non graded case (using StdDeg)
- graded case (using wdeg)
- non graded case and saturating algorithm
- graded case and saturating algorithm

  === Pseudo constructors ===

- `NewStdSugar(ConstRefRingElem f);`
- `NewStdSugarNoIdx(ConstRefRingElem f, long PosIndet);`
- `NewStdSugarSat(ConstRefRingElem f);`
- `NewStdSugarNoIdxSat(ConstRefRingElem f, long PosIndet);`

- `NewWSugar(ConstRefRingElem f);`
- `NewWDeg1CompTmp(ConstRefRingElem f);` -- temporary: only for testing
- `NewWSugarConst(ConstRefRingElem f);` -- stays constant in myUpdate
- `NewWSugarSat(ConstRefRingElem f);`

  There is also an "empty" constructor for when you don't have yet enough information to choose the kind of sugar. However it does require the `uninitialized` marker to make sure you know you have an uninitialized sugar!
- `sugar(uninitialized);`

### Member functions

Warning! The following throw an error if the wrong type of value is asked!

- `const degree& myWSugar() const =0;` -- only if impl stores this value
- `long myStdSugar() const =0;` -- only if impl stores this value

  Warning! The following throw an error if the sugar is not initializes!
- `void myMul(ConstRefPPMonoidElem pp) =0;` -- sugar after multiplying by pp
- `void myUpdate(ReductionCog F, const GPoly& g);` -- sugar after reducing F by g
- `void myUpdate(ConstRefPPMonoidElem CofactorPP, const GPoly& g) =0;` -- sugar after adding pp*g
- `int myCmp(const SugarDegreeBase& s) const =0;` -- this <=> s ? <0,=0,>0
- `std::ostream& myOutput(std::ostream& out) const =0;`

### Non member functions

- `bool IsInitialized(const SugarDegree& sd);`
- `std::ostream& operator<<(std::ostream& out, const SugarDegree& s);`

  == Maintainer documentation ==

  Work in progress

  Sugar has not been properly tested on modules

  == Bugs, shortcomings and other ideas ==