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, and

  • those 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 and manifold_dim are exact on a non-minimal orthonormal frame, and retract only loses strict rank preservation (it drops the redundant rank, staying a valid retraction). So this is a non-enforcing checker; T3Frame does 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