Low Cohen Macauley Type#

NonGorensteinPrimes(S): AlgEtQOrd -> SeqEnum, SeqEnum#

Given an order \(S\) it returns two sequences: the first containis the primes at which \(S\) is locally not Gorenstein; the second contains the Cohen Macaulay types of \(S\) at these primes, that is, the dimension of \(S^t/PS^t\) over \(S/P\), where \(S^t\) is the TraceDualIdeal of \(S\).

CohenMacaulayTypeAtPrime(S, P): AlgEtQOrd, AlgEtQIdl -> RngIntElt#

Given an order \(S\) and a prime ideal \(P\), it returns its Cohen-Macaulay Type at \(P\). This integer equals the dimension of \(S^t/P*S^t\) where \(S^t\) is the trace dual of \(S\).

CohenMacaulayType(S): AlgEtQOrd -> RngIntElt#

Given an order \(S\) returns its Cohen-Macaulay Type. This integer equals the max dimension of \(S^t/P*S^t\) where \(S^t\) is the trace dual of \(S\) and \(P\) runs over all (non-Gorenstein) primes of \(S\).

Example: Max Cohen Macaulay Type (ex-442922)#
> // Given an \'etale algebra A of dimension n over Q, the maximum Cohen-Macaulay
> // type that an order can have is n-1.
> // An order with such maximal Cohen-Macaualay type can be found among the
> // overorders of the order Z+p*O_A where p an arbitrary rational prime.
> // We verify this statement in an example.
> _<x> := PolynomialRing(Integers());
> f := x^4+8;
> A := EtaleAlgebra(f);
> O := MaximalOrder(A);
> p := 7;
> E := Order([p*z : z in ZBasis(O)]);
> n := Dimension(A);
> oo := OverOrders(E);
> exists{ S : S in oo | CohenMacaulayType(S) eq n-1 };
true

Run in calculator