Alternative Computations with Rosenfeld_Groebner
Important: The diffalg package has been deprecated. Use the superseding package DifferentialAlgebra instead.
A number of environment variables can be set to modify the computations made by Rosenfeld_Groebner.
The input differential polynomials to Rosenfeld_Groebner are treated in sequence. By default they are treated by increasing rank. Setting _Env_diffalg_gen_order := 'decreasingly' might change the computation time as well as the characteristic decomposition in the output.
To return to the default behavior, use _Env_diffalg_gen_order := 'increasingly'.
Rosenfeld_Groebner proceeds in two fundamental steps. It first computes a decomposition into regular differential ideals. The second step consists of computing a decomposition into characterizable differential ideals of these regular differential ideals. The default output is therefore a characteristic decomposition of the radical differential ideal generated by the input differential polynomials.
Though it is rarely the bottleneck of the algorithm, you might want to compute only the decomposition into regular differential ideals. This can be achieved by setting _Env_diffalg_char := false. The default is true.
Regular differential ideals are represented in the same way as characterizable differential ideals. They are tables and appear as regular. The regular differential systems of equations and inequations defining them can be accessed by using the commands equations and inequations. Unlike characterizable differential ideals, the inequations can contain differential polynomials that are unrelated to the initials and separants of the equations.
This option allows to choose between two different methods to compute a decomposition into characterizable differential ideals from the regular differential ideals.
By setting _Env_diffalg_charpres_method:='groebner', the final decomposition is processed using Groebner basis computations. By setting _Env_diffalg_charpres_method:='regchar', the final decomposition is processed using algebraic triangular technics. It might happen that one method succeeds whereas the other does not (see example below).
The default is _Env_diffalg_charpres_method:='groebner'.
This option works together with the option _Env_diffalg_charpres_method. If you use _Env_diffalg_charpres_method:='regchar', you can choose to compute normalized or non-normalized characterizable differential ideals. A normalized characterizable differential ideal satisfies the property : the initials of its equations are free of leaders. A non-normalized characterizable differential ideal does not satisfy this property. Setting _Env_diffalg_charpres_normalize:=true produces normalized outputs and _Env_diffalg_charpres_normalize:=false produces non-normalized ones.
The size of the output can be smaller by computing non-normalized characterizable differential ideals (see example below).
The default is _Env_diffalg_charpres_normalize:=true.
This environment variable affects the computation if Rosenfeld_Groebner is called with a fourth parameter that is a characteristic decomposition, with respect to another ranking, of the radical ideal to be treated. If this characteristic decomposition consists of a single characterizable differential ideal that you know is prime, setting _Env_diffalg_primestudy := true takes advantage of this knowledge.
If the characterizable differential ideal passes the is_orthonomic test, it is not necessary to set _Env_diffalg_primestudy.
The default is _Env_diffalg_primestudy := false.
Setting _Env_diffalg_split := false eliminates the branching on the initials and separants at each step. The computation seeks what is deduced to be the most general component. This saves computations. Nonetheless, the result might be misleading. The computation is indeed incomplete and does not provide a characteristic decomposition. The result may lead you to infer that there is no common zero to the input differential polynomials when there is one in fact.
_Env_diffalg_uses_DifferentialAlgebra ≔ false
A regular differential system might have no zero. The corresponding components disappear when computing the characteristic decomposition.
R ≔ differential_ring⁡ranking=v,u,p,q,w,r,derivations=y,x:
S ≔ ux−uy⁢vx,x−q,ux−uy⁢vx−p,ux2−w,uy2+w
_Env_diffalg_char ≔ false:RegularDecomp ≔ Rosenfeld_Groebner⁡S,R
_Env_diffalg_char ≔ true:CharacteristicDecomp ≔ Rosenfeld_Groebner⁡S,R
Some regular components can split into several characterizable components.
R ≔ differential_ring⁡ranking=y,x,p,derivations=t:
S ≔ p2−1,x2−p,x+1⁢y+x−1,1+x2+2⁢x⁢y2−1+x2−2⁢x
The degree in the leaders can decrease.
R ≔ differential_ring⁡ranking=y,x,derivations=t:
S ≔ yt2+yt⁢y−x⁢yt+t⁢x⁢yt,y−x+xt;H ≔ xt,t,t−xt
_Env_diffalg_char ≔ false:RegularDecomp ≔ Rosenfeld_Groebner⁡S,H,R
_Env_diffalg_char ≔ true:CharacteristicDecomp ≔ Rosenfeld_Groebner⁡S,H,R
_Env_diffalg_charpres_method ≔ 'regchar'
R ≔ differential_ring⁡derivations=x,ranking=u1,u2,u3,u4,u5
p1 ≔ u2⁢u3+u4+u2⁢u12+u2⁢u3+3⁢u1+1
p2 ≔ 1+u4+u5⁢u32+u3⁢u52+u4+2+u5+2
The previous example does not succeed using _Env_diffalg_charpres_method := 'groebner'.
R ≔ differential_ring⁡ranking=u,v,derivations=x,y
sys ≔ ux,x⁢vy+v+1+uy,v⁢vy5−2⁢v
_Env_diffalg_charpres_normalize ≔ true
_Env_diffalg_charpres_normalize ≔ false
R0 ≔ differential_ring⁡ranking=y,x,p,derivations=t:
S ≔ xt2+y+p,x⁢yt+xt+1;H ≔ xt,x
C0 ≔ Rosenfeld_Groebner⁡S,H,R0
This characteristic set is irreducible (the lowest ranked differential polynomial is irreducible and the others have degree one in their leaders). Therefore, the characterizable differential ideal it defines is prime. Thus, the radical differential ideal represented by S:H∞ is prime. Whatever the ranking, there is a characteristic decomposition of S:H∞ that contains only one component. Unfortunately a straightforward computation induces some redundant components. They can be eliminated by introducing C0 as a fourth argument to Rosenfeld_Groebner. Setting _Env_diffalg_primestudy:=true can be a good idea to avoid some computations.
R ≔ differential_ring⁡ranking=x,y,p,derivations=t:
_Env_diffalg_prime_study ≔ true:C2 ≔ Rosenfeld_Groebner⁡S,H,R,C01
By setting _Env_diffalg_split:= false, one expects to find the most general component. This works in the following example.
R ≔ differential_ring⁡ranking=λ,x,y,derivations=t:
Pendulum ≔ yt,t+λ⁢y+9,xt,t+λ⁢x,x2+y2−1
_Env_diffalg_split ≔ false:Cg ≔ Rosenfeld_Groebner⁡Pendulum,R;rewrite_rules⁡Cg
_Env_diffalg_split ≔ true:C ≔ Rosenfeld_Groebner⁡Pendulum,R;rewrite_rules⁡C
Nonetheless, setting _Env_diffalg_split to false can lead to misleading results. It might return no component while the input differential polynomials may have a common zero.
S ≔ xt+1⁢yt2+xt−1,xt2−1
_Env_diffalg_split ≔ false:Rosenfeld_Groebner⁡S,R
_Env_diffalg_split ≔ true:Rosenfeld_Groebner⁡S,R;rewrite_rules⁡
Download Help Document