## Basic objects

The basic objects are of three types: weighted (WBO), tagged (TBO) and
simple (SBO). Any basic object is associated to a chart *U*.

A weighted basic object is described by the following data:

**N**- a list of indices to IND that define the ambient algebraic
set
*W* of the basic object (in *U*),
**J**- a list of pairs
`[poly, exp]`, which are the
generators for the generalized ideal of the basic object
(`poly` is a representative of a *k[U]* element, `exp`
is a nonnegative rational number),
**E**- the list of exceptional divisors, given as:
- a list of equations if the configuration variable
**usenctest** or **skewcover** is true,
- a list of indices to the IND member of
*U* otherwise.

**C**- a list of lists of the same length as IND of the chart
*U* of
nonnegative rational numbers (the positive members indicate the
history of J modificators).
**c**- a rational number (the quotient of the order of the proper
transform within the singular locus of the WBO and
*b*, the required
order),
**a**- a list of nonnegative rational numbers with the same length
as E (the weights of the exceptional divisors),
**type**- a integer value, which is 0 in case of a WBO, 1
in case of a TBO, and 2 for an SBO.

A TBO has the same entries as a WBO except the entries: a, c; plus the
entry:

**EM**- the list of exceptional divisors of
*E*_{-}, given as
a sublist of E.

An SBO is described as a WBO except the entries: a, c; plus the entry:

**H**- the exceptional divisors of the TBO of the same dimension,
whose intersection restricts the blowing up center, given in the
same way as E.

Additional data is stored in each basic object to avoid the
computation of the singular locus whenever possible:

**SET**- a list of polynomials from
*k[U]*, the generators of the
ideal of the singular locus of the basic object within *W*,
**SL**- a list of polynomials from
*k[S]*, the Gröbner basis of
SET+H+N+DEP.

These data are used to hold the singular locus of the basic object
with the corresponding Gröbner basis until we need to recompute them.
It helps in situations like testing the emptiness of the singular
locus, what we have to do several times in the algorithm. Whenever an
operation induces a geometric change in the basic object or in the
chart, we need to invalidate the stored data asking for recomputation
at the point where we need them.