Skip to content

virtualspace conventions can be confusingΒ #103

@lkdvos

Description

@lkdvos

Currently, the use of virtualspace across the package can be a bit confusing, and there are contradicting choices that have been made which further add to the confusion.

The current state of affairs:

  • Creating FiniteMPS objects, the constructor can take in a vector of virtual spaces which is one shorter than the length of the physical spaces, with optional kwargs for a left and right starting space. Thus, the ith element of the input vector corresponds to the virtual space to the right of site i.
  • Creating InfiniteMPS objects, there is no trivial left and right starting space, thus the vector of virtual spaces is the same length as the vector fo physical spaces. In this case, the ith element of the vector corresponds to the virtual space to the left of site i.
  • Querying the virtual space of an MPS object, we have left_virtualspace(state, i) and right_virtualspace(state, i), which return the left (right) virtual space of the bond tensor to the right of site i.
  • entanglement_spectrum yields the singular values of the bond matrix to the right of the physical site.

Clearly, there are some inconsistencies, as well as left_virtualspace and right_virtualspace being a bit misleading.

One solution might be to:

  1. Update the constructor for the InfiniteMPS to reflect that we most often refer to virtual spaces as being to the right of a physical site.
  2. Introduce a new (exported) method virtualspace, which asserts that left- and right- virtualspace to the right of a site, for given state, are equal and then returns this. This should only fail if the user updated a (finite?) MPS manually with a changed bond dimension, in which case the (unexported) internal methods left_virtualspace and right_virtualspace can be used as a more expert-user-case.
  3. Reflect everything clearly in the documentation and check if there are any more cases where this is relevant. In all cases, we adopt the convention that virtualspaces are defined to the right of a site index.

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationquestionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions