Skip to content

Commit 8aeb097

Browse files
committed
explicit imports
1 parent ad12d60 commit 8aeb097

File tree

5 files changed

+50
-55
lines changed

5 files changed

+50
-55
lines changed

NDTensors/src/lib/Sectors/src/Sectors.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
module Sectors
22

3+
using BlockArrays: blocklengths
4+
5+
using NDTensors.LabelledNumbers:
6+
LabelledInteger, label, label_type, labelled, unlabel, unlabel_type
7+
using NDTensors.GradedAxes:
8+
GradedAxes,
9+
blocklabels,
10+
dual,
11+
fuse_blocklengths,
12+
fusion_product,
13+
gradedrange,
14+
tensor_product
15+
316
include("symmetry_style.jl")
417
include("abstractcategory.jl")
518
include("category_definitions/fib.jl")

NDTensors/src/lib/Sectors/src/abstractcategory.jl

Lines changed: 25 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,10 @@ end
1111
# ================================= Sectors interface ====================================
1212
trivial(x) = trivial(typeof(x))
1313
function trivial(axis_type::Type{<:AbstractUnitRange})
14-
return GradedAxes.gradedrange([trivial(eltype(axis_type))]) # always returns nondual
14+
return gradedrange([trivial(eltype(axis_type))]) # always returns nondual
1515
end
16-
function trivial(la_type::Type{<:LabelledNumbers.LabelledInteger})
17-
return LabelledNumbers.labelled(
18-
one(LabelledNumbers.unlabel_type(la_type)), trivial(LabelledNumbers.label_type(la_type))
19-
)
16+
function trivial(la_type::Type{<:LabelledInteger})
17+
return labelled(one(unlabel_type(la_type)), trivial(label_type(la_type)))
2018
end
2119
function trivial(type::Type)
2220
return error("`trivial` not defined for type $(type).")
@@ -29,10 +27,9 @@ function category_label(c::AbstractCategory)
2927
end
3028

3129
block_dimensions(g::AbstractUnitRange) = block_dimensions(SymmetryStyle(g), g)
32-
block_dimensions(::AbelianGroup, g) = LabelledNumbers.unlabel.(BlockArrays.blocklengths(g))
30+
block_dimensions(::AbelianGroup, g) = unlabel.(blocklengths(g))
3331
function block_dimensions(::SymmetryStyle, g)
34-
return Sectors.quantum_dimension.(GradedAxes.blocklabels(g)) .*
35-
BlockArrays.blocklengths(g)
32+
return quantum_dimension.(blocklabels(g)) .* blocklengths(g)
3633
end
3734

3835
quantum_dimension(x) = quantum_dimension(SymmetryStyle(x), x)
@@ -55,18 +52,16 @@ end
5552

5653
function fusion_rule(::SymmetryStyle, c1::C, c2::C) where {C<:AbstractCategory}
5754
degen, labels = label_fusion_rule(C, category_label(c1), category_label(c2))
58-
return GradedAxes.gradedrange(LabelledNumbers.labelled.(degen, C.(labels)))
55+
return gradedrange(labelled.(degen, C.(labels)))
5956
end
6057

6158
# abelian case: return Category
6259
function fusion_rule(::AbelianGroup, c1::C, c2::C) where {C<:AbstractCategory}
6360
return C(label_fusion_rule(C, category_label(c1), category_label(c2)))
6461
end
6562

66-
function fusion_rule(
67-
::EmptyCategory, l1::LabelledNumbers.LabelledInteger, l2::LabelledNumbers.LabelledInteger
68-
)
69-
return LabelledNumbers.labelled(l1 * l2, sector())
63+
function fusion_rule(::EmptyCategory, l1::LabelledInteger, l2::LabelledInteger)
64+
return labelled(l1 * l2, sector())
7065
end
7166

7267
function label_fusion_rule(category_type::Type{<:AbstractCategory}, ::Any, ::Any)
@@ -76,56 +71,51 @@ end
7671
# ================================ GradedAxes interface ==================================
7772
# tensor_product interface
7873
function GradedAxes.fuse_blocklengths(
79-
l1::LabelledNumbers.LabelledInteger{<:Integer,<:Sectors.AbstractCategory},
80-
l2::LabelledNumbers.LabelledInteger{<:Integer,<:Sectors.AbstractCategory},
74+
l1::LabelledInteger{<:Integer,<:AbstractCategory},
75+
l2::LabelledInteger{<:Integer,<:AbstractCategory},
8176
)
82-
return GradedAxes.fuse_blocklengths(
83-
combine_styles(SymmetryStyle(l1), SymmetryStyle(l2)), l1, l2
84-
)
77+
return fuse_blocklengths(combine_styles(SymmetryStyle(l1), SymmetryStyle(l2)), l1, l2)
8578
end
8679

8780
function GradedAxes.fuse_blocklengths(
88-
::SymmetryStyle, l1::LabelledNumbers.LabelledInteger, l2::LabelledNumbers.LabelledInteger
81+
::SymmetryStyle, l1::LabelledInteger, l2::LabelledInteger
8982
)
90-
fused = LabelledNumbers.label(l1) LabelledNumbers.label(l2)
91-
v =
92-
LabelledNumbers.labelled.(
93-
l1 * l2 .* BlockArrays.blocklengths(fused), GradedAxes.blocklabels(fused)
94-
)
95-
return GradedAxes.gradedrange(v)
83+
fused = label(l1) label(l2)
84+
v = labelled.(l1 * l2 .* blocklengths(fused), blocklabels(fused))
85+
return gradedrange(v)
9686
end
9787

9888
function GradedAxes.fuse_blocklengths(
99-
::AbelianGroup, l1::LabelledNumbers.LabelledInteger, l2::LabelledNumbers.LabelledInteger
89+
::AbelianGroup, l1::LabelledInteger, l2::LabelledInteger
10090
)
101-
fused = LabelledNumbers.label(l1) LabelledNumbers.label(l2)
102-
return LabelledNumbers.labelled(l1 * l2, fused)
91+
fused = label(l1) label(l2)
92+
return labelled(l1 * l2, fused)
10393
end
10494

10595
function GradedAxes.fuse_blocklengths(
106-
::EmptyCategory, l1::LabelledNumbers.LabelledInteger, l2::LabelledNumbers.LabelledInteger
96+
::EmptyCategory, l1::LabelledInteger, l2::LabelledInteger
10797
)
108-
return LabelledNumbers.labelled(l1 * l2, sector())
98+
return labelled(l1 * l2, sector())
10999
end
110100

111101
# cast to range
112-
to_graded_axis(c::AbstractCategory) = to_graded_axis(LabelledNumbers.labelled(1, c))
113-
to_graded_axis(l::LabelledNumbers.LabelledInteger) = GradedAxes.gradedrange([l])
102+
to_graded_axis(c::AbstractCategory) = to_graded_axis(labelled(1, c))
103+
to_graded_axis(l::LabelledInteger) = gradedrange([l])
114104
to_graded_axis(g::AbstractUnitRange) = g
115105

116106
# allow to fuse a category with a GradedUnitRange
117107
function GradedAxes.tensor_product(c::AbstractCategory, g::AbstractUnitRange)
118-
return GradedAxes.tensor_product(to_graded_axis(c), g)
108+
return tensor_product(to_graded_axis(c), g)
119109
end
120110

121111
function GradedAxes.tensor_product(g::AbstractUnitRange, c::AbstractCategory)
122-
return GradedAxes.tensor_product(c, g)
112+
return tensor_product(g, to_graded_axis(c))
123113
end
124114

125115
function GradedAxes.tensor_product(c1::AbstractCategory, c2::AbstractCategory)
126116
return to_graded_axis(fusion_rule(c1, c2))
127117
end
128118

129119
function GradedAxes.fusion_product(c::AbstractCategory)
130-
return GradedAxes.fusion_product(to_graded_axis(c))
120+
return to_graded_axis(c)
131121
end

NDTensors/src/lib/Sectors/src/category_definitions/su2k.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ end
88

99
SymmetryStyle(::su2) = NonGroupCategory()
1010

11-
dual(s::su2) = s
11+
GradedAxes.dual(s::su2) = s
1212

1313
category_label(s::su2) = s.j
1414

NDTensors/src/lib/Sectors/src/category_product.jl

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ function quantum_dimension(::NonGroupCategory, s::CategoryProduct)
2424
return prod(map(quantum_dimension, categories(s)))
2525
end
2626

27-
GradedAxes.dual(s::CategoryProduct) = CategoryProduct(map(GradedAxes.dual, categories(s)))
27+
GradedAxes.dual(s::CategoryProduct) = CategoryProduct(map(dual, categories(s)))
2828

2929
trivial(type::Type{<:CategoryProduct}) = sector(categories_trivial(categories_type(type)))
3030

@@ -83,10 +83,9 @@ function recover_key(T::Type, fused::Tuple)
8383
# here fused contains at leat one GradedUnitRange
8484
g0 = reduce(×, fused)
8585
# convention: keep unsorted blocklabels as produced by F order loops in ×
86-
new_labels = recover_key.(T, GradedAxes.blocklabels(g0))
87-
new_blocklengths =
88-
LabelledNumbers.labelled.(GradedAxes.unlabel.(BlockArrays.blocklengths(g0)), new_labels)
89-
return GradedAxes.gradedrange(new_blocklengths)
86+
new_labels = recover_key.(T, blocklabels(g0))
87+
new_blocklengths = labelled.(unlabel.(blocklengths(g0)), new_labels)
88+
return gradedrange(new_blocklengths)
9089
end
9190

9291
sector(T::Type{<:CategoryProduct}, cats::Tuple) = sector(categories_type(T), cats)
@@ -105,20 +104,18 @@ end
105104
×(c1::NamedTuple, c2::AbstractCategory) = ×(CategoryProduct(c1), CategoryProduct(c2))
106105
×(c1::AbstractCategory, c2::NamedTuple) = ×(CategoryProduct(c1), CategoryProduct(c2))
107106

108-
function ×(l1::LabelledNumbers.LabelledInteger, l2::LabelledNumbers.LabelledInteger)
109-
c3 = LabelledNumbers.label(l1) × LabelledNumbers.label(l2)
110-
m3 = LabelledNumbers.unlabel(l1) * LabelledNumbers.unlabel(l2)
111-
return LabelledNumbers.labelled(m3, c3)
107+
function ×(l1::LabelledInteger, l2::LabelledInteger)
108+
c3 = label(l1) × label(l2)
109+
m3 = unlabel(l1) * unlabel(l2)
110+
return labelled(m3, c3)
112111
end
113112

114113
function ×(g1::AbstractUnitRange, g2::AbstractUnitRange)
115114
v = map(
116115
((l1, l2),) -> l1 × l2,
117-
Iterators.flatten((
118-
Iterators.product(BlockArrays.blocklengths(g1), BlockArrays.blocklengths(g2)),
119-
),),
116+
Iterators.flatten((Iterators.product(blocklengths(g1), blocklengths(g2)),),),
120117
)
121-
return GradedAxes.gradedrange(v)
118+
return gradedrange(v)
122119
end
123120

124121
# ==================================== Fusion rules ======================================

NDTensors/src/lib/Sectors/src/symmetry_style.jl

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
# This file defines SymmetryStyle, a trait to distinguish abelian groups, non-abelian groups
22
# and non-group fusion categories.
33

4-
using BlockArrays
5-
6-
using NDTensors.LabelledNumbers
7-
using NDTensors.GradedAxes
8-
94
abstract type SymmetryStyle end
105

116
struct AbelianGroup <: SymmetryStyle end
@@ -25,7 +20,7 @@ combine_styles(::EmptyCategory, s::SymmetryStyle) = s
2520
combine_styles(s::SymmetryStyle, ::EmptyCategory) = s
2621
combine_styles(::EmptyCategory, ::EmptyCategory) = EmptyCategory()
2722

28-
SymmetryStyle(l::LabelledNumbers.LabelledInteger) = SymmetryStyle(LabelledNumbers.label(l))
23+
SymmetryStyle(l::LabelledInteger) = SymmetryStyle(label(l))
2924

3025
# crash for empty g. Currently impossible to construct.
3126
SymmetryStyle(g::AbstractUnitRange) = SymmetryStyle(first(g))

0 commit comments

Comments
 (0)