TensorNetwork2D # promised 2D tag structure
TensorNetwork2DFlat # promised single tensor per site
TensorNetwork2DVector # promised single physical index per site
TensorNetwork2DOperator # promised two physical indexes per site
then would have e.g.
class PEPS(TensorNetwork2DVector,
TensorNetwork2DFlat,
TensorNetwork2D,
TensorNetwork):
...
class PEPO(TensorNetwork2DOperator,
TensorNetwork2DFlat,
TensorNetwork2D,
TensorNetwork):
...
class MERA2D(TensorNetwork2DVector,
TensorNetwork2D,
TensorNetwork):
A la 1D, mixin style classes like
then would have e.g.