[back] [prev] [next] [index] [root]

 


OrderUnitsAreFund

Tests whether the current unit system of the given order is known to be fundamental or not.

Syntax:

b := OrderUnitsAreFund(o);
b := OrderUnitsAreFund(o,c);

boolean
  b, c  
order
  o  

See also:  OrderUnitsFund

Description:

The order o must be an absolute order. The OrderUnitsAreFund function can be used to check whether the current unit system of the order o is known to be fundamental. Additionally, the OrderUnitsAreFund function makes it possible to set an internal flag in the order o which indicates that the current unit system is known to be fundamental. This can be achieved by invoking the OrderUnitsAreFund function with second optional argument c.


Example:

In a CM field it is quite easy to compute fundamental units.

kash> O := OrderMaximal (Order (x^3 + x^2 - 16*x - 8));;
kash> units := OrderUnitsFund (O);
[ [1, 2, -1], [1, 2, 1] ]
kash> Ox := PolyAlg (O);;
kash> f := Poly (Ox, [1,1,1]);
x^2 + x + 1
kash> O2 := OrderMaximal (OrderAbs (Order (f)));
   F[1]
    |
   F[2]
  /
 /
Q
F  [ 1]     Given by transformation matrix
F  [ 2]     x^6 + 5*x^5 - 20*x^4 - 95*x^3 + 136*x^2 + 465*x + 475
Discriminant: -502020288 



Example:

The fundamental units of O are moved to O|2, the index of the lifted group in U(O|2) is shown not to be divisible by 2.

kash> Apply (units, u -> EltMove (u, O2));
kash> for u in units do OrderUnitsMerge (O2, u); od;
kash> OrderReg (O2);
28.915447106812858929100272734448621763738691622816
kash> OrderUnitsPFund (O2, 2);
[ [6, -1, -1, 1, 1, -1], [-8, 1, 1, -1, -1, 1] ]
kash> OrderReg (O2);
28.915447106812858929100272734448621763738691622816
kash> OrderUnitsAreFund (O2);
false
kash> # Mark the units as fundamental
kash> OrderUnitsAreFund (O2,true);
> true


<- back[back] [prev] [next] [index] [root]