@@ -51,9 +51,6 @@ function fuse_blocklengths(x::LabelledInteger, y::LabelledInteger)
5151 return blockedrange ([labelled (x * y, fuse_labels (label (x), label (y)))])
5252end
5353
54- flatten_maybe_nested (v:: Vector{<:Integer} ) = v
55- flatten_maybe_nested (v:: Vector{<:AbstractGradedUnitRange} ) = reduce (vcat, blocklengths .(v))
56-
5754using BlockArrays: blockedrange, blocks
5855function tensor_product (a1:: AbstractBlockedUnitRange , a2:: AbstractBlockedUnitRange )
5956 nested = map (Iterators. flatten ((Iterators. product (blocks (a1), blocks (a2)),))) do it
@@ -63,13 +60,8 @@ function tensor_product(a1::AbstractBlockedUnitRange, a2::AbstractBlockedUnitRan
6360 return blockedrange (new_blocklengths)
6461end
6562
66- # convention: sort UnitRangeDual according to nondual blocks
67- function blocksortperm (a:: AbstractUnitRange )
68- return Block .(sortperm (blocklabels (nondual (a))))
69- end
70-
7163# convention: sort GradedUnitRangeDual according to nondual blocks
72- function blocksortperm (a:: GradedUnitRangeDual )
64+ function blocksortperm (a:: AbstractUnitRange )
7365 return Block .(sortperm (blocklabels (nondual (a))))
7466end
7567
10294function blockmergesort (g:: AbstractGradedUnitRange )
10395 glabels = blocklabels (g)
10496 gblocklengths = blocklengths (g)
105- new_blocklengths = map (
106- la -> labelled (sum (gblocklengths[findall (== (la), glabels)]; init= 0 ), la),
107- sort (unique (glabels)),
108- )
109- return GradedAxes. gradedrange (new_blocklengths)
97+ new_blocklengths = map (sort (unique (glabels))) do la
98+ return labelled (sum (gblocklengths[findall (== (la), glabels)]; init= 0 ), la)
99+ end
100+ return gradedrange (new_blocklengths)
110101end
111102
112- blockmergesort (g:: GradedUnitRangeDual ) = dual (blockmergesort (flip (g)))
103+ blockmergesort (g:: GradedUnitRangeDual ) = flip (blockmergesort (flip (g)))
113104
114105# fusion_product produces a sorted, non-dual GradedUnitRange
115106function fusion_product (g1, g2)
0 commit comments