T3Frame.has_minimal_ranks#
- t3toolbox.frame_variations_format.T3Frame.has_minimal_ranks()#
def has_minimal_ranks(self) -> bool:
True if the frame has minimal ranks.
- Minimal-rank frame means:
left_ranks == right_ranks,up_ranks == down_ranks, andthose ranks (tucker_ranks=up_ranks, tt_ranks=left_ranks) are minimal for a regular Tucker tensor train of this shape (see
TuckerTensorTrain.get_minimal_ranks()).
This is the structural minimal-rank check (cheap integer arithmetic on the ranks); for the numerical one (no stored rank numerically redundant) see
has_numerically_minimal_ranks(). Empirically (docs/numerical_contracts.md) minimal rank is not a correctness precondition for any verified operation –inner/norm-as-HS andmanifold_dimare exact on a non-minimal orthonormal frame, andretractonly loses strict rank preservation (it drops the redundant rank, staying a valid retraction). So this is a non-enforcing checker;T3Framedoes not require minimal ranks at construction.Minimal (non-degenerate) ranks and their connection to matricizations and matrix unfoldings are discussed in Appendix A.2 of Alger et al. (2026), “Tucker Tensor Train Taylor Series” (arXiv:2603.21141).
Examples
>>> import numpy as np >>> import t3toolbox.tucker_tensor_train as t3 >>> import t3toolbox.frame_variations_format as bvf >>> np.random.seed(0) >>> x = t3.TuckerTensorTrain.randn((6, 7, 5), (2, 2, 2), (1, 2, 2, 1)) # minimal ranks >>> frame, _ = bvf.t3_orthogonal_representations(x) >>> print(frame.has_minimal_ranks) True >>> x2 = t3.TuckerTensorTrain.randn((14, 15, 16), (4, 5, 6), (1, 3, 2, 1)) # Tucker rank 4 > 1*3 >>> frame2, _ = bvf.t3_orthogonal_representations(x2) >>> print(frame2.has_minimal_ranks) False
- Return type:
bool