@@ -122,41 +122,31 @@ product_sectors_fusion_rule(::NamedTuple{()}, sects::Tuple) = SectorProduct(sect
122122product_sectors_fusion_rule (sects:: NamedTuple , :: Tuple{} ) = SectorProduct (sects)
123123product_sectors_fusion_rule (:: Tuple{} , sects:: NamedTuple ) = SectorProduct (sects)
124124
125- function fix_fused_product_type (T :: Type , fused)
126- return fix_fused_product_type (product_sectors_symmetrystyle (T ), T , fused)
125+ function fix_fused_product_type (Sectors :: Type , fused)
126+ return fix_fused_product_type (product_sectors_symmetrystyle (Sectors ), Sectors , fused)
127127end
128128
129- function fix_fused_product_type (:: AbelianStyle , T :: Type , fused)
130- return recover_sector_product_type (T , fused)
129+ function fix_fused_product_type (:: AbelianStyle , Sectors :: Type , fused)
130+ return recover_sector_product_type (Sectors , fused)
131131end
132132
133- function fix_fused_product_type (:: NotAbelianStyle , T :: Type , fused)
133+ function fix_fused_product_type (:: NotAbelianStyle , Sectors :: Type , fused)
134134 # convert e.g. Tuple{GradedUnitRange{SU2}, GradedUnitRange{SU2}} into GradedUnitRange{SU2×SU2}
135135 g = reduce (× , fused)
136136 # convention: keep unsorted blocklabels as produced by F order loops in ×
137- return recover_gradedaxis_product_type (T , g)
137+ return recover_gradedaxis_product_type (Sectors , g)
138138end
139139
140- function recover_gradedaxis_product_type (T:: Type , g0:: AbstractGradedUnitRange )
141- new_labels = recover_sector_product_type .(T, blocklabels (g0))
140+ function recover_gradedaxis_product_type (Sectors:: Type , g0:: AbstractGradedUnitRange )
141+ old_labels = blocklabels (g0)
142+ old_sects = product_sectors .(SectorProduct .(old_labels))
143+ new_labels = recover_sector_product_type .(Sectors, old_sects)
142144 new_blocklengths = labelled .(unlabel .(blocklengths (g0)), new_labels)
143145 return gradedrange (new_blocklengths)
144146end
145147
146- function recover_sector_product_type (T:: Type , c:: AbstractSector )
147- return recover_sector_product_type (T, SectorProduct (c))
148- end
149-
150- function recover_sector_product_type (T:: Type , c:: SectorProduct )
151- return recover_sector_product_type (T, product_sectors (c))
152- end
153-
154- function recover_sector_product_type (T:: Type{<:SectorProduct} , sects)
155- return recover_sector_product_type (product_sectors_type (T), sects)
156- end
157-
158- function recover_sector_product_type (T:: Type , sects)
159- return SectorProduct (T (sects))
148+ function recover_sector_product_type (Sectors:: Type , sects)
149+ return SectorProduct (Sectors (sects))
160150end
161151
162152# ================================= Cartesian Product ====================================
0 commit comments