3. Lifting fiber
This package provides functions for manipulating lifting
libers. Lifting fibers encode equidimensional algebraic varieties.
Before all, a
BlackboxPolynomialAlgebra
domain must have been built this way:
E,x[1],...,x[n]:= BlackboxPolynomialAlgebra
(F,n);
where F is either the field of the rational numbers or
a prime field. Note that it may work with other fields as soon as
the characteristic is big enough and a factorization
function exists in F[T].
A fiber encoding an r-equidimensional algebraic
variety V is the following record:
ResolutionField
, a field K over which the resolution
is defined.
There must exist a coercion from F to K.
LiftingSystem
, a lifting system F for V, it
is a sequence of blackbox polynomials.
PrimitiveElement
, a linear form u in the
x[i]'s over K, it is a multivariate polynomial
in variables.
MinimalPolynomial
, a sequence q of monic
univariate polynomials in K[T], of size s.
Denominator
, a sequence p of univariate
polynomials in K[T] of size s.
Parametrization
, a sequence w of size s of
sequences of elements of K[T] of size n-r.
MagicPoint
, a sequence P of elements in K
of size r.
ChangeOfVariables
, a record <LinearPart,AffinePart>
,
LinearPart
is an invertible square matrix M of size and
AffinePart
is a vector b of size n.
Booth have entries in K.
IsMultiple
, boolean flag telling if V is
multiple as a solution of F=0.
GenericTrace
, generic trace of the deflation process.
ParentBbp
points to E
.
Let y be the new variables defined by x=M.y+b,
the following properties hold:
- V is a subvariety of the set of roots of F=0.
- The variables y are in projective Noether position
with respect to V.
- y[1]=P[1],...,y[r]=P[r] defines a finite fiber
V' of V.
- The primitive element u separates the points of this
fiber V'.
- The elements of q are monic and squarefree.
- The fiber V' is the union of the set of points described
by the parametrizations:
q[l](T)=0, p[l](T)y[r+1]=v[l](T), ..., p[l](T)y[n]=v[n](T), for l in [1,...,s].
We say the fiber is isolated if V is an isolated subvariety
in the set of roots of the system F=0.
We say that the magic point is a lifting point if it satisfies the smoothess
hypothesis of the fast deflation algorithm.
The parametrization of is in the Kronecker presentation
if p[l]=q'[l] for all l and is in the Shape-lemma if
p[l]=1 for all l.
3.1 Creation of lifting fibers
- intrinsic: LiftingFiber () ->
Cat
- It returns the record format used to store lifting fibers.
- intrinsic: WholeSpaceLF (E, K: GenericLinearChangeOfVariables:=
true
) -> .
- E, a domain created by
BlackboxPolynomialAlgebra
.
- K, a field.
It returns a lifting fiber of the ambient space with
resolution field K.
Parameter:
If GenericLinearChangeOfVariables is set then
a generic affine change of the coordinates is performed.
3.2 Getting properties
lf denotes a lifting fiber and llf a sequence of lifting fibers.
- intrinsic: CodimensionLF (lf::
Rec
) -> RngIntElt
- It returns the codimension of the variety encoded by lf.
- intrinsic: CodimensionLF (llf::
[]
) -> RngIntElt
- It returns the minimum of the codimensions of the elements of llf.
Error condition:
llf must not be empty.
- intrinsic: DegreeLF (lf::
Rec
) -> RngIntElt
- It returns the degree of the variety represented by lf.
- intrinsic: DegreeLF (llf::
[]
) -> RngIntElt
- It returns the sum of the degrees of the element of llf.
- intrinsic: DimensionLF (lf) ->
RngIntElt
- See
RankLF
.
- intrinsic: HasKroneckerParametrizationLF (lf::
Rec
) -> BoolElt
- It returns true if lf has a Kronecker parametrization.
- intrinsic: HasKroneckerParametrizationLF (llf::
[]
) -> BoolElt
- It returns true if all the elements of llf have
a Kronecker parametrization.
- intrinsic: HasShapeLemmaParametrizationLF (lf::
Rec
) -> BoolElt
- It returns true if lf has a shape lemma parametrization.
- intrinsic: HasShapeLemmaParametrizationLF (llf::
[]
) -> BoolElt
- It returns true if all the elements of lf have
a shape lemma parametrization.
- intrinsic: IsEmptyLF (lf::
Rec
) -> BoolElt
- It returns a boolean telling whether the variety represented by lf is empty or not.
- intrinsic: IsEmptyLF (llf::
[]
) -> BoolElt
- It returns a boolean telling whether all the elements of llf
represent the empty variety or not.
- intrinsic: IsMultipleLF (lf::
Rec
) -> BoolElt
- It returns a boolean telling whether lf
is a multiple component or not.
- intrinsic: IsWholeSpaceLF (lf::
Rec
) -> BoolElt
- It returns whether lf represents the ambient space or not.
- intrinsic: IsWholeSpaceLF (llf::
[]
) -> BoolElt
- It returns whether at least one of the elements of llf
represents the ambient space or not.
- intrinsic: NumberOfVariablesLF (lf::
Rec
) -> RngIntElt
- It returns the dimension of the ambient space in which lf lives.
- intrinsic: NumberOfFactorsLF (lf::
Rec
) -> RngIntElt
- It returns the number of factors lf, that is
the cardinal of
lf`MinimalPolynomial
.
- intrinsic: ParentBbpLF (lf::
Rec
) -> Cat
- It returns the Multivariate Polynomial Algebra associated to
the blackbox polynomial domain of the lifting system of lf.
- intrinsic: RankLF (lf::
Rec
) -> RngIntElt
- It returns the dimension of the variety encoded by lf.
- intrinsic: RankLF (llf::
[]
) -> RngIntElt
- It returns the maximum of the dimensions of the elements of llf.
Error condition:
llf must not be empty.
3.3 Basic operations
lf denotes a lifting fiber and llf a sequence
of lifting fibers.
- intrinsic: ChangeResolutionFieldLF (~lf::
Rec
, K)
- lf, a
LiftingFiber
.
- K, a field.
If there exists a coercion from lf`ResolutionField
to K,
then it modifies lf to be a resolution over K.
Error condition:
There must exist a coercion from lf`ResolutionField
to K.
- intrinsic: ChangeResolutionFieldLF (~llf::
[]
, K)
- It iterates
ChangeResolutionFieldLF
over llf.
- intrinsic: ChangeResolutionFieldLF (~lf::
Rec
, K, f)
- lf, a
LiftingFiber
.
- K, a field.
- f, a homomorphism from lf`ResolutionField
to K.
Applies f on lf`ResolutionField
to coerce it
to K via f, so that in return lf is a resolution over
K.
- intrinsic: ChangeResolutionFieldLF (~llf::
[]
, K, f)
- It iterates
ChangeResolutionFieldLF
over llf.
- intrinsic: MakeKroneckerParametrizationLF (~lf::
Rec
)
- lf is changed to a Kronecker parametrization.
- intrinsic: MakeKroneckerParametrizationLF (~llf::
[]
)
- It iterates
MakeKroneckerParametrizationLF
over each element
of llf.
- intrinsic: MakeMonicLF (~lf::
Rec
)
- It makes
lf`MinimalPolynomial
monic.
- intrinsic: MakeMonicLF (~llf::
[]
)
- It iterates
MakeMonicLF
over each element of llf.
- intrinsic: MakeShapeLemmaParametrizationLF (~lf::
Rec
)
- It changes the parametrization of lf into a Shape Lemma form.
Error condition:
If lf`Denominator
is not invertible modulo lf`MinimalPolynomial
.
then lf contains a string in return.
- intrinsic: MakeShapeLemmaParametrizationLF (~llf::
[]
)
- It iterates
MakeShapeLemmaParametrizationLF
over each element
of llf.
3.4 Changes of fibers
- intrinsic: ChangeAlgebraicVariablesLF (~lf::
Rec
, N, c)
- lf, a
LiftingFiber
of dimension r in a n-dimensional space.
- N, a square matrix of size n-r with rational numbers
entries.
- c, a n-r-vector with rational numbers entries.
Let M and b be lf`ChangeOfVariables
, such that
x=My+b. The procedure changes the coordinates of
lf in the following way: M:=M.(Idr|N) and
b:=M.(0|c) + b. This change of
algebraic variables is applied in consequence to the
parametrization and the primitive element so that lf remains
consistent.
Error condition:
The procedure raises an error if N is not invertible.
- intrinsic: ChangeAlgebraicVariablesLF (~llf::
[]
, N, c)
- It applies
ChangeAlgebraicVariablesLF
to each element of llf.
- intrinsic: ChangeBackAlgebraicVariablesLF (~lf::
Rec
)
-
In return lf has the identity for the part of the
change of variables corresponding to the algebraic variables.
- intrinsic: ChangeBackAlgebraicVariablesLF (~llf::
[]
)
- It applies
ChangeBackAlgebraicVariablesLF
to each
element of llf.
- intrinsic: ChangeBackFreeVariablesLF (~lf::
Rec
)
-
In return lf has the identity in the part of its
change of variables corresponding to the free variables.
- intrinsic: ChangeBackFreeVariablesLF (~llf::
[]
)
- It iterates
ChangeBackFreeVariablesLF
on each element of llf.
- intrinsic: ChangePrimitiveElementLF (~lf::
Rec
, u)
- lf, a
LiftingFiber
of dimension r in a n-dimensional space.
- u, a linear form given as a multivariate polynomial.
It Changes lf`PrimitiveElement
to u,
if it is actually a primitive element.
Error condition:
The procedure returns "Bad primitive element"
in lf if u is not a primitive element.
- intrinsic: ChangePrimitiveElementLF (~llf::
[]
, u)
- It applies
ChangePrimitiveElementLF
to each element of llf.
- intrinsic: TranslateKthFreeVariableToZeroLF (~lf::
Rec
, k)
-
Let y[k] be the kth free variable of lf,
the procedure modifies
lf`ChangeOfVariables
replacing y[k] by
y[k]+lf`MagicPoint
[k].
Then lf`MagicPoint[k]
is set to 0.
- intrinsic: TranslateKthFreeVariableToZeroLF (~llf::
[]
, k)
- It iterates
TranslateKthFreeVariableToZeroLF
on each
element of llf.
- intrinsic: TranslateAllFreeVariablesToZeroLF (~lf::
Rec
)
- It applies
TranslateKthFreeVariableToZeroLF
to all the
free variables of lf.
- intrinsic: TranslateAllFreeVariablesToZeroLF (~llf::
[]
)
- It applies
TranslateAllFreeVariablesToZeroLF
to each element
of llf.
- intrinsic: TranslateLastFreeVariableToZeroLF (~lf::
Rec
)
- It applies
TranslateKthFreeVariableToZeroLF
to all the
last free variables of lf.
- intrinsic: TranslateLastFreeVariableToZeroLF (~llf::
[]
)
- It applies
TranslateLastFreeVariableToZeroLF
to each
element of llf.
3.5 Evaluation
lf denotes a lifting fiber and llf a sequence of lifting fibers.
- intrinsic: EvaluateLF (lf::
Rec
, f::Rec
, x) -> .
- intrinsic: EvaluateLF (lf::
Rec
, f::[Rec]
, x::[]
) -> .
- lf, a
LiftingFiber
.
- f, a sequence of black box polynomials.
- x, a sequence of values.
It returns the sequence of the values of f
evaluated on the point x.
Error conditions:
#x
must be equal to NumberOfVariablesLF(lf)
.
BaseRing(ParentBbpLF(lf))
must be coercible to Universe(x)
.
- intrinsic: VerifyLF (lf::
Rec
: Strategy:="Probabilistic"
) -> BoolElt
- It returns
true
iff the parametrization of lf
satisfies its lifting system modulo its MinimalPolynomial
.
Parameter:
Strategy, string:
""
, the verification is perfomed over
lf`ResolutionField
.
"Probabilistic"
, the verification is probabilistic.
Computations are done modulo a random prime number if the
resolution field is the field of the rational numbers.
If the resolution field is a rational function field, the variables
are specialized at random.
- intrinsic: VerifyLF (llf::
[]
: Strategy:="Probabilistic"
) -> BoolElt
- It tells whether all the elements of llf satisfies their lifting systems.
3.6 Splittings
- intrinsic: SplitLF (lf::
Rec
, f::[Rec]
) -> Rec,Rec
- intrinsic: SplitLF (lf::
Rec
, f::Rec
) -> Rec,Rec
- lf, a lifting fiber.
- f, an element of
BlackboxPolynomialAlgebra
.
It returns two fibers lfz, lfnz. The first one represents
the points of lf satisfying f=0
and the second one
the other points.
- intrinsic: CleanLF (~lf::
Rec
, ineqs::Rec
)
- Removes the points of lf satisfying
ineqs=0
.
- intrinsic: CleanLF (~lf::
Rec
, ineqs::[]
)
- Removes the points of lf satisfying
ineqs=0
.
- intrinsic: CleanLF (~llf::
[]
, ineqs)
- It iterates
CleanLF
over each element of llf.
- intrinsic: FactorizationLF (~lf::
Rec
)
- lf is factorized.
Error condition:
The parametrization must be shape lemma.
- intrinsic: CombineLF (~lf::
Rec
: Parametrization:="Unknown"
)
- It combines the factors of lf.
The parameter can be
"Unknown"
(default),
"ShapeLemma"
or "Kronecker"
according to the properties
known about lf.
- intrinsic: MergeLF (llf::
[]
) -> Rec
- It merges the elements of llf into one.
Error conditions:
- The elements of llf must share the same
ResolutionField
, LiftingSystem,
PrimitiveElement, MagicPoint, ChangeOfVariables,
GenericTrace and ParentBbp.
- llf must not be empty.
3.7 Printing
- intrinsic: PrintLF (lf::
Rec
)
- It prints lf on stdout.
- intrinsic: PrintLF (llf::
[]
)
- Prints llf on stdout.
This document was generated
by Grégoire Lecerf on June, 25 2002
using texi2html