Non-full tensors
joshmaglione opened this issue · 3 comments
Here's an interesting bug that Eamonn O'Brien found. With
t :=
Tensor(GF(5), \[ 3, 3, 18 ], [ GF(5) | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 4, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], TensorCategory(\[ 1, 1, 1 ], {
PowerSet(IntegerRing()) |
{ IntegerRing() | 0 },
{ IntegerRing() | 1, 2 }
}));
Then the fully nondegenerate tensor is
> s := FullyNondegenerateTensor(t);
> s;
Tensor of valence 3, U2 x U1 >-> U0
U2 : Full Vector space of degree 3 over GF(5)
U1 : Full Vector space of degree 3 over GF(5)
U0 : Vector space of degree 18, dimension 3 over GF(5)
Generators:
(0 0 1 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 1 0 4 0 0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0 0 0 1 4 0 0 0 0)
Echelonized basis:
(0 0 1 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 1 0 4 0 0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0 0 0 1 4 0 0 0 0)
And when one asks for the densor subspace, the user gets an error.
> UniversalDensorSubspace(s);
UniversalDensorSubspace(
t: Tensor of valence 3, U2 x U1 >-> U0 U2 : Full Vector space o...
)
In file "/home/josh/Densor/src/Densor.m", line 173, column 32:
>> densor := DerivationClosure(Parent(t), Basis(DerivationAlgebra(t)));
^
Runtime error in 'DerivationClosure': Incompatible operators.
I am not entirely sure how to fix this---not in terms of coding. The problem is coming from the fact that, when considering only dimensions the tensor is 3 x 3 >-> 3, but the ambient vector space in the codomain is 18-dimensional.
This might only be an issue with co-radicals. I cannot test now, but does the same phenomenon occur with radicals? Do we have proper subspaces in the coordinates with nontrivial radicals? Will come back soon.
Formally the derivation closure should be in the parent tensor space of the fully nondegenerate tensor, not its embedding inside a larger tensor. The bug seems to me to be that when passing to the fully nondegenerate tensor it is storing the full 18-dimensional space as the "Parent" -- see for example the print out:
> t;
...
U0 : Vector space of degree 18, dimension 3 over GF(5)
Generators:
What needs to happen is a final reduction, rather than leaving it as a sub we need to replace U0
by
U00 :=VectorSpaceWithBasis(Basis(U0));
Then Parent(U00) is itself rather than the 18 dimensional thing.
That is a great solution if it will work that way.