Skip to content

julia type inference crashes (typeerror) #41908

Closed
@maartenvd

Description

@maartenvd

my tests started crashing with the stacktrace:

Internal error: encountered unexpected error in runtime:
TypeError(func=:AbstractTensorMap, context="S", expected=S<:(TensorKit.ElementarySpace{𝕜} where 𝕜), got=TensorKit.HomSpace{TensorKit.GradedSpace{Main.PlanarTrivial, Tuple{Int64}}, TensorKit.ProductSpace{TensorKit.GradedSpace{Main.PlanarTrivial, Tuple{Int64}}, 0}, TensorKit.ProductSpace{TensorKit.GradedSpace{Main.PlanarTrivial, Tuple{Int64}}, 0}})
jl_type_error_rt at /home/maarten/julia/src/rtutils.c:119
check_datatype_parameters at /home/maarten/julia/src/jltypes.c:1229
inst_datatype_inner at /home/maarten/julia/src/jltypes.c:1392
...

happens at least on julia 1.6.2, and also on master.

I wasn't able to really reduce it down very far, as it's a reasonably large codebase. To run it, you need my fork of TensorKit.jl, and the planocalypse branch of MPSKit.jl . I will try to reduce it down further, but so far I didn't have much luck.

using TensorKit,MPSKit;

#define some new sectortype - with the property that braiding is forbidden
struct PlanarTrivial <: TensorKit.Sector end
struct 𝔹 end
Base.:^(::Type{𝔹}, d::Int) = GradedSpace(PlanarTrivial()=>d);

Base.one(::Type{PlanarTrivial})  = PlanarTrivial();
Base.conj(c::PlanarTrivial) = PlanarTrivial();
TensorKit.:⊗(c1::PlanarTrivial, c2::PlanarTrivial) = (PlanarTrivial(),)

Base.IteratorSize(::Type{TensorKit.SectorValues{PlanarTrivial}}) = TensorKit.HasLength()
Base.length(::TensorKit.SectorValues{PlanarTrivial}) = 1
Base.iterate(::TensorKit.SectorValues{PlanarTrivial}, i = 0) = i==0 ? (PlanarTrivial(),1) : nothing;
Base.getindex(::TensorKit.SectorValues{PlanarTrivial}, i::Int) = i == 1 ? PlanarTrivial() : ArgumentError("lol");
TensorKit.findindex(::TensorKit.SectorValues{PlanarTrivial}, c::PlanarTrivial)  = 1
Base.isless(::PlanarTrivial, ::PlanarTrivial) = false;
TensorKit.BraidingStyle(::Type{PlanarTrivial}) = TensorKit.NoBraiding();
TensorKit.FusionStyle(::Type{PlanarTrivial}) = TensorKit.UniqueFusion();
TensorKit.Fsymbol(args::Vararg{PlanarTrivial,6}) = 1
TensorKit.Nsymbol(args::Vararg{PlanarTrivial,3}) = 1


# use mpskit
alg = GradientGrassmann(verbosity=0,maxiter=1);
mpo = InfiniteMPO([TensorMap(rand,ComplexF64,𝔹^2*𝔹^2,𝔹^2*𝔹^2)]);
state = InfiniteMPS([𝔹^2],[𝔹^10]);
(state,envs) = leading_boundary(state,mpo,alg);

Metadata

Metadata

Assignees

Labels

bugIndicates an unexpected problem or unintended behaviorcompiler:inferenceType inferencetypes and dispatchTypes, subtyping and method dispatch

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions