K.<a> = GF(3^3,'a')
bases_normales = []
for t in K:
if t == 0:
continue
S = [t, t^3, t^9]
# Matriz de trazas para chequear independencia
M = Matrix(GF(3), [[(x*y).trace() for y in S] for x in S])
if M.det() != 0:
# verificamos si ya existe esta base (sin importar el orden)
if not any(set(S) == set(b) for b in bases_normales):
bases_normales.append(S)
# Mostramos todas las bases normales
for i, base in enumerate(bases_normales, 1):
print(f"Base normal {i}: {base}")
print("Cantidad de bases normales distintas:", len(bases_normales))