Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Define canonize-form "semantics" and add verifiers for Chain ansatz #166

Closed
mofeing opened this issue Feb 21, 2024 · 1 comment · Fixed by #223
Closed

Define canonize-form "semantics" and add verifiers for Chain ansatz #166

mofeing opened this issue Feb 21, 2024 · 1 comment · Fixed by #223
Assignees
Labels
question Further information is requested
Milestone

Comments

@mofeing
Copy link
Member

mofeing commented Feb 21, 2024

I propose that whenever there is a virtual hyperindex connected to a vector, then we can assume that the TN is in some canonical-form. This condition eases implementation of many methods that require canonical-form or that work with it.

Whether that canonical-form is correctly formatted should be queried by some verifiers, that numerically check it out. Users should have no direct access to modify this hyperindices within the public API to avoid problems.

This issue addresses that we should (1) discuss if this is the correct way to go and (2) document it.

@mofeing mofeing added the question Further information is requested label Feb 21, 2024
@jofrevalles
Copy link
Member

jofrevalles commented Feb 22, 2024

I propose that whenever there is a virtual hyperindex connected to a vector, then we can assume that the TN is in some canonical-form. This condition eases implementation of many methods that require canonical-form or that work with it.

I think this could be restrictive. There are some situations where we have a Chain without any vector connected to it (no Schmidt values there) and the tensors are all in left-canonical or right-canonical form, and we should account for this case too.

Also, in some cases (like in many quantum-chemistry algorithms) it is important to have the MPS in a certain canonical form but also have all the singular values stored in some way. This eases the computation since the singular values are used to compute certain quantities, but the network can be kept untouched.

In TeNPy, I recall that they have some arguments in the tensors that store the canonical form of them. Also, instead of accessing to tensors with tensors(chain, site), they have the method get_A(chain, site) (get_B(chain, site)) to get the tensor in the left(right)-canonical form directly.

@mofeing mofeing transferred this issue from bsc-quantic/Qrochet.jl Jul 7, 2024
@mofeing mofeing added this to the 0.8 milestone Aug 14, 2024
@mofeing mofeing linked a pull request Nov 4, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants