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

Implement fixed-point differentiation and gauge-fixing #13

Merged
merged 25 commits into from
Mar 13, 2024

Conversation

pbrehmer
Copy link
Collaborator

This PR will implement proper differentiation of the CTMRG fixed point. In order to do so, I'm refactoring some parts of the CTMRG code and I'm adding a PEPSOptimize algorithm struct that stores all parameters related to PEPS optimization.

Since fixed-point differentiation requires element-wise convergence of the environment tensors, I will also add a simple gauge-fixing function.

@pbrehmer
Copy link
Collaborator Author

Note that this first commit is still quite rough, I just needed somewhere to push all the new/refactored code. Also, many of the new function and struct names might still be off, so feel free to come up with alternative names :-)

The (refactored) heisenberg.jl example is still running and does produce the correct ground-state energy for 1x1 unit cells. I didn't test anything else yet.

In the next few commits, I will add the gauge-fixing routine and then the efficient fixed-point differentiation should work also. (I have already added that in the fpgrad methods.)

For now I have removed the distinction between peps_above and peps_below but this should be easy to reimplement. To that end I would use something like an InfinitePEPSPair struct which stores both the above and below PEPS. This would make sense with regards to generalizing the state on which CTMRG is applied: All generic CTMRG functions would dispatch on the CTMRGEnv environment type and a general state type (i.e. an InfinitePEPS, an InfinitePEPSPair, and 4-legged MPO for 2D stat-mech and so on).

@pbrehmer pbrehmer marked this pull request as draft February 20, 2024 16:32
Copy link
Member

@lkdvos lkdvos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really like most of these changes, and added some minor remarks with my opinions inline.

I think the biggest thing I am not entirely happy with is the top interface, with how PEPSOptimize is defined, but maybe it's okay to first have it this way and refactor later.

src/PEPSKit.jl Outdated Show resolved Hide resolved
src/algorithms/ctmrg.jl Outdated Show resolved Hide resolved
(max(Δnorm, ΔCS, ΔTS) < alg.tol && i > alg.miniter) && break # Converge if maximal Δ falls below tolerance

# Print verbose info
ignore_derivatives() do
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we could handle logging by just making some functions log_iter, log_convergence, log_init, ...:

function log_iter(alg::CTMRG, vars...)
    # logging code
end

This is probably easy to change later, and we can just mark these functions as non_differentiable. It also keeps the function body of the main algorithm cleaner, and dispatching on the algorithm makes sure that it is modular?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, I think the usage of @info is probably quite nice, as this can then be disabled or redirected to a logfile using julia's Logging.jl

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Logging functions and switching to @info seems like a good idea. I will probably get back to that once I got all the other stuff running.

src/algorithms/ctmrg.jl Outdated Show resolved Hide resolved
src/algorithms/ctmrg.jl Outdated Show resolved Hide resolved
src/utility/util.jl Outdated Show resolved Hide resolved
Comment on lines 107 to 125
for r in size(env.corners, 2), c in size(env.corners, 3)
cnext = _next(c, size(peps, 2))
@tensor ρ[-11 -20; -12 -18] :=
env.corners[NORTHWEST, r, c][1; 3] *
env.edges[NORTH, r, c][3 5 8; 13] *
env.edges[NORTH, r, cnext][13 16 22; 23] *
env.corners[NORTHEAST, r, cnext][23; 24] *
env.edges[EAST, r, cnext][24 25 26; 27] *
env.corners[SOUTHEAST, r, cnext][27; 28] *
env.edges[SOUTH, r, cnext][28 17 21; 14] *
env.edges[SOUTH, r, c][14 6 10; 4] *
env.corners[SOUTHWEST, r, c][4; 2] *
env.edges[WEST, r, c][2 7 9; 1] *
peps[r, c][-12; 5 15 6 7] *
conj(peps[r, c][-11; 8 19 10 9]) *
peps[r, cnext][-18; 16 25 17 15] *
conj(peps[r, cnext][-20; 22 26 21 19])
@diffset ρunitcell[r, c] = ρ
end
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can avoid diffset alltogether here, by just using map. (Also small typo, should either be 1:size() or axes)

Suggested change
for r in size(env.corners, 2), c in size(env.corners, 3)
cnext = _next(c, size(peps, 2))
@tensor ρ[-11 -20; -12 -18] :=
env.corners[NORTHWEST, r, c][1; 3] *
env.edges[NORTH, r, c][3 5 8; 13] *
env.edges[NORTH, r, cnext][13 16 22; 23] *
env.corners[NORTHEAST, r, cnext][23; 24] *
env.edges[EAST, r, cnext][24 25 26; 27] *
env.corners[SOUTHEAST, r, cnext][27; 28] *
env.edges[SOUTH, r, cnext][28 17 21; 14] *
env.edges[SOUTH, r, c][14 6 10; 4] *
env.corners[SOUTHWEST, r, c][4; 2] *
env.edges[WEST, r, c][2 7 9; 1] *
peps[r, c][-12; 5 15 6 7] *
conj(peps[r, c][-11; 8 19 10 9]) *
peps[r, cnext][-18; 16 25 17 15] *
conj(peps[r, cnext][-20; 22 26 21 19])
@diffset ρunitcell[r, c] = ρ
end
ρunitcell = map(Iterators.product(axes(env.corners, 2), axes(env.corners, 3))) do (r, c)
cnext = _next(c, size(peps, 2))
@tensor ρ[-11 -20; -12 -18] :=
env.corners[NORTHWEST, r, c][1; 3] *
env.edges[NORTH, r, c][3 5 8; 13] *
env.edges[NORTH, r, cnext][13 16 22; 23] *
env.corners[NORTHEAST, r, cnext][23; 24] *
env.edges[EAST, r, cnext][24 25 26; 27] *
env.corners[SOUTHEAST, r, cnext][27; 28] *
env.edges[SOUTH, r, cnext][28 17 21; 14] *
env.edges[SOUTH, r, c][14 6 10; 4] *
env.corners[SOUTHWEST, r, c][4; 2] *
env.edges[WEST, r, c][2 7 9; 1] *
peps[r, c][-12; 5 15 6 7] *
conj(peps[r, c][-11; 8 19 10 9]) *
peps[r, cnext][-18; 16 25 17 15] *
conj(peps[r, cnext][-20; 22 26 21 19])
return ρ
end

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

might be cleaner to actually map over the tensor arrays and use some form of circshift instead

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I definitely like the map much better. I'll use the map over the axes indices for now and maybe think about mapping over the tensor arrays later.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there's a couple more places where this happens, and the pattern should be generally applicable. In principle, the optimized version would be to do newarray = map!!(fun, oldarray), where map!!(args...) = map!(args...) but the reverse rule just applies map() along with the rrule for that function. That way, if you're just contracting a peps and not optimizing, this avoids some unneccesary allocations. (but let's just keep that in mind for later)

struct LinSolve <: GradMode end

# Algorithm struct containing parameters for PEPS optimization
# TODO: have an interface for general cost functions? (could merge energyfun and reuse_env)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not a huge fan of having the cost function as a field in the algorithm. I usually think of these algorithm structs as glorified named tuples, that can be used to dispatch on and hold the relevant keyword arguments to a function. In that sense, I think the cost function would rather be an argument, instead of a keyword.

I'm not sure if this is possible, but can we have an interface of the following sort:

groundsearch(!)(x_init, H, alg, [envs])

In this case alg could be dispatched on, and this contains the parameters for how to contract, and how to optimize, and H is the operator, which actually fixes the costfunction together with the fact that it is groundsearch.

Additionally, I think I'm actually more a fan of fixedpoint(x_init, H, alg, envs) as this makes more sense both for 3d stat mech and 2+1d quantum

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not a huge fan of having the cost function as a field in the algorithm.

I agree that having the cost function inside the algorithm struct is not a nice design. In general, I should rethink the PEPS optimization design with PEPSOptimize, groundsearch and costfun. One thing I am unsure about is how much user freedom such a PEPS optimization interface should allow.

Additionally, I think I'm actually more a fan of fixedpoint(x_init, H, alg, envs) as this makes more sense both for 3d stat mech and 2+1d quantum

Yes, I like the name. Especially if we have a unified interface for different kinds of optimization (2d quantum, 3d stat mech, 2+1d quantum, ...) I would really prefer this.

...and H is the operator, which actually fixes the costfunction...

This would be neat and multiple ways come to mind on how to realize this:

  1. We could define an abstract Hamiltonian type and then define specific models as subtypes with corresponding cost functions, e.g. costfun(H::SquareLatticeHeisenberg). This would be flexible but it would introduce possibly redundant data types.
  2. Or we could dispatch on the underlying tensor map type directly, e.g. costfun(H::AbstractTensorMap{<:ElementarySpace,2,2}) and fix the cost function to the next-neighbor energy. This is rather unflexible but it might be enough.

I would probably opt for option 1 since one might need to write specific methods for specific models anyway, which would justify giving it a data type. What do you think?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I definitely like option 1, but I would rather go with a generic type that only fixes the geometry of the interactions, in which you could still just put whatever tensor. Something like NearestNeighbour{SquareLattice} sounds like a middle ground between having to dispatch on tensors, which don't have enough information to fully specify what it means, and having to define types for each different hamiltonian. In any case, the abstract Hamiltonian type as a layer inbetween I definitely like.

src/algorithms/ctmrg.jl Outdated Show resolved Hide resolved
src/algorithms/ctmrg.jl Outdated Show resolved Hide resolved
@pbrehmer
Copy link
Collaborator Author

Alright, the gauge fixing and FP differentiation works for the heisenberg.jl example, at least for 1x1 unit cells. The FP differentiation using a linear solver is not yet implemented but that I'll do next (I will switch from IterativeSolvers to KrylovKit). Also I need to check if all of this actually works for larger unit cells.

What I noticed and do not understand yet: When I use the manual iteration mode of computing the gradient (ManualIter), I often times get cotangents sensitive to gauge choice warnings during differentiation. I find it weird that this doesn't happen when computing the same thing explicitly with the geometric sum...

@lkdvos
Copy link
Member

lkdvos commented Feb 22, 2024

Alright, the gauge fixing and FP differentiation works for the heisenberg.jl example, at least for 1x1 unit cells. The FP differentiation using a linear solver is not yet implemented but that I'll do next (I will switch from IterativeSolvers to KrylovKit). Also I need to check if all of this actually works for larger unit cells.

What I noticed and do not understand yet: When I use the manual iteration mode of computing the gradient (ManualIter), I often times get cotangents sensitive to gauge choice warnings during differentiation. I find it weird that this doesn't happen when computing the same thing explicitly with the geometric sum...

I might not be understanding this completely, but I think you only gauge-fix the last iteration, which is the information you use for doing the geometric series, so there is no gauge dependency there. On the other hand, there might actually be a gauge dependency in the intermediate step of a random CTMRG iteration, and possibly there might be some numeric error reasons why this doesn't completely cancel out for the separate steps

@pbrehmer
Copy link
Collaborator Author

pbrehmer commented Feb 23, 2024

I might not be understanding this completely, but I think you only gauge-fix the last iteration, which is the information you use for doing the geometric series, so there is no gauge dependency there. On the other hand, there might actually be a gauge dependency in the intermediate step of a random CTMRG iteration, and possibly there might be some numeric error reasons why this doesn't completely cancel out for the separate steps

Okay, so apparently the choice of initial guess y₀ = CTMRGEnv(peps; Venv=space(env.edges[1])[1]) was the problem. Since this is a completely random environment it might have support on spaces which create this gauge sensitivity?

I now use y₀ = ∂F∂x which seems to get rid of this problem. Additionally, it really speeds up the performance of the LinSolve gradient computation with KrylovKit.linsolve (before it was uselessly slow, now tends to be the fastest and most accurate option I think --- but of course this depends on the set tolerance and so on).

@lkdvos
Copy link
Member

lkdvos commented Feb 23, 2024

I guess the other option is to explicitly tell the rrule that it does not depend on the initial guess, but that might not be super-clean either

@pbrehmer
Copy link
Collaborator Author

When I tested differentiating the fixed-point with unit cells Friday and today, I noticed two problems. First, I needed to figure out the gauge-fixing for general unit cells (I think I got this today, but haven't implemented it yet). And second, when doing the naive AD through CTMRG, somehow the adjoint of _setindex of the @diffset macro runs into problems with ZeroTangent --- I haven't understood this yet. I get the following error:

ERROR: MethodError: Cannot `convert` an object of type ChainRulesCore.ZeroTangent to an object of type TrivialTensorMap{ComplexSpace, 1, 3, Matrix{ComplexF64}}

Closest candidates are:
  convert(::Type{<:AbstractTensorMap}, ::MPSKit.FiniteMPS)
   @ MPSKit ~/.julia/packages/MPSKit/atykv/src/states/finitemps.jl:235
  convert(::Type{TensorMap{S, N₁, N₂, I, A, F₁, F₂}}, ::AbstractTensorMap{S, N₁, N₂}) where {S, N₁, N₂, I, A, F₁, F₂}
   @ TensorKit ~/.julia/packages/TensorKit/gpuAY/src/tensors/tensor.jl:572
  convert(::Type{T}, ::T) where T
   @ Base Base.jl:64

Stacktrace:
  [1] setindex!(A::Matrix{TrivialTensorMap{ComplexSpace, 1, 3, Matrix{ComplexF64}}}, x::ChainRulesCore.ZeroTangent, i1::Int64)
    @ Base ./array.jl:969
  [2] _unsafe_copyto!(dest::Matrix{TrivialTensorMap{ComplexSpace, 1, 3, Matrix{ComplexF64}}}, doffs::Int64, src::Matrix{Any}, soffs::Int64, n::Int64)
    @ Base ./array.jl:250
  [3] unsafe_copyto!
    @ ./array.jl:304 [inlined]
  [4] _copyto_impl!
    @ ./array.jl:327 [inlined]
  [5] copyto!
    @ ./array.jl:314 [inlined]
  [6] copyto!
    @ ./array.jl:339 [inlined]
  [7] copyto_axcheck!(dest::Matrix{TrivialTensorMap{ComplexSpace, 1, 3, Matrix{ComplexF64}}}, src::Matrix{Any})
    @ Base ./abstractarray.jl:1182
  [8] Array
    @ ./array.jl:621 [inlined]
  [9] convert
    @ ./array.jl:613 [inlined]
 [10] _setindex_pullback
    @ ~/repos/PEPSKit.jl/src/utility/util.jl:96 [inlined]
 [11] (::Zygote.ZBack{PEPSKit.var"#_setindex_pullback#4"{Matrix{TrivialTensorMap{ComplexSpace, 1, 3, Matrix{ComplexF64}}}, Tuple{Int64, Int64}}})(dy::Matrix{Union{Nothing, TrivialTensorMap{ComplexSpace, 1, 3, Matrix{ComplexF64}}}})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/chainrules.jl:211
 [12] macro expansion
    @ ~/repos/PEPSKit.jl/src/utility/util.jl:131 [inlined]
 [13] Pullback
    @ ~/repos/PEPSKit.jl/src/algorithms/ctmrg.jl:219 [inlined]
 [14] (::Zygote.Pullback{Tuple{typeof(PEPSKit.left_move), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRG}, Any})(Δ::Tuple{NamedTuple{(:corners, :edges), Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Nothing, Nothing, Nothing})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
 [15] Pullback
    @ ~/repos/PEPSKit.jl/src/algorithms/ctmrg.jl:157 [inlined]
 [16] (::Zygote.Pullback{Tuple{typeof(PEPSKit.ctmrg_iter), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRG}, Any})(Δ::Tuple{NamedTuple{(:corners, :edges), Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Nothing, Nothing, Nothing})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
 [17] Pullback
    @ ~/repos/PEPSKit.jl/src/algorithms/ctmrg.jl:59 [inlined]
 [18] (::Zygote.Pullback{Tuple{typeof(leading_boundary), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRG, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Any})(Δ::Tuple{NamedTuple{(:corners, :edges), Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Nothing, Nothing})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
 [19] Pullback
    @ ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:48 [inlined]
 [20] (::Zygote.Pullback{Tuple{typeof(PEPSKit.costfun!), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}, CTMRG, PEPSOptimize{NaiveAD}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{3, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}, Zygote.Pullback{Tuple{typeof(leading_boundary), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRG, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:energyfun, Zygote.Context{false}, PEPSOptimize{NaiveAD}, typeof(PEPSKit.next_neighbor_energy)}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.Pullback{Tuple{typeof(PEPSKit.next_neighbor_energy), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}}, Tuple{Zygote.var"#2993#back#768"{Zygote.var"#762#766"{Matrix{ComplexF64}}}, Zygote.var"#2993#back#768"{Zygote.var"#762#766"{Matrix{ComplexF64}}}, Zygote.Pullback{Tuple{typeof(expectation_value), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}}, Any}, Zygote.ZBack{Zygote.var"#real_pullback#350"}, Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{ComplexF64, ComplexF64}}}, Zygote.Pullback{Tuple{typeof(rotl90), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Any}, Zygote.Pullback{Tuple{typeof(expectation_value), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}}, Any}, Zygote.Pullback{Tuple{typeof(rotl90), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(Base.Broadcast.materialize), Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcasted), typeof(rotl90), Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcastable), Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}, Tuple{}}, Zygote.var"#4121#back#1362"{Zygote.var"#∇broadcasted#1373"{Tuple{Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Matrix{Tuple{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{typeof(rotl90), TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, Tuple{Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#permute_pullback#49"{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}, Tuple{Tuple{Int64}, NTuple{4, Int64}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2017#back#204"{typeof(identity)}}}}}, Val{2}}}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing}, Tuple{}}, Zygote.var"#combine_styles_pullback#1168"{Tuple{Nothing, Nothing}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{typeof(Base.Broadcast.broadcastable), 1, Tuple{Tuple{}}, Tuple{Val{0}}, Tuple{}}}, Zygote.var"#2017#back#204"{typeof(identity)}}}, Zygote.Pullback{Tuple{Type{InfinitePEPS}, Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:A, Zygote.Context{false}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}}, Zygote.ZBack{PEPSKit.var"#pb#3"{Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}}}}}}}})(Δ::Float64)
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
 [21] (::Zygote.var"#75#76"{Zygote.Pullback{Tuple{typeof(PEPSKit.costfun!), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}, CTMRG, PEPSOptimize{NaiveAD}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{3, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}, Zygote.Pullback{Tuple{typeof(leading_boundary), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRG, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:energyfun, Zygote.Context{false}, PEPSOptimize{NaiveAD}, typeof(PEPSKit.next_neighbor_energy)}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.Pullback{Tuple{typeof(PEPSKit.next_neighbor_energy), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}}, Tuple{Zygote.var"#2993#back#768"{Zygote.var"#762#766"{Matrix{ComplexF64}}}, Zygote.var"#2993#back#768"{Zygote.var"#762#766"{Matrix{ComplexF64}}}, Zygote.Pullback{Tuple{typeof(expectation_value), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}}, Any}, Zygote.ZBack{Zygote.var"#real_pullback#350"}, Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{ComplexF64, ComplexF64}}}, Zygote.Pullback{Tuple{typeof(rotl90), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Any}, Zygote.Pullback{Tuple{typeof(expectation_value), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}}, Any}, Zygote.Pullback{Tuple{typeof(rotl90), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(Base.Broadcast.materialize), Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcasted), typeof(rotl90), Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcastable), Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}, Tuple{}}, Zygote.var"#4121#back#1362"{Zygote.var"#∇broadcasted#1373"{Tuple{Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Matrix{Tuple{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{typeof(rotl90), TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, Tuple{Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#permute_pullback#49"{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}, Tuple{Tuple{Int64}, NTuple{4, Int64}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2017#back#204"{typeof(identity)}}}}}, Val{2}}}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing}, Tuple{}}, Zygote.var"#combine_styles_pullback#1168"{Tuple{Nothing, Nothing}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{typeof(Base.Broadcast.broadcastable), 1, Tuple{Tuple{}}, Tuple{Val{0}}, Tuple{}}}, Zygote.var"#2017#back#204"{typeof(identity)}}}, Zygote.Pullback{Tuple{Type{InfinitePEPS}, Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:A, Zygote.Context{false}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}}, Zygote.ZBack{PEPSKit.var"#pb#3"{Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}}}}}}}}})(Δ::Float64)
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface.jl:91
 [22] gradient(::Function, ::InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, ::Vararg{Any})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface.jl:148
 [23] ctmrg_gradient(x::Tuple{InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, H::TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}, ctmalg::CTMRG, optalg::PEPSOptimize{NaiveAD})
    @ PEPSKit ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:40
 [24] #103
    @ ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:26 [inlined]
 [25] optimize(fg::PEPSKit.var"#103#104"{TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}, CTMRG, PEPSOptimize{NaiveAD}}, x::Tuple{InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, alg::LBFGS{Float64, HagerZhangLineSearch{Rational{Int64}}}; precondition::typeof(OptimKit._precondition), finalize!::typeof(OptimKit._finalize!), retract::Function, inner::typeof(PEPSKit.my_inner), transport!::typeof(OptimKit._transport!), scale!::typeof(OptimKit._scale!), add!::typeof(OptimKit._add!), isometrictransport::Bool)
    @ OptimKit ~/.julia/packages/OptimKit/xpmbV/src/lbfgs.jl:21
 [26] groundsearch(H::TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}, ctmalg::CTMRG, optalg::PEPSOptimize{NaiveAD}, ψinit::InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, envinit::CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}})
    @ PEPSKit ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:25
 [27] top-level scope
    @ ~/repos/PEPSKit.jl/examples/heisenberg.jl:45

Any chance you know what is going on?

@lkdvos
Copy link
Member

lkdvos commented Feb 26, 2024

I think I do, the problem is that you have an array of tensors, and when taking the derivative of a single one, zygote will automatically make the other ones ZeroTangent. However, when creating the array that contains the tangents, this will have eltype a TensorMap, and the implicit conversion when calling setindex on such an array is throwing an error.

I hadn't realised this is something that can happen, and so either the array should be promoted to also being able to capture ZeroTangent, or we should avoid the code that generates this case, because I don't think we can create a sensible convertor, given that the type does not specify the spaces...

…ript, replace global phase fix by normalizing with sign
@pbrehmer
Copy link
Collaborator Author

pbrehmer commented Feb 27, 2024

Apparently, you can avoid the setindex error by not using @diffset for assigning the projectors to an array at that point. Instead, I used Zygote.Buffer so the code is runnable now.

I came across another problem with @diffset in the rotl90(::CTMRGEnv) method. For non-symmetric unit cells (e.g. 2x1), it allowed me to assign rotated corners and edges to the non-rotated arrays in-place. You are able to assign rotl90(env.corners)[dir, :, :] to similar(env.corners)[dir, :, :] which should not be allowed --- and indeed, if you don't use @diffset this does raise an error.

@lkdvos
Copy link
Member

lkdvos commented Feb 27, 2024

I guess we should just try to avoid diffset, it is mostly a hack anyways

@pbrehmer
Copy link
Collaborator Author

pbrehmer commented Mar 1, 2024

So I think, this should be almost ready to go. There is still some minor mistakes in the gauge-fixing, but it now does work for some larger unit cells (there is probably some switch ups in the row/column indices still). Also there is some AD issues, but that seems solvable, so I will figure the rest out on Monday.

Should I also implement an initial version of the fixedpoint(x_init, H, alg, envs) interface? We could then be able to merge this PR maybe --- what do you think?

@pbrehmer
Copy link
Collaborator Author

pbrehmer commented Mar 5, 2024

Here is the error that happens during AD of gauge_fix (get ready for some long Zygote lines). In case we can't fix it yet, we can revert to an earlier version, or unroll the for loop with rotate_north explicitly.

ERROR: MethodError: no method matching +(::NamedTuple{(:contents,), Tuple{Array{Union{Nothing, TrivialTensorMap{ComplexSpace, 2, 0, Matrix{ComplexF64}}, Tensor{ComplexSpace, 2, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}, 3}}}, ::Base.RefValue{Any})

Closest candidates are:
  +(::Any, ::Any, ::Any, ::Any...)
   @ Base operators.jl:578
  +(::Union{InitialValues.NonspecificInitialValue, InitialValues.SpecificInitialValue{typeof(+)}}, ::Any)
   @ InitialValues ~/.julia/packages/InitialValues/OWP8V/src/InitialValues.jl:154
  +(::ChainRulesCore.AbstractThunk, ::Any)
   @ ChainRulesCore ~/.julia/packages/ChainRulesCore/zgT0R/src/tangent_arithmetic.jl:122
  ...

Stacktrace:
  [1] accum(x::NamedTuple{(:contents,), Tuple{Array{Union{Nothing, TrivialTensorMap{ComplexSpace, 2, 0, Matrix{ComplexF64}}, Tensor{ComplexSpace, 2, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}, 3}}}, y::Base.RefValue{Any})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/lib/lib.jl:17
  [2] accum(x::NamedTuple{(:contents,), Tuple{Array{Union{Nothing, TrivialTensorMap{ComplexSpace, 2, 0, Matrix{ComplexF64}}, Tensor{ComplexSpace, 2, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}, 3}}}, y::Nothing, zs::Base.RefValue{Any})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/lib/lib.jl:22
  [3] Pullback
    @ ~/repos/PEPSKit.jl/src/algorithms/ctmrg.jl:181 [inlined]
  [4] (::Zygote.Pullback{Tuple{typeof(PEPSKit.fix_relative_phases), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, 3}}, Any})(Δ::Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
  [5] Pullback
    @ ~/repos/PEPSKit.jl/src/algorithms/ctmrg.jl:86 [inlined]
  [6] (::Zygote.Pullback{Tuple{typeof(PEPSKit.gauge_fix), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#83#88", Nothing, false}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Nothing, false}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, 1, Tuple{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Zygote.Pullback{Tuple{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Tuple{Int64, Int64, Int64}}, Any}}, 3}}, Nothing}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#86#91", Nothing, false}}, Zygote.Pullback{Tuple{typeof(PEPSKit.fix_relative_phases), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, 3}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:corners, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#85#90"}, PEPSKit.var"#85#90"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#85#90", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#85#90", Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}}}, 3}}, Nothing}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}}, Zygote.var"#2929#back#732"{Zygote.var"#product_pullback#731"{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#85#90", Nothing, false}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#83#88", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#83#88", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#86#91"}, PEPSKit.var"#86#91"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#86#91", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#86#91", Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}}}}, 3}}, Nothing}}}, Zygote.ZBack{PEPSKit.var"#ctmrgenv_pullback#62"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(getproperty), Module, Symbol}, Tuple{Zygote.Pullback{Tuple{typeof(getglobal), Module, Symbol}, Tuple{typeof(getglobal)}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#82#87", Nothing, false}}, Zygote.ZBack{ChainRules.var"#axes_pullback#305"}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#82#87", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#82#87", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}}})(Δ::CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
  [7] Pullback
    @ ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:70 [inlined]
  [8] (::Zygote.Pullback{Tuple{PEPSKit.var"#115#116"{CTMRG}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:ctmalg, Zygote.Context{false}, PEPSKit.var"#115#116"{CTMRG}, CTMRG}}, Zygote.Pullback{Tuple{typeof(PEPSKit.gauge_fix), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#83#88", Nothing, false}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Nothing, false}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, 1, Tuple{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Zygote.Pullback{Tuple{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Tuple{Int64, Int64, Int64}}, Any}}, 3}}, Nothing}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#86#91", Nothing, false}}, Zygote.Pullback{Tuple{typeof(PEPSKit.fix_relative_phases), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, 3}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:corners, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#85#90"}, PEPSKit.var"#85#90"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#85#90", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#85#90", Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}}}, 3}}, Nothing}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}}, Zygote.var"#2929#back#732"{Zygote.var"#product_pullback#731"{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#85#90", Nothing, false}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#83#88", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#83#88", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#86#91"}, PEPSKit.var"#86#91"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#86#91", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#86#91", Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}}}}, 3}}, Nothing}}}, Zygote.ZBack{PEPSKit.var"#ctmrgenv_pullback#62"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(getproperty), Module, Symbol}, Tuple{Zygote.Pullback{Tuple{typeof(getglobal), Module, Symbol}, Tuple{typeof(getglobal)}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#82#87", Nothing, false}}, Zygote.ZBack{ChainRules.var"#axes_pullback#305"}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#82#87", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#82#87", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}}}, Zygote.Pullback{Tuple{typeof(PEPSKit.ctmrg_iter), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRG}, Any}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}})(Δ::CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
  [9] #75
    @ ~/.julia/packages/Zygote/jxHJc/src/compiler/interface.jl:91 [inlined]
 [10] ∂f∂x
    @ ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:72 [inlined]
 [11] (::PEPSKit.var"#grad_op#120"{PEPSKit.var"#∂f∂x#118"{Zygote.var"#75#76"{Zygote.Pullback{Tuple{PEPSKit.var"#115#116"{CTMRG}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:ctmalg, Zygote.Context{false}, PEPSKit.var"#115#116"{CTMRG}, CTMRG}}, Zygote.Pullback{Tuple{typeof(PEPSKit.gauge_fix), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#83#88", Nothing, false}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Nothing, false}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, 1, Tuple{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Zygote.Pullback{Tuple{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Tuple{Int64, Int64, Int64}}, Any}}, 3}}, Nothing}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#86#91", Nothing, false}}, Zygote.Pullback{Tuple{typeof(PEPSKit.fix_relative_phases), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, 3}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:corners, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#85#90"}, PEPSKit.var"#85#90"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#85#90", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#85#90", Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}}}, 3}}, Nothing}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}}, Zygote.var"#2929#back#732"{Zygote.var"#product_pullback#731"{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#85#90", Nothing, false}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#83#88", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#83#88", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#86#91"}, PEPSKit.var"#86#91"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#86#91", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#86#91", Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}}}}, 3}}, Nothing}}}, Zygote.ZBack{PEPSKit.var"#ctmrgenv_pullback#62"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(getproperty), Module, Symbol}, Tuple{Zygote.Pullback{Tuple{typeof(getglobal), Module, Symbol}, Tuple{typeof(getglobal)}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#82#87", Nothing, false}}, Zygote.ZBack{ChainRules.var"#axes_pullback#305"}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#82#87", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#82#87", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}}}, Zygote.Pullback{Tuple{typeof(PEPSKit.ctmrg_iter), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRG}, Any}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}}}})(env::CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}})
    @ PEPSKit ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:133
 [12] apply(f::PEPSKit.var"#grad_op#120"{PEPSKit.var"#∂f∂x#118"{Zygote.var"#75#76"{Zygote.Pullback{Tuple{PEPSKit.var"#115#116"{CTMRG}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:ctmalg, Zygote.Context{false}, PEPSKit.var"#115#116"{CTMRG}, CTMRG}}, Zygote.Pullback{Tuple{typeof(PEPSKit.gauge_fix), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#83#88", Nothing, false}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Nothing, false}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, 1, Tuple{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Zygote.Pullback{Tuple{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Tuple{Int64, Int64, Int64}}, Any}}, 3}}, Nothing}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#86#91", Nothing, false}}, Zygote.Pullback{Tuple{typeof(PEPSKit.fix_relative_phases), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, 3}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:corners, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#85#90"}, PEPSKit.var"#85#90"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#85#90", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#85#90", Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}}}, 3}}, Nothing}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}}, Zygote.var"#2929#back#732"{Zygote.var"#product_pullback#731"{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#85#90", Nothing, false}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#83#88", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#83#88", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#86#91"}, PEPSKit.var"#86#91"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#86#91", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#86#91", Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}}}}, 3}}, Nothing}}}, Zygote.ZBack{PEPSKit.var"#ctmrgenv_pullback#62"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(getproperty), Module, Symbol}, Tuple{Zygote.Pullback{Tuple{typeof(getglobal), Module, Symbol}, Tuple{typeof(getglobal)}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#82#87", Nothing, false}}, Zygote.ZBack{ChainRules.var"#axes_pullback#305"}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#82#87", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#82#87", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}}}, Zygote.Pullback{Tuple{typeof(PEPSKit.ctmrg_iter), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRG}, Any}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}}}}, x::CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}})
    @ KrylovKit ~/.julia/packages/KrylovKit/r8GLV/src/apply.jl:2
 [13] linsolve(operator::Function, b::CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, x₀::CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, alg::KrylovKit.GMRES{KrylovKit.ModifiedGramSchmidt2, Float64}, a₀::Int64, a₁::Int64)
    @ KrylovKit ~/.julia/packages/KrylovKit/r8GLV/src/linsolve/gmres.jl:3
 [14] #linsolve#79
    @ ~/.julia/packages/KrylovKit/r8GLV/src/linsolve/linsolve.jl:104 [inlined]
 [15] linsolve (repeats 2 times)
    @ ~/.julia/packages/KrylovKit/r8GLV/src/linsolve/linsolve.jl:98 [inlined]
 [16] fpgrad(∂F∂x::CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, ∂f∂x::PEPSKit.var"#∂f∂x#118"{Zygote.var"#75#76"{Zygote.Pullback{Tuple{PEPSKit.var"#115#116"{CTMRG}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:ctmalg, Zygote.Context{false}, PEPSKit.var"#115#116"{CTMRG}, CTMRG}}, Zygote.Pullback{Tuple{typeof(PEPSKit.gauge_fix), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#83#88", Nothing, false}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Nothing, false}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, 1, Tuple{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Zygote.Pullback{Tuple{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Tuple{Int64, Int64, Int64}}, Any}}, 3}}, Nothing}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#86#91", Nothing, false}}, Zygote.Pullback{Tuple{typeof(PEPSKit.fix_relative_phases), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, 3}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:corners, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#85#90"}, PEPSKit.var"#85#90"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#85#90", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#85#90", Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}}}, 3}}, Nothing}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}}, Zygote.var"#2929#back#732"{Zygote.var"#product_pullback#731"{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#85#90", Nothing, false}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#83#88", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#83#88", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#86#91"}, PEPSKit.var"#86#91"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#86#91", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#86#91", Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}}}}, 3}}, Nothing}}}, Zygote.ZBack{PEPSKit.var"#ctmrgenv_pullback#62"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(getproperty), Module, Symbol}, Tuple{Zygote.Pullback{Tuple{typeof(getglobal), Module, Symbol}, Tuple{typeof(getglobal)}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#82#87", Nothing, false}}, Zygote.ZBack{ChainRules.var"#axes_pullback#305"}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#82#87", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#82#87", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}}}, Zygote.Pullback{Tuple{typeof(PEPSKit.ctmrg_iter), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRG}, Any}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}}}, ∂f∂A::PEPSKit.var"#∂f∂A#117"{Zygote.var"#75#76"{Zygote.Pullback{Tuple{PEPSKit.var"#115#116"{CTMRG}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:ctmalg, Zygote.Context{false}, PEPSKit.var"#115#116"{CTMRG}, CTMRG}}, Zygote.Pullback{Tuple{typeof(PEPSKit.gauge_fix), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#83#88", Nothing, false}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Nothing, false}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, 1, Tuple{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Zygote.Pullback{Tuple{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Tuple{Int64, Int64, Int64}}, Any}}, 3}}, Nothing}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#86#91", Nothing, false}}, Zygote.Pullback{Tuple{typeof(PEPSKit.fix_relative_phases), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, 3}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:corners, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#85#90"}, PEPSKit.var"#85#90"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#85#90", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#85#90", Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}}}, 3}}, Nothing}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}}, Zygote.var"#2929#back#732"{Zygote.var"#product_pullback#731"{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#85#90", Nothing, false}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#83#88", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#83#88", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#86#91"}, PEPSKit.var"#86#91"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#86#91", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#86#91", Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}}}}, 3}}, Nothing}}}, Zygote.ZBack{PEPSKit.var"#ctmrgenv_pullback#62"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(getproperty), Module, Symbol}, Tuple{Zygote.Pullback{Tuple{typeof(getglobal), Module, Symbol}, Tuple{typeof(getglobal)}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#82#87", Nothing, false}}, Zygote.ZBack{ChainRules.var"#axes_pullback#305"}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#82#87", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#82#87", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}}}, Zygote.Pullback{Tuple{typeof(PEPSKit.ctmrg_iter), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRG}, Any}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}}}, y₀::CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, alg::PEPSOptimize{LinSolve})
    @ PEPSKit ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:134
 [17] (::PEPSKit.var"#costfun!_pullback#119"{PEPSOptimize{LinSolve}, PEPSKit.var"#∂f∂x#118"{Zygote.var"#75#76"{Zygote.Pullback{Tuple{PEPSKit.var"#115#116"{CTMRG}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:ctmalg, Zygote.Context{false}, PEPSKit.var"#115#116"{CTMRG}, CTMRG}}, Zygote.Pullback{Tuple{typeof(PEPSKit.gauge_fix), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#83#88", Nothing, false}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Nothing, false}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, 1, Tuple{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Zygote.Pullback{Tuple{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Tuple{Int64, Int64, Int64}}, Any}}, 3}}, Nothing}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#86#91", Nothing, false}}, Zygote.Pullback{Tuple{typeof(PEPSKit.fix_relative_phases), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, 3}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:corners, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#85#90"}, PEPSKit.var"#85#90"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#85#90", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#85#90", Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}}}, 3}}, Nothing}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}}, Zygote.var"#2929#back#732"{Zygote.var"#product_pullback#731"{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#85#90", Nothing, false}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#83#88", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#83#88", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#86#91"}, PEPSKit.var"#86#91"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#86#91", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#86#91", Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}}}}, 3}}, Nothing}}}, Zygote.ZBack{PEPSKit.var"#ctmrgenv_pullback#62"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(getproperty), Module, Symbol}, Tuple{Zygote.Pullback{Tuple{typeof(getglobal), Module, Symbol}, Tuple{typeof(getglobal)}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#82#87", Nothing, false}}, Zygote.ZBack{ChainRules.var"#axes_pullback#305"}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#82#87", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#82#87", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}}}, Zygote.Pullback{Tuple{typeof(PEPSKit.ctmrg_iter), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRG}, Any}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}}}, PEPSKit.var"#∂f∂A#117"{Zygote.var"#75#76"{Zygote.Pullback{Tuple{PEPSKit.var"#115#116"{CTMRG}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:ctmalg, Zygote.Context{false}, PEPSKit.var"#115#116"{CTMRG}, CTMRG}}, Zygote.Pullback{Tuple{typeof(PEPSKit.gauge_fix), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#83#88", Nothing, false}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Nothing, false}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, 1, Tuple{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Zygote.Pullback{Tuple{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Tuple{Int64, Int64, Int64}}, Any}}, 3}}, Nothing}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#86#91", Nothing, false}}, Zygote.Pullback{Tuple{typeof(PEPSKit.fix_relative_phases), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, 3}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:corners, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#85#90"}, PEPSKit.var"#85#90"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#85#90", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#85#90", Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}}}, 3}}, Nothing}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}}, Zygote.var"#2929#back#732"{Zygote.var"#product_pullback#731"{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#85#90", Nothing, false}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#83#88", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#83#88", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#86#91"}, PEPSKit.var"#86#91"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#86#91", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#86#91", Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}}}}, 3}}, Nothing}}}, Zygote.ZBack{PEPSKit.var"#ctmrgenv_pullback#62"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(getproperty), Module, Symbol}, Tuple{Zygote.Pullback{Tuple{typeof(getglobal), Module, Symbol}, Tuple{typeof(getglobal)}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#82#87", Nothing, false}}, Zygote.ZBack{ChainRules.var"#axes_pullback#305"}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#82#87", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#82#87", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}}}, Zygote.Pullback{Tuple{typeof(PEPSKit.ctmrg_iter), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRG}, Any}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}})(#unused#::Float64)
    @ PEPSKit ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:77
 [18] (::Zygote.ZBack{PEPSKit.var"#costfun!_pullback#119"{PEPSOptimize{LinSolve}, PEPSKit.var"#∂f∂x#118"{Zygote.var"#75#76"{Zygote.Pullback{Tuple{PEPSKit.var"#115#116"{CTMRG}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:ctmalg, Zygote.Context{false}, PEPSKit.var"#115#116"{CTMRG}, CTMRG}}, Zygote.Pullback{Tuple{typeof(PEPSKit.gauge_fix), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#83#88", Nothing, false}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Nothing, false}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, 1, Tuple{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Zygote.Pullback{Tuple{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Tuple{Int64, Int64, Int64}}, Any}}, 3}}, Nothing}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#86#91", Nothing, false}}, Zygote.Pullback{Tuple{typeof(PEPSKit.fix_relative_phases), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, 3}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:corners, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#85#90"}, PEPSKit.var"#85#90"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#85#90", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#85#90", Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}}}, 3}}, Nothing}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}}, Zygote.var"#2929#back#732"{Zygote.var"#product_pullback#731"{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#85#90", Nothing, false}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#83#88", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#83#88", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#86#91"}, PEPSKit.var"#86#91"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#86#91", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#86#91", Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}}}}, 3}}, Nothing}}}, Zygote.ZBack{PEPSKit.var"#ctmrgenv_pullback#62"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(getproperty), Module, Symbol}, Tuple{Zygote.Pullback{Tuple{typeof(getglobal), Module, Symbol}, Tuple{typeof(getglobal)}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#82#87", Nothing, false}}, Zygote.ZBack{ChainRules.var"#axes_pullback#305"}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#82#87", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#82#87", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}}}, Zygote.Pullback{Tuple{typeof(PEPSKit.ctmrg_iter), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRG}, Any}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}}}, PEPSKit.var"#∂f∂A#117"{Zygote.var"#75#76"{Zygote.Pullback{Tuple{PEPSKit.var"#115#116"{CTMRG}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:ctmalg, Zygote.Context{false}, PEPSKit.var"#115#116"{CTMRG}, CTMRG}}, Zygote.Pullback{Tuple{typeof(PEPSKit.gauge_fix), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#83#88", Nothing, false}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Nothing, false}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, 1, Tuple{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Zygote.Pullback{Tuple{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Tuple{Int64, Int64, Int64}}, Any}}, 3}}, Nothing}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#86#91", Nothing, false}}, Zygote.Pullback{Tuple{typeof(PEPSKit.fix_relative_phases), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, 3}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:corners, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#85#90"}, PEPSKit.var"#85#90"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#85#90", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#85#90", Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}}}, 3}}, Nothing}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}}, Zygote.var"#2929#back#732"{Zygote.var"#product_pullback#731"{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#85#90", Nothing, false}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#83#88", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#83#88", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#86#91"}, PEPSKit.var"#86#91"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#86#91", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#86#91", Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}}}}, 3}}, Nothing}}}, Zygote.ZBack{PEPSKit.var"#ctmrgenv_pullback#62"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(getproperty), Module, Symbol}, Tuple{Zygote.Pullback{Tuple{typeof(getglobal), Module, Symbol}, Tuple{typeof(getglobal)}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#82#87", Nothing, false}}, Zygote.ZBack{ChainRules.var"#axes_pullback#305"}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#82#87", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#82#87", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}}}, Zygote.Pullback{Tuple{typeof(PEPSKit.ctmrg_iter), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRG}, Any}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}})(dy::Float64)
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/chainrules.jl:211
 [19] (::Zygote.var"#75#76"{Zygote.ZBack{PEPSKit.var"#costfun!_pullback#119"{PEPSOptimize{LinSolve}, PEPSKit.var"#∂f∂x#118"{Zygote.var"#75#76"{Zygote.Pullback{Tuple{PEPSKit.var"#115#116"{CTMRG}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:ctmalg, Zygote.Context{false}, PEPSKit.var"#115#116"{CTMRG}, CTMRG}}, Zygote.Pullback{Tuple{typeof(PEPSKit.gauge_fix), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#83#88", Nothing, false}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Nothing, false}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, 1, Tuple{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Zygote.Pullback{Tuple{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Tuple{Int64, Int64, Int64}}, Any}}, 3}}, Nothing}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#86#91", Nothing, false}}, Zygote.Pullback{Tuple{typeof(PEPSKit.fix_relative_phases), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, 3}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:corners, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#85#90"}, PEPSKit.var"#85#90"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#85#90", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#85#90", Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}}}, 3}}, Nothing}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}}, Zygote.var"#2929#back#732"{Zygote.var"#product_pullback#731"{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#85#90", Nothing, false}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#83#88", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#83#88", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#86#91"}, PEPSKit.var"#86#91"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#86#91", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#86#91", Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}}}}, 3}}, Nothing}}}, Zygote.ZBack{PEPSKit.var"#ctmrgenv_pullback#62"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(getproperty), Module, Symbol}, Tuple{Zygote.Pullback{Tuple{typeof(getglobal), Module, Symbol}, Tuple{typeof(getglobal)}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#82#87", Nothing, false}}, Zygote.ZBack{ChainRules.var"#axes_pullback#305"}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#82#87", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#82#87", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}}}, Zygote.Pullback{Tuple{typeof(PEPSKit.ctmrg_iter), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRG}, Any}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}}}, PEPSKit.var"#∂f∂A#117"{Zygote.var"#75#76"{Zygote.Pullback{Tuple{PEPSKit.var"#115#116"{CTMRG}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:ctmalg, Zygote.Context{false}, PEPSKit.var"#115#116"{CTMRG}, CTMRG}}, Zygote.Pullback{Tuple{typeof(PEPSKit.gauge_fix), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#83#88", Nothing, false}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Nothing, false}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, 1, Tuple{Base.Iterators.ProductIterator{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Zygote.Pullback{Tuple{PEPSKit.var"#84#89"{CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{Matrix{ComplexF64}, 3}, Array{Matrix{ComplexF64}, 3}}, Tuple{Int64, Int64, Int64}}, Any}}, 3}}, Nothing}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#86#91", Nothing, false}}, Zygote.Pullback{Tuple{typeof(PEPSKit.fix_relative_phases), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TensorMap{ComplexSpace, 2, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, 3}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:corners, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}}, PEPSKit.var"#85#90", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#85#90"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#85#90"}, PEPSKit.var"#85#90"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#85#90", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#85#90", Tuple{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#tr_pullback#50"{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}}}}}}, 3}}, Nothing}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}}, Zygote.var"#2929#back#732"{Zygote.var"#product_pullback#731"{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#85#90", Nothing, false}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#83#88", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#83#88", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}, Zygote.Pullback{Tuple{typeof(map), PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.Pullback{Tuple{Type{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}}, PEPSKit.var"#86#91", Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Zygote.var"#2214#back#313"{Zygote.Jnew{Base.Generator{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, PEPSKit.var"#86#91"}, Nothing, false}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}, Zygote.Pullback{Tuple{typeof(convert), Type{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(convert), Type{PEPSKit.var"#86#91"}, PEPSKit.var"#86#91"}, Tuple{}}, Zygote.ZBack{ChainRules.var"#fieldtype_pullback#423"}}}}}, Zygote.var"#collect_pullback#705"{Zygote.var"#map_back#667"{PEPSKit.var"#86#91", 1, Tuple{Base.Iterators.Zip{Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{PEPSKit.var"#86#91", Tuple{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{ChainRules.var"#/_pullback#1319"{ComplexF64, ComplexF64, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{ComplexF64, NamedTuple{(), Tuple{}}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#pullback#80"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Symbol, VectorInterface.One, VectorInterface.Zero, Tuple{}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{Number, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}, NamedTuple{(), Tuple{}}}, ChainRulesCore.ProjectTo{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, NamedTuple{(), Tuple{}}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#times_pullback#40"{ComplexF64, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensoralloc_add_pullback#23"{Tuple{DataType, Tuple{Tuple{}, Tuple{}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, Symbol, Bool}}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorscalar_pullback#49"{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.Pullback{Tuple{typeof(scalartype), TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{Matrix{ComplexF64}}}, Tuple{Zygote.Pullback{Tuple{typeof(scalartype), Type{ComplexF64}}, Tuple{}}}}, Zygote.Pullback{Tuple{typeof(storagetype), Type{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Tuple{}}}}, Zygote.ZBack{ChainRules.var"#typeof_pullback#45"}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Zygote.ZBack{ChainRules.var"#sign_pullback#1328"{ComplexF64, Float64}}, Zygote.ZBack{TensorOperationsChainRulesCoreExt.var"#tensorfree!_pullback#47"{Tuple{TensorMap{ComplexSpace, 0, 0, Trivial, Matrix{ComplexF64}, Nothing, Nothing}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Int64}}}}}, 3}}, Nothing}}}, Zygote.ZBack{PEPSKit.var"#ctmrgenv_pullback#62"}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.Pullback{Tuple{typeof(getproperty), Module, Symbol}, Tuple{Zygote.Pullback{Tuple{typeof(getglobal), Module, Symbol}, Tuple{typeof(getglobal)}}}}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:edges, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2214#back#313"{Zygote.Jnew{PEPSKit.var"#82#87", Nothing, false}}, Zygote.ZBack{ChainRules.var"#axes_pullback#305"}, Zygote.var"#2961#back#750"{Zygote.var"#zip_pullback#749"{Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#back#246"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 2, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}}}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{PEPSKit.var"#82#87", 1, Tuple{Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}, Tuple{Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}}, Array{Tuple{Matrix{ComplexF64}, Zygote.Pullback{Tuple{PEPSKit.var"#82#87", TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, Tuple{Zygote.ZBack{ChainRules.var"#getindex_pullback#1580"{Array{ComplexF64, 4}, Tuple{Colon, Int64, Int64, Colon}, NTuple{4, ChainRulesCore.NoTangent}}}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#convert_pullback#22"{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}, 3}}}}}, Zygote.Pullback{Tuple{typeof(PEPSKit.ctmrg_iter), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRG}, Any}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}}})(Δ::Float64)
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface.jl:91
 [20] gradient(::Function, ::InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, ::Vararg{Any})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface.jl:148
 [21] ctmrg_gradient(x::Tuple{InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, H::TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}, ctmalg::CTMRG, optalg::PEPSOptimize{LinSolve})
    @ PEPSKit ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:40
 [22] #113
    @ ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:26 [inlined]
 [23] optimize(fg::PEPSKit.var"#113#114"{TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}, CTMRG, PEPSOptimize{LinSolve}}, x::Tuple{InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, alg::LBFGS{Float64, HagerZhangLineSearch{Rational{Int64}}}; precondition::typeof(OptimKit._precondition), finalize!::typeof(OptimKit._finalize!), retract::Function, inner::typeof(PEPSKit.my_inner), transport!::typeof(OptimKit._transport!), scale!::typeof(OptimKit._scale!), add!::typeof(OptimKit._add!), isometrictransport::Bool)
    @ OptimKit ~/.julia/packages/OptimKit/xpmbV/src/lbfgs.jl:21
 [24] groundsearch(H::TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}, ctmalg::CTMRG, optalg::PEPSOptimize{LinSolve}, ψinit::InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, envinit::CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}})
    @ PEPSKit ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:25
 [25] top-level scope
    @ ~/repos/PEPSKit.jl/examples/heisenberg.jl:45

…th AbstractInteractions, unroll gauge-fixing explicitly to fix AD, update ctmrg_gradient to be more efficient
@pbrehmer pbrehmer marked this pull request as ready for review March 7, 2024 13:17
@pbrehmer
Copy link
Collaborator Author

pbrehmer commented Mar 7, 2024

I now gave the fixedpoint interface a shot and to that end introduced the NLocalOperator struct with an AbstractInteraction type. (I wanted to call it LocalOperator but there is some naming ambiguity with a type from MPSKitModels.) Of course this is not yet perfect so I'm happy about any suggestions or changes to that interface.

With the caveat of shaky gauge-fixing I think this is relatively ready to merge from my side ;)

@leburgel
Copy link
Collaborator

leburgel commented Mar 7, 2024

When I tested differentiating the fixed-point with unit cells Friday and today, I noticed two problems. First, I needed to figure out the gauge-fixing for general unit cells (I think I got this today, but haven't implemented it yet). And second, when doing the naive AD through CTMRG, somehow the adjoint of _setindex of the @diffset macro runs into problems with ZeroTangent --- I haven't understood this yet. I get the following error:

ERROR: MethodError: Cannot `convert` an object of type ChainRulesCore.ZeroTangent to an object of type TrivialTensorMap{ComplexSpace, 1, 3, Matrix{ComplexF64}}

Closest candidates are:
  convert(::Type{<:AbstractTensorMap}, ::MPSKit.FiniteMPS)
   @ MPSKit ~/.julia/packages/MPSKit/atykv/src/states/finitemps.jl:235
  convert(::Type{TensorMap{S, N₁, N₂, I, A, F₁, F₂}}, ::AbstractTensorMap{S, N₁, N₂}) where {S, N₁, N₂, I, A, F₁, F₂}
   @ TensorKit ~/.julia/packages/TensorKit/gpuAY/src/tensors/tensor.jl:572
  convert(::Type{T}, ::T) where T
   @ Base Base.jl:64

Stacktrace:
  [1] setindex!(A::Matrix{TrivialTensorMap{ComplexSpace, 1, 3, Matrix{ComplexF64}}}, x::ChainRulesCore.ZeroTangent, i1::Int64)
    @ Base ./array.jl:969
  [2] _unsafe_copyto!(dest::Matrix{TrivialTensorMap{ComplexSpace, 1, 3, Matrix{ComplexF64}}}, doffs::Int64, src::Matrix{Any}, soffs::Int64, n::Int64)
    @ Base ./array.jl:250
  [3] unsafe_copyto!
    @ ./array.jl:304 [inlined]
  [4] _copyto_impl!
    @ ./array.jl:327 [inlined]
  [5] copyto!
    @ ./array.jl:314 [inlined]
  [6] copyto!
    @ ./array.jl:339 [inlined]
  [7] copyto_axcheck!(dest::Matrix{TrivialTensorMap{ComplexSpace, 1, 3, Matrix{ComplexF64}}}, src::Matrix{Any})
    @ Base ./abstractarray.jl:1182
  [8] Array
    @ ./array.jl:621 [inlined]
  [9] convert
    @ ./array.jl:613 [inlined]
 [10] _setindex_pullback
    @ ~/repos/PEPSKit.jl/src/utility/util.jl:96 [inlined]
 [11] (::Zygote.ZBack{PEPSKit.var"#_setindex_pullback#4"{Matrix{TrivialTensorMap{ComplexSpace, 1, 3, Matrix{ComplexF64}}}, Tuple{Int64, Int64}}})(dy::Matrix{Union{Nothing, TrivialTensorMap{ComplexSpace, 1, 3, Matrix{ComplexF64}}}})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/chainrules.jl:211
 [12] macro expansion
    @ ~/repos/PEPSKit.jl/src/utility/util.jl:131 [inlined]
 [13] Pullback
    @ ~/repos/PEPSKit.jl/src/algorithms/ctmrg.jl:219 [inlined]
 [14] (::Zygote.Pullback{Tuple{typeof(PEPSKit.left_move), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRG}, Any})(Δ::Tuple{NamedTuple{(:corners, :edges), Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Nothing, Nothing, Nothing})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
 [15] Pullback
    @ ~/repos/PEPSKit.jl/src/algorithms/ctmrg.jl:157 [inlined]
 [16] (::Zygote.Pullback{Tuple{typeof(PEPSKit.ctmrg_iter), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, CTMRG}, Any})(Δ::Tuple{NamedTuple{(:corners, :edges), Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Nothing, Nothing, Nothing})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
 [17] Pullback
    @ ~/repos/PEPSKit.jl/src/algorithms/ctmrg.jl:59 [inlined]
 [18] (::Zygote.Pullback{Tuple{typeof(leading_boundary), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRG, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Any})(Δ::Tuple{NamedTuple{(:corners, :edges), Tuple{Array{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, 3}, Array{TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}, 3}}}, Nothing, Nothing})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
 [19] Pullback
    @ ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:48 [inlined]
 [20] (::Zygote.Pullback{Tuple{typeof(PEPSKit.costfun!), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}, CTMRG, PEPSOptimize{NaiveAD}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{3, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}, Zygote.Pullback{Tuple{typeof(leading_boundary), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRG, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:energyfun, Zygote.Context{false}, PEPSOptimize{NaiveAD}, typeof(PEPSKit.next_neighbor_energy)}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.Pullback{Tuple{typeof(PEPSKit.next_neighbor_energy), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}}, Tuple{Zygote.var"#2993#back#768"{Zygote.var"#762#766"{Matrix{ComplexF64}}}, Zygote.var"#2993#back#768"{Zygote.var"#762#766"{Matrix{ComplexF64}}}, Zygote.Pullback{Tuple{typeof(expectation_value), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}}, Any}, Zygote.ZBack{Zygote.var"#real_pullback#350"}, Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{ComplexF64, ComplexF64}}}, Zygote.Pullback{Tuple{typeof(rotl90), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Any}, Zygote.Pullback{Tuple{typeof(expectation_value), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}}, Any}, Zygote.Pullback{Tuple{typeof(rotl90), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(Base.Broadcast.materialize), Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcasted), typeof(rotl90), Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcastable), Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}, Tuple{}}, Zygote.var"#4121#back#1362"{Zygote.var"#∇broadcasted#1373"{Tuple{Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Matrix{Tuple{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{typeof(rotl90), TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, Tuple{Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#permute_pullback#49"{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}, Tuple{Tuple{Int64}, NTuple{4, Int64}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2017#back#204"{typeof(identity)}}}}}, Val{2}}}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing}, Tuple{}}, Zygote.var"#combine_styles_pullback#1168"{Tuple{Nothing, Nothing}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{typeof(Base.Broadcast.broadcastable), 1, Tuple{Tuple{}}, Tuple{Val{0}}, Tuple{}}}, Zygote.var"#2017#back#204"{typeof(identity)}}}, Zygote.Pullback{Tuple{Type{InfinitePEPS}, Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:A, Zygote.Context{false}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}}, Zygote.ZBack{PEPSKit.var"#pb#3"{Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}}}}}}}})(Δ::Float64)
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
 [21] (::Zygote.var"#75#76"{Zygote.Pullback{Tuple{typeof(PEPSKit.costfun!), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}, CTMRG, PEPSOptimize{NaiveAD}}, Tuple{Zygote.var"#back#245"{Zygote.var"#2033#back#213"{Zygote.var"#back#211"{3, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}}, Zygote.Pullback{Tuple{typeof(leading_boundary), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRG, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:energyfun, Zygote.Context{false}, PEPSOptimize{NaiveAD}, typeof(PEPSKit.next_neighbor_energy)}}, Zygote.var"#2033#back#213"{Zygote.var"#back#211"{2, 1, Zygote.Context{false}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}}, Zygote.Pullback{Tuple{typeof(PEPSKit.next_neighbor_energy), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}}, Tuple{Zygote.var"#2993#back#768"{Zygote.var"#762#766"{Matrix{ComplexF64}}}, Zygote.var"#2993#back#768"{Zygote.var"#762#766"{Matrix{ComplexF64}}}, Zygote.Pullback{Tuple{typeof(expectation_value), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}}, Any}, Zygote.ZBack{Zygote.var"#real_pullback#350"}, Zygote.ZBack{Zygote.var"#plus_pullback#345"{Tuple{ComplexF64, ComplexF64}}}, Zygote.Pullback{Tuple{typeof(rotl90), CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, Any}, Zygote.Pullback{Tuple{typeof(expectation_value), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}, TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}}, Any}, Zygote.Pullback{Tuple{typeof(rotl90), InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(Base.Broadcast.materialize), Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{}}, Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcasted), typeof(rotl90), Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{Zygote.Pullback{Tuple{typeof(Base.Broadcast.broadcastable), Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Tuple{}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing, Nothing, Nothing}, Tuple{}}, Zygote.var"#4121#back#1362"{Zygote.var"#∇broadcasted#1373"{Tuple{Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Matrix{Tuple{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}, Zygote.Pullback{Tuple{typeof(rotl90), TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, Tuple{Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.ZBack{TensorKitChainRulesCoreExt.var"#permute_pullback#49"{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}, Tuple{Tuple{Int64}, NTuple{4, Int64}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2017#back#204"{typeof(identity)}}}}}, Val{2}}}}}, Zygote.var"#2173#back#293"{Zygote.var"#291#292"{Tuple{Tuple{Nothing}, Tuple{}}, Zygote.var"#combine_styles_pullback#1168"{Tuple{Nothing, Nothing}}}}, Zygote.var"#2017#back#204"{typeof(identity)}, Zygote.var"#2849#back#673"{Zygote.var"#map_back#667"{typeof(Base.Broadcast.broadcastable), 1, Tuple{Tuple{}}, Tuple{Val{0}}, Tuple{}}}, Zygote.var"#2017#back#204"{typeof(identity)}}}, Zygote.Pullback{Tuple{Type{InfinitePEPS}, Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}, Any}, Zygote.var"#2184#back#303"{Zygote.var"#back#302"{:A, Zygote.Context{false}, InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}}, Zygote.ZBack{PEPSKit.var"#pb#3"{Matrix{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}}}}}}}}}})(Δ::Float64)
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface.jl:91
 [22] gradient(::Function, ::InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, ::Vararg{Any})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface.jl:148
 [23] ctmrg_gradient(x::Tuple{InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, H::TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}, ctmalg::CTMRG, optalg::PEPSOptimize{NaiveAD})
    @ PEPSKit ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:40
 [24] #103
    @ ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:26 [inlined]
 [25] optimize(fg::PEPSKit.var"#103#104"{TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}, CTMRG, PEPSOptimize{NaiveAD}}, x::Tuple{InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}}}, alg::LBFGS{Float64, HagerZhangLineSearch{Rational{Int64}}}; precondition::typeof(OptimKit._precondition), finalize!::typeof(OptimKit._finalize!), retract::Function, inner::typeof(PEPSKit.my_inner), transport!::typeof(OptimKit._transport!), scale!::typeof(OptimKit._scale!), add!::typeof(OptimKit._add!), isometrictransport::Bool)
    @ OptimKit ~/.julia/packages/OptimKit/xpmbV/src/lbfgs.jl:21
 [26] groundsearch(H::TrivialTensorMap{ComplexSpace, 2, 2, Matrix{ComplexF64}}, ctmalg::CTMRG, optalg::PEPSOptimize{NaiveAD}, ψinit::InfinitePEPS{TrivialTensorMap{ComplexSpace, 1, 4, Matrix{ComplexF64}}}, envinit::CTMRGEnv{TrivialTensorMap{ComplexSpace, 1, 1, Matrix{ComplexF64}}, TrivialTensorMap{ComplexSpace, 3, 1, Matrix{ComplexF64}}})
    @ PEPSKit ~/repos/PEPSKit.jl/src/algorithms/peps_opt.jl:25
 [27] top-level scope
    @ ~/repos/PEPSKit.jl/examples/heisenberg.jl:45

Any chance you know what is going on?

Very late to the party, but I also encountered this when messing around with unit cells a while ago and got around it by stupidly commenting out a conversion in the _setindex rrule,
https://github.com/quantumghent/PEPSKit.jl/blob/f96c84f6e863d590e09916925c45f747e7950d33/src/utility/util.jl#L69-L70
Probably no longer relevant if diffset is avoided altogether, but thought I would mention it anyway.

@pbrehmer
Copy link
Collaborator Author

pbrehmer commented Mar 7, 2024

Very late to the party, but I also encountered this when messing around with unit cells a while ago and got around it by stupidly commenting out a conversion in the _setindex rrule,

https://github.com/quantumghent/PEPSKit.jl/blob/f96c84f6e863d590e09916925c45f747e7950d33/src/utility/util.jl#L69-L70

Probably no longer relevant if diffset is avoided altogether, but thought I would mention it anyway.

Thanks for the clue! I also tried fiddling around with this a bit but I couldn't get it to work for now.

@lkdvos
Copy link
Member

lkdvos commented Mar 12, 2024

I made some changes and seem to have gotten a bit lost and what is/is not supposed to be working. I'll just push what I have, and we can revert if I broke something that was not meant to be broken?

src/utility/util.jl Outdated Show resolved Hide resolved
pbrehmer and others added 2 commits March 12, 2024 18:16
@pbrehmer
Copy link
Collaborator Author

pbrehmer commented Mar 12, 2024

Thanks for the great additions and refactoring! I checked the code and fixed a few things, so that all the test scripts are runnable again. (test_gradients.jl, test_gauge_fixing.jl and heisenberg.jl should all run and produce sensible results; however, the gradient test sometimes gives weird results for GeomSum and ManualIter, which then also spits out gauge-sensitivity warnings... GMRES seems to be robust against this.)

Note that I commented out the code in ctmrg_gradient.jl since it duplicates things from peps_opt.jl. Of course we can separate the CTMRG gradient stuff to another file, which is fine by me, but the duplication lead to some wrong results. So we either get rid of ctmrg_gradient.jl or we separate all the necessary code to that file. Otherwise, I think this should be mergeable now :-)

Copy link
Member

@lkdvos lkdvos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've just added some final small tweaks such that the tests run again, this is good to go for me.

(as a small side note, I've now also set up the branch protection rules for the master branch, so all changes will now require a PR with at least 1 approval)

@lkdvos lkdvos merged commit a24ac36 into master Mar 13, 2024
8 checks passed
@pbrehmer
Copy link
Collaborator Author

pbrehmer commented Mar 14, 2024

Thanks for the final tweaks! I'll go ahead and delete the branch now.

EDIT: Nevermind, apparently I can't delete the branch, I don't know why though.

@lkdvos
Copy link
Member

lkdvos commented Mar 14, 2024

Let me check how the permissions work, the organisation thing throws me off :p
EDIT: I think it should be working now?

@pbrehmer
Copy link
Collaborator Author

Let me check how the permissions work, the organisation thing throws me off :p EDIT: I think it should be working now?

Hmm, still can't delete. I will give it a try later on, but otherwise you can probably also delete the branch :p

@leburgel leburgel deleted the proper_gradients branch March 14, 2024 11:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants