-
Notifications
You must be signed in to change notification settings - Fork 45
Compatibility with multifusion categories #297
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
base: main
Are you sure you want to change the base?
Conversation
…iteMPOHamiltonian`
… boris-MTK-compat
…nto boris-MTK-compat
…es for consistency" This reverts commit 2114cdc.
|
I may have added some confusing terminology with the recent commits, so let me clarify as much as possible. First of all, I defined a Connected to the last remark, many functions construct an MPS given an MPO based on the latter's virtual spaces. Since the MPOs I've considered up till now don't have different colorings on its virtual spaces, there is currently no difference between the left unit and right unit of an MPO. Thus, there's no difference between the I've also replaced the remaining |
…o boris-MTK-compat
|
|
||
| V_left = left_virtualspace(H[1]) | ||
| V_left′ = ⊞(V_left, oneunit(V_left), oneunit(V_left)) | ||
| V_left′ = ⊞(V_left, rightunitspace(V_left), rightunitspace(V_left)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could this also be leftunitspace?
This looks a bit funny to have V_left call rightunitspace.
To be completely fair, I'm actually surprised it would have to be left or right to begin with, since I always understood that as something you would multiply on the left or right respectively, and not something you can direct sum with, so I would guess that in this case you would have to have \boxtimes is only possible wheneveer leftunitspace = rightunitspace which is just unitspace?
I might be completely wrong here though, this is a bit more intuition based than actual strong thinking based
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Hamiltonian itself is diagonal, meaning its virtual spaces are graded the same way as the physical space. In that sense, taking the left or right unit space is the same. I haven't thought too much about direct summing between different gradings and whether that makes sense.
Either way, unitspace is not the way to go, because we've designed that now to return all the units of a given sector.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah right, I forgot about that! Would this mean that we could take the left unit space of the physical space instead? That at least sounds spatially correct in my head 😂
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can do that, and will do so in other places where MPOHamiltonian is involved. I'd like to add an assertion to make sure this is fine. However, for MPOs I'd like to keep the freedom of potential off-diagonal virtual spaces, even though I haven't tested those yet.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't really know what diagonal and off-diagonal means in the context of hamiltonians to be honest, I know you guys keep saying this but I never really got what this is about 😉
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
anyonchainCMD.pdf
I'd like to preface that what I'm going to say is untested in MPSKit, so it might not even work, but I'll just sketch what should in general be possible.
I attached an image of how a multifusion MPS looks like. The physical spaces are graded by some fusion category
Again, this is untested, and is also the reason why a lot of parts in the code involving MPOs still just have a bunch of unitspaces instead of left/rightunitspaces.
|
Your PR no longer requires formatting changes. Thank you for your contribution! |
lkdvos
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this looks quite good, almost ready to go.
Apologies if I already asked this before, I'm trying to keep up but I sometimes forget:
I'm a bit confused about the usage of unitspace in many places now. If I understood this correctly, this should give you a space with all the units, and I'm surprised this shows up here at all.
Do we not expect that we should mostly be able to correctly find out which unit we need in the MPS algorithms?
Otherwise I am happy to merge this.
Co-authored-by: Lukas Devos <ldevos98@gmail.com>
|
I answered this above, but I'll say it again that yes, in principle you should always know which unit is the relevant one for some algorithm. Looking into where this occurs, I realise I've been lazy in certain parts. I thought I tested everything concerning Looking into other places where |
src/states/finitemps.jl
Outdated
| # TODO: make planar? | ||
| function FiniteMPS(ψ::AbstractTensor) | ||
| U = ones(scalartype(ψ), oneunit(spacetype(ψ))) | ||
| U = ones(scalartype(ψ), unitspace(spacetype(ψ))) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should also just be replaced with insertleftunit and insertrightunit calls
src/states/finitemps.jl
Outdated
| space(T, numind(T)) == unitspace(spacetype(T))' || | ||
| throw(ArgumentError("utility leg not trivial")) | ||
| U = ones(scalartype(ψ), oneunit(spacetype(ψ))) | ||
| U = ones(scalartype(ψ), unitspace(spacetype(ψ))) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comment here about removeunit
This PR provides the changes required to be able to consider the multifusion categories of (Multi)TensorKit.
All changes boil down to either
unitspaceof aBimoduleSector, orBimoduleSectorGradedSpaces,and finding ways around to this.
A potential thing to add is tests withBimoduleSectorMPS/MPOs or so? For this, I would need to first complete benchmarking MultiTensorKit, hence the draft PR. I might also need to format.