@@ -459,3 +459,62 @@ function Base.iterate(s::SectorSet{I}, args...) where {I<:Sector}
459459 val, state = next
460460 return convert (I, s. f (val)), state
461461end
462+
463+ # Time reversed sector
464+ struct TimeReversed{I<: Sector } <: Sector
465+ a:: I
466+ function TimeReversed {I} (a:: I ) where {I<: Sector }
467+ if BraidingStyle (I) isa NoBraiding
468+ throw (ArgumentError (" TimeReversed is not defined for sectors $I with no braiding" ))
469+ end
470+ return new {I} (a)
471+ end
472+ end
473+ FusionStyle (:: Type{TimeReversed{I}} ) where {I<: Sector } = FusionStyle (I)
474+ BraidingStyle (:: Type{TimeReversed{I}} ) where {I<: Sector } = BraidingStyle (I)
475+ function Nsymbol (a:: TimeReversed{I} , b:: TimeReversed{I} ,
476+ c:: TimeReversed{I} ) where {I<: Sector }
477+ return Nsymbol (a. a, b. a, c. a)
478+ end
479+
480+ function Fsymbol (a:: TimeReversed{I} , b:: TimeReversed{I} , c:: TimeReversed{I} ,
481+ d:: TimeReversed{I} , e:: TimeReversed{I} ,
482+ f:: TimeReversed{I} ) where {I<: Sector }
483+ return Fsymbol (a. a, b. a, c. a, d. a, e. a, f. a)
484+ end
485+ function Rsymbol (a:: TimeReversed{I} , b:: TimeReversed{I} ,
486+ c:: TimeReversed{I} ) where {I<: Sector }
487+ return adjoint (Rsymbol (a. a, b. a, c. a))
488+ end
489+
490+ Base. one (:: Type{TimeReversed{I}} ) where {I<: Sector } = TimeReversed {I} (one (I))
491+ Base. conj (c:: TimeReversed{I} ) where {I<: Sector } = TimeReversed {I} (conj (c. a))
492+ function ⊗ (c1:: TimeReversed{I} , c2:: TimeReversed{I} ) where {I<: Sector }
493+ return Iterators. map (TimeReversed{I}, c1. a ⊗ c2. a)
494+ end
495+ function Base. IteratorSize (:: Type{SectorValues{TimeReversed{I}}} ) where {I<: Sector }
496+ return Base. IteratorSize (values (I))
497+ end
498+ function Base. length (:: SectorValues{TimeReversed{I}} ) where {I<: Sector }
499+ return length (values (I))
500+ end
501+ function Base. getindex (:: SectorValues{TimeReversed{I}} , i:: Int ) where {I<: Sector }
502+ return TimeReversed {I} (getindex (values (I), i))
503+ end
504+ function Base. iterate (:: SectorValues{TimeReversed{I}} , state... ) where {I<: Sector }
505+ next = iterate (values (I), state... )
506+ if isnothing (next)
507+ return nothing
508+ else
509+ obj, nextstate = next
510+ return TimeReversed {I} (obj), nextstate
511+ end
512+ end
513+ function findindex (:: SectorValues{TimeReversed{I}} ,
514+ a:: TimeReversed{I} ) where {I<: Sector }
515+ return findindex (values (I), a. a)
516+ end
517+
518+ function Base. isless (c1:: TimeReversed{I} , c2:: TimeReversed{I} ) where {I<: Sector }
519+ return isless (c1. a, c2. a)
520+ end
0 commit comments