From 0158f84d98cbed28e1212b830f7367501566302f Mon Sep 17 00:00:00 2001 From: Chenqi Meng Date: Tue, 31 Mar 2026 19:50:49 +0800 Subject: [PATCH 01/11] Added some aliases --- src/aliases.jl | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/aliases.jl b/src/aliases.jl index 401326b..ce1a211 100644 --- a/src/aliases.jl +++ b/src/aliases.jl @@ -6,6 +6,7 @@ const Z5 = PMFC{5, 1, 4, 1, 0, 0} const Z6 = PMFC{6, 1, 4, 1, 0, 0} const Z2xZ2 = PMFC{4, 1, 0, 1, 0, 0} +const Z2xsVec = PMFC{4, 1, 0, 1, 0, 1} # Rep[Dₙ] const RepD3 = PMFC{3, 1, 0, 2, 0, 0} @@ -36,3 +37,38 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 # Varia @objectnames Fib = PMFC{2, 1, 0, 2, 0, 0} I τ @objectnames Ising = PMFC{3, 1, 0, 1, 1, 3} I ψ σ +@objectnames sVec = PMFC{2, 1, 0, 1, 0, 1} I ψ +@objectnames Semion = PMFC{2, 1, 0, 1, 1, 0} I ϵ + +_umtcs_lowrank_centralcharge = [ + Dict( + 1//1 => PMFC{2, 1, 0, 1, 1, 0}, # Semion + -1//1 => PMFC{2, 1, 0, 1, 1, 1}, + -14//5 => PMFC{2, 1, 0, 2, 0, 0}, # TimeReversed{Fibonacci} + 14//5 => PMFC{2, 1, 0, 2, 0, 1}, # Fibonacci + ), + Dict( + 2//1 => PMFC{3, 1, 2, 1, 0, 1}, # Z₃ MTC + -2//1 => PMFC{3, 1, 2, 1, 0, 2}, + 5//2 => PMFC{3, 1, 0, 1, 0, 0}, # The following are 8-fold ways + -3//2 => PMFC{3, 1, 0, 1, 0, 1}, + -5//2 => PMFC{3, 1, 0, 1, 0, 2}, + 3//2 => PMFC{3, 1, 0, 1, 0, 3}, + 7//2 => PMFC{3, 1, 0, 1, 1, 0}, + -1//2 => PMFC{3, 1, 0, 1, 1, 1}, # TimeReversed{Ising} + -7//2 => PMFC{3, 1, 0, 1, 1, 2}, + 1//2 => PMFC{3, 1, 0, 1, 1, 3}, # Ising + 8//7 =>PMFC{3, 1, 0, 3, 0, 0}, # PSU(2)₅ + -8//7 => PMFC{3, 1, 0, 3, 0, 1}, + ), + Dict( + (0//1, 1) => PMFC{4, 1, 0, 1, 0, 2}, # Toric code ≅ Z(Rep[Z₂]) + (0//1, 2) => PMFC{4, 1, 0, 1, 1, 0}, # Z(Semion) ≅ Semion ⊠ TimeReversed{Semion} + 2//1 => PMFC{4, 1, 0, 1, 1, 1}, # Semion ⊠ Semion + -2//1 => PMFC{4, 1, 0, 1, 1, 2}, # TODO: TimeReversed{Semion} ⊠ TimeReversed{Semion}, but with error! + 1//1 => PMFC{4, 1, 2, 1, 2, 0}, # Four Z₄ MTCs + 3//1 => PMFC{4, 1, 2, 1, 2, 1}, + -3//1 => PMFC{4, 1, 2, 1, 2, 2}, + -1//1 => PMFC{4, 1, 2, 1, 2, 3}, + ) +] From ec46154e897da6ffc391445960feee7f2afaef96 Mon Sep 17 00:00:00 2001 From: Chenqi Meng Date: Tue, 31 Mar 2026 22:39:52 +0800 Subject: [PATCH 02/11] Finished UMTCs lower than rank 5 --- src/aliases.jl | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/aliases.jl b/src/aliases.jl index ce1a211..a3deac3 100644 --- a/src/aliases.jl +++ b/src/aliases.jl @@ -39,17 +39,20 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 @objectnames Ising = PMFC{3, 1, 0, 1, 1, 3} I ψ σ @objectnames sVec = PMFC{2, 1, 0, 1, 0, 1} I ψ @objectnames Semion = PMFC{2, 1, 0, 1, 1, 0} I ϵ +@objectnames ToricCode = PMFC{4, 1, 0, 1, 0, 0} I e m ψ +@objectnames Z3MTC = PMFC{3, 1, 2, 1, 0, 1} 0 1 2 +@objectnames SU2_4 = PMFC{5, 1, 0, 3, 0, 0} 0 4 3 1 2 _umtcs_lowrank_centralcharge = [ Dict( 1//1 => PMFC{2, 1, 0, 1, 1, 0}, # Semion - -1//1 => PMFC{2, 1, 0, 1, 1, 1}, - -14//5 => PMFC{2, 1, 0, 2, 0, 0}, # TimeReversed{Fibonacci} - 14//5 => PMFC{2, 1, 0, 2, 0, 1}, # Fibonacci + -1//1 => PMFC{2, 1, 0, 1, 1, 1}, # TimeReversed{Semion} + -14//5 => PMFC{2, 1, 0, 2, 0, 0}, # TimeReversed{Fib} + 14//5 => PMFC{2, 1, 0, 2, 0, 1}, # Fib ), Dict( - 2//1 => PMFC{3, 1, 2, 1, 0, 1}, # Z₃ MTC - -2//1 => PMFC{3, 1, 2, 1, 0, 2}, + 2//1 => PMFC{3, 1, 2, 1, 0, 1}, # Z3MTC + -2//1 => PMFC{3, 1, 2, 1, 0, 2}, # TimeReversed{Z3MTC} 5//2 => PMFC{3, 1, 0, 1, 0, 0}, # The following are 8-fold ways -3//2 => PMFC{3, 1, 0, 1, 0, 1}, -5//2 => PMFC{3, 1, 0, 1, 0, 2}, @@ -63,12 +66,31 @@ _umtcs_lowrank_centralcharge = [ ), Dict( (0//1, 1) => PMFC{4, 1, 0, 1, 0, 2}, # Toric code ≅ Z(Rep[Z₂]) + # 4//1 => PMFC{4, 1, 0, 1, 0, ?}, # ThreeFermion, but with error! (0//1, 2) => PMFC{4, 1, 0, 1, 1, 0}, # Z(Semion) ≅ Semion ⊠ TimeReversed{Semion} 2//1 => PMFC{4, 1, 0, 1, 1, 1}, # Semion ⊠ Semion - -2//1 => PMFC{4, 1, 0, 1, 1, 2}, # TODO: TimeReversed{Semion} ⊠ TimeReversed{Semion}, but with error! + # -2//1 => PMFC{4, 1, 0, 1, 1, ?}, # TODO: TimeReversed{Semion} ⊠ TimeReversed{Semion}, but with error! 1//1 => PMFC{4, 1, 2, 1, 2, 0}, # Four Z₄ MTCs 3//1 => PMFC{4, 1, 2, 1, 2, 1}, -3//1 => PMFC{4, 1, 2, 1, 2, 2}, -1//1 => PMFC{4, 1, 2, 1, 2, 3}, + -9//5 => PMFC{4, 1, 0, 2, 1, 0}, # Semion ⊠ TimeReversed{Fib} + 19//5 => PMFC{4, 1, 0, 2, 1, 1}, # Semion ⊠ Fib + -19//5 => PMFC{4, 1, 0, 2, 1, 2}, # TimeReversed{Semion} ⊠ TimeReversed{Fib} + 9//5 => PMFC{4, 1, 0, 2, 1, 3}, # TimeReversed{Semion} ⊠ Fib + 12//5 => PMFC{4, 1, 0, 5, 0, 0}, # TimeReversed{Fib} ⊠ TimeReversed{Fib} + (0//1, 3) => PMFC{4, 1, 0, 5, 0, 1}, # TimeReversed{Fib} ⊠ Fib + -12//5 => PMFC{4, 1, 0, 5, 0, 2}, # Fib ⊠ Fib + 10//3 => PMFC{4, 1, 0, 6, 0, 0}, # PSU2_7 + -10//3 => PMFC{4, 1, 0, 6, 0, 1}, # TimeReversed{PSU2_7} + ), + Dict( + 4//1 => PMFC{5, 1, 4, 1, 0, 1}, + 0//1 => PMFC{5, 1, 4, 1, 0, 2}, + (2//1, 1) => PMFC{5, 1, 0, 3, 0, 0}, # SU2_4 + (2//1, 2) => PMFC{5, 1, 0, 3, 1, 0}, # TimeReversed{JK4} http://dx.doi.org/10.1103/PhysRevA.92.012301 + # Cannot find TimeReversed{SU2_4} or JK4, but they should be here somewhere with PMFC{5, 1, 0, 3, x, y} + # Cannot find PSU2_9 and its time-reversal, but they should be here somewhere with PMFC{5, 1, 0, x, y, z} with c = ± 16//11 + # Cannot find c = ± 18//7 UMTCs. They are not SimpleFusion. Should be PMFC{5, 2, ?, ?, ?, ?} ) ] From 71868dacee04317dfea331b2af4cbfe9e55a3ecd Mon Sep 17 00:00:00 2001 From: Chenqi Meng Date: Tue, 31 Mar 2026 23:02:07 +0800 Subject: [PATCH 03/11] Update SU2_4 and JK_4 --- src/aliases.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/aliases.jl b/src/aliases.jl index a3deac3..aee8c3a 100644 --- a/src/aliases.jl +++ b/src/aliases.jl @@ -88,8 +88,9 @@ _umtcs_lowrank_centralcharge = [ 4//1 => PMFC{5, 1, 4, 1, 0, 1}, 0//1 => PMFC{5, 1, 4, 1, 0, 2}, (2//1, 1) => PMFC{5, 1, 0, 3, 0, 0}, # SU2_4 + # Cannot find TimeReversed{SU2_4}, but it should be here with PMFC{5, 1, 0, 3, 0, 1} (2//1, 2) => PMFC{5, 1, 0, 3, 1, 0}, # TimeReversed{JK4} http://dx.doi.org/10.1103/PhysRevA.92.012301 - # Cannot find TimeReversed{SU2_4} or JK4, but they should be here somewhere with PMFC{5, 1, 0, 3, x, y} + # Cannot find JK4, but it should be here somewhere with PMFC{5, 1, 0, 3, 1, 1} # Cannot find PSU2_9 and its time-reversal, but they should be here somewhere with PMFC{5, 1, 0, x, y, z} with c = ± 16//11 # Cannot find c = ± 18//7 UMTCs. They are not SimpleFusion. Should be PMFC{5, 2, ?, ?, ?, ?} ) From b54fbfa9eef13c8155683c7f3c63927947e5d91c Mon Sep 17 00:00:00 2001 From: Chenqi Meng Date: Wed, 1 Apr 2026 13:54:35 +0800 Subject: [PATCH 04/11] Update aliases.jl --- src/aliases.jl | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/aliases.jl b/src/aliases.jl index aee8c3a..4257c0f 100644 --- a/src/aliases.jl +++ b/src/aliases.jl @@ -39,7 +39,12 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 @objectnames Ising = PMFC{3, 1, 0, 1, 1, 3} I ψ σ @objectnames sVec = PMFC{2, 1, 0, 1, 0, 1} I ψ @objectnames Semion = PMFC{2, 1, 0, 1, 1, 0} I ϵ -@objectnames ToricCode = PMFC{4, 1, 0, 1, 0, 0} I e m ψ +@objectnames ToricCode = PMFC{4, 1, 0, 1, 0, 2} I e m ψ +# @objectnames ThreeFermion = PMFC{4, 1, 0, 1, 0, 3} I f1 f2 f3 +@objectnames ZSemion = PMFC{4, 1, 0, 1, 1, 0} II ϵI ϵϵ Iϵ +@objectnames SemionSemion = PMFC{4, 1, 0, 1, 1, 1} II ϵI ϵϵ Iϵ +@objectnames ZFib = PMFC{4, 1, 0, 5, 0, 1} II τI Iτ ττ +# @objectnames FibFib = PMFC{4, 1, 0, 5, 0, 2} II τI Iτ ττ @objectnames Z3MTC = PMFC{3, 1, 2, 1, 0, 1} 0 1 2 @objectnames SU2_4 = PMFC{5, 1, 0, 3, 0, 0} 0 4 3 1 2 @@ -66,10 +71,10 @@ _umtcs_lowrank_centralcharge = [ ), Dict( (0//1, 1) => PMFC{4, 1, 0, 1, 0, 2}, # Toric code ≅ Z(Rep[Z₂]) - # 4//1 => PMFC{4, 1, 0, 1, 0, ?}, # ThreeFermion, but with error! + # 4//1 => PMFC{4, 1, 0, 1, 0, 3}, # ThreeFermion (0//1, 2) => PMFC{4, 1, 0, 1, 1, 0}, # Z(Semion) ≅ Semion ⊠ TimeReversed{Semion} 2//1 => PMFC{4, 1, 0, 1, 1, 1}, # Semion ⊠ Semion - # -2//1 => PMFC{4, 1, 0, 1, 1, ?}, # TODO: TimeReversed{Semion} ⊠ TimeReversed{Semion}, but with error! + # -2//1 => PMFC{4, 1, 0, 1, 1, ?}, # TimeReversed{Semion} ⊠ TimeReversed{Semion}, but with error! 1//1 => PMFC{4, 1, 2, 1, 2, 0}, # Four Z₄ MTCs 3//1 => PMFC{4, 1, 2, 1, 2, 1}, -3//1 => PMFC{4, 1, 2, 1, 2, 2}, @@ -80,7 +85,7 @@ _umtcs_lowrank_centralcharge = [ 9//5 => PMFC{4, 1, 0, 2, 1, 3}, # TimeReversed{Semion} ⊠ Fib 12//5 => PMFC{4, 1, 0, 5, 0, 0}, # TimeReversed{Fib} ⊠ TimeReversed{Fib} (0//1, 3) => PMFC{4, 1, 0, 5, 0, 1}, # TimeReversed{Fib} ⊠ Fib - -12//5 => PMFC{4, 1, 0, 5, 0, 2}, # Fib ⊠ Fib + # -12//5 => PMFC{4, 1, 0, 5, 0, 2}, # Fib ⊠ Fib 10//3 => PMFC{4, 1, 0, 6, 0, 0}, # PSU2_7 -10//3 => PMFC{4, 1, 0, 6, 0, 1}, # TimeReversed{PSU2_7} ), From 24f128721587b53a1e52729b48b07451d9a98ad0 Mon Sep 17 00:00:00 2001 From: Chenqi Meng Date: Wed, 1 Apr 2026 15:10:04 +0800 Subject: [PATCH 05/11] Update aliases.jl --- src/aliases.jl | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/src/aliases.jl b/src/aliases.jl index 4257c0f..612fc00 100644 --- a/src/aliases.jl +++ b/src/aliases.jl @@ -6,7 +6,6 @@ const Z5 = PMFC{5, 1, 4, 1, 0, 0} const Z6 = PMFC{6, 1, 4, 1, 0, 0} const Z2xZ2 = PMFC{4, 1, 0, 1, 0, 0} -const Z2xsVec = PMFC{4, 1, 0, 1, 0, 1} # Rep[Dₙ] const RepD3 = PMFC{3, 1, 0, 2, 0, 0} @@ -36,21 +35,37 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 # Varia @objectnames Fib = PMFC{2, 1, 0, 2, 0, 0} I τ -@objectnames Ising = PMFC{3, 1, 0, 1, 1, 3} I ψ σ @objectnames sVec = PMFC{2, 1, 0, 1, 0, 1} I ψ @objectnames Semion = PMFC{2, 1, 0, 1, 1, 0} I ϵ +@objectnames U1_1 = PMFC{2, 1, 0, 1, 1, 0} 0 1 +@objectnames SU2_1 = PMFC{2, 1, 0, 1, 1, 0} 0 1 +@objectnames PSU2_3 = PMFC{2, 1, 0, 2, 0, 0} 0 2 + +@objectnames Z3MTC = PMFC{3, 1, 2, 1, 0, 1} 0 1 2 +@objectnames Ising = PMFC{3, 1, 0, 1, 1, 3} I ψ σ +@objectnames SU2_2 = PMFC{3, 1, 0, 1, 0, 3} 0 2 1 +@objectnames PSU2_5 = PMFC{3, 1, 0, 3, 0, 0} 0 4 2 + @objectnames ToricCode = PMFC{4, 1, 0, 1, 0, 2} I e m ψ # @objectnames ThreeFermion = PMFC{4, 1, 0, 1, 0, 3} I f1 f2 f3 +@objectnames Z2sVec = PMFC{4, 1, 0, 1, 0, 1} @objectnames ZSemion = PMFC{4, 1, 0, 1, 1, 0} II ϵI ϵϵ Iϵ @objectnames SemionSemion = PMFC{4, 1, 0, 1, 1, 1} II ϵI ϵϵ Iϵ +# @objectnames Z2Semion = PMFC{4, 1, 0, 1, 1, ?} +# @objectnames sVecSemion = = PMFC{4, 1, 0, 1, 1, ?} +@objectnames SemionFib = PMFC{4, 1, 0, 2, 1, 1} II ϵI ϵτ Iτ +@objectnames U1_2 = PMFC{4, 1, 2, 1, 2, 0} 0 1 2 3 @objectnames ZFib = PMFC{4, 1, 0, 5, 0, 1} II τI Iτ ττ # @objectnames FibFib = PMFC{4, 1, 0, 5, 0, 2} II τI Iτ ττ -@objectnames Z3MTC = PMFC{3, 1, 2, 1, 0, 1} 0 1 2 +@objectnames PSU2_7 = PMFC{4, 1, 0, 6, 0, 0} 0 6 2 4 + @objectnames SU2_4 = PMFC{5, 1, 0, 3, 0, 0} 0 4 3 1 2 +# @objectnames JK4 +# @objectnames PSU2_9 _umtcs_lowrank_centralcharge = [ Dict( - 1//1 => PMFC{2, 1, 0, 1, 1, 0}, # Semion + 1//1 => PMFC{2, 1, 0, 1, 1, 0}, # Semion, U1_1, SU2_1 -1//1 => PMFC{2, 1, 0, 1, 1, 1}, # TimeReversed{Semion} -14//5 => PMFC{2, 1, 0, 2, 0, 0}, # TimeReversed{Fib} 14//5 => PMFC{2, 1, 0, 2, 0, 1}, # Fib @@ -58,27 +73,27 @@ _umtcs_lowrank_centralcharge = [ Dict( 2//1 => PMFC{3, 1, 2, 1, 0, 1}, # Z3MTC -2//1 => PMFC{3, 1, 2, 1, 0, 2}, # TimeReversed{Z3MTC} - 5//2 => PMFC{3, 1, 0, 1, 0, 0}, # The following are 8-fold ways - -3//2 => PMFC{3, 1, 0, 1, 0, 1}, + 5//2 => PMFC{3, 1, 0, 1, 0, 0}, # The following are 8-fold ways of Ising-type UMTCs + -3//2 => PMFC{3, 1, 0, 1, 0, 1}, # TimeReversed{SU2_2} -5//2 => PMFC{3, 1, 0, 1, 0, 2}, - 3//2 => PMFC{3, 1, 0, 1, 0, 3}, + 3//2 => PMFC{3, 1, 0, 1, 0, 3}, # SU2_2 7//2 => PMFC{3, 1, 0, 1, 1, 0}, -1//2 => PMFC{3, 1, 0, 1, 1, 1}, # TimeReversed{Ising} -7//2 => PMFC{3, 1, 0, 1, 1, 2}, 1//2 => PMFC{3, 1, 0, 1, 1, 3}, # Ising - 8//7 =>PMFC{3, 1, 0, 3, 0, 0}, # PSU(2)₅ - -8//7 => PMFC{3, 1, 0, 3, 0, 1}, + 8//7 =>PMFC{3, 1, 0, 3, 0, 0}, # PSU2_5 + -8//7 => PMFC{3, 1, 0, 3, 0, 1}, # TimeReversed{PSU2_5} ), Dict( (0//1, 1) => PMFC{4, 1, 0, 1, 0, 2}, # Toric code ≅ Z(Rep[Z₂]) # 4//1 => PMFC{4, 1, 0, 1, 0, 3}, # ThreeFermion (0//1, 2) => PMFC{4, 1, 0, 1, 1, 0}, # Z(Semion) ≅ Semion ⊠ TimeReversed{Semion} 2//1 => PMFC{4, 1, 0, 1, 1, 1}, # Semion ⊠ Semion - # -2//1 => PMFC{4, 1, 0, 1, 1, ?}, # TimeReversed{Semion} ⊠ TimeReversed{Semion}, but with error! - 1//1 => PMFC{4, 1, 2, 1, 2, 0}, # Four Z₄ MTCs + # -2//1 => PMFC{4, 1, 0, 1, 1, ?}, # TimeReversed{Semion} ⊠ TimeReversed{Semion} + 1//1 => PMFC{4, 1, 2, 1, 2, 0}, # U1_2 3//1 => PMFC{4, 1, 2, 1, 2, 1}, -3//1 => PMFC{4, 1, 2, 1, 2, 2}, - -1//1 => PMFC{4, 1, 2, 1, 2, 3}, + -1//1 => PMFC{4, 1, 2, 1, 2, 3}, # TimeReversed{U1_2} -9//5 => PMFC{4, 1, 0, 2, 1, 0}, # Semion ⊠ TimeReversed{Fib} 19//5 => PMFC{4, 1, 0, 2, 1, 1}, # Semion ⊠ Fib -19//5 => PMFC{4, 1, 0, 2, 1, 2}, # TimeReversed{Semion} ⊠ TimeReversed{Fib} From e5115f23f3c3fc5e0dec33407b983a86fe6ce0e4 Mon Sep 17 00:00:00 2001 From: Chenqi Meng Date: Wed, 1 Apr 2026 18:46:34 +0800 Subject: [PATCH 06/11] Update aliases.jl --- src/aliases.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/aliases.jl b/src/aliases.jl index 612fc00..15e3479 100644 --- a/src/aliases.jl +++ b/src/aliases.jl @@ -35,7 +35,7 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 # Varia @objectnames Fib = PMFC{2, 1, 0, 2, 0, 0} I τ -@objectnames sVec = PMFC{2, 1, 0, 1, 0, 1} I ψ +@objectnames sVec = PMFC{2, 1, 0, 1, 0, 1} I ψ # Non-modular @objectnames Semion = PMFC{2, 1, 0, 1, 1, 0} I ϵ @objectnames U1_1 = PMFC{2, 1, 0, 1, 1, 0} 0 1 @objectnames SU2_1 = PMFC{2, 1, 0, 1, 1, 0} 0 1 @@ -48,11 +48,11 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 @objectnames ToricCode = PMFC{4, 1, 0, 1, 0, 2} I e m ψ # @objectnames ThreeFermion = PMFC{4, 1, 0, 1, 0, 3} I f1 f2 f3 -@objectnames Z2sVec = PMFC{4, 1, 0, 1, 0, 1} +@objectnames Z2sVec = PMFC{4, 1, 0, 1, 0, 1} 0I 1I 0ψ 1ψ # Non-modular @objectnames ZSemion = PMFC{4, 1, 0, 1, 1, 0} II ϵI ϵϵ Iϵ @objectnames SemionSemion = PMFC{4, 1, 0, 1, 1, 1} II ϵI ϵϵ Iϵ +@objectnames sVecSemion = PMFC{4, 1, 0, 1, 1, 2} II Iϵ ψI ψϵ # Non-modular # @objectnames Z2Semion = PMFC{4, 1, 0, 1, 1, ?} -# @objectnames sVecSemion = = PMFC{4, 1, 0, 1, 1, ?} @objectnames SemionFib = PMFC{4, 1, 0, 2, 1, 1} II ϵI ϵτ Iτ @objectnames U1_2 = PMFC{4, 1, 2, 1, 2, 0} 0 1 2 3 @objectnames ZFib = PMFC{4, 1, 0, 5, 0, 1} II τI Iτ ττ @@ -68,7 +68,7 @@ _umtcs_lowrank_centralcharge = [ 1//1 => PMFC{2, 1, 0, 1, 1, 0}, # Semion, U1_1, SU2_1 -1//1 => PMFC{2, 1, 0, 1, 1, 1}, # TimeReversed{Semion} -14//5 => PMFC{2, 1, 0, 2, 0, 0}, # TimeReversed{Fib} - 14//5 => PMFC{2, 1, 0, 2, 0, 1}, # Fib + 14//5 => PMFC{2, 1, 0, 2, 0, 1}, # Fib, PSU2_3 ), Dict( 2//1 => PMFC{3, 1, 2, 1, 0, 1}, # Z3MTC From f5d44e1c2ad087b392d4b7ee187e70ea29587627 Mon Sep 17 00:00:00 2001 From: Chenqi Meng Date: Thu, 2 Apr 2026 15:53:26 +0800 Subject: [PATCH 07/11] Identified PSU2_9 --- src/aliases.jl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/aliases.jl b/src/aliases.jl index 15e3479..7daa965 100644 --- a/src/aliases.jl +++ b/src/aliases.jl @@ -14,6 +14,9 @@ const RepD5 = PMFC{4, 1, 0, 3, 0, 0} const RepD6 = PMFC{6, 1, 0, 2, 0, 0} const RepD7 = PMFC{5, 1, 0, 4, 0, 0} +# Rep[Q₈] +# const RepQ8 = PMFC{5, 1, 0, 1, ?, ?} + # Vec[Dₙ] const VecD3 = UFC{6, 1, 2, 1, 0} @@ -61,7 +64,7 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 @objectnames SU2_4 = PMFC{5, 1, 0, 3, 0, 0} 0 4 3 1 2 # @objectnames JK4 -# @objectnames PSU2_9 +@objectnames PSU2_9 = PMFC{5, 1, 0, 10, 0, 1} 0 8 2 6 4 _umtcs_lowrank_centralcharge = [ Dict( @@ -111,7 +114,8 @@ _umtcs_lowrank_centralcharge = [ # Cannot find TimeReversed{SU2_4}, but it should be here with PMFC{5, 1, 0, 3, 0, 1} (2//1, 2) => PMFC{5, 1, 0, 3, 1, 0}, # TimeReversed{JK4} http://dx.doi.org/10.1103/PhysRevA.92.012301 # Cannot find JK4, but it should be here somewhere with PMFC{5, 1, 0, 3, 1, 1} - # Cannot find PSU2_9 and its time-reversal, but they should be here somewhere with PMFC{5, 1, 0, x, y, z} with c = ± 16//11 + -16//11 => PMFC{5, 1, 0, 10, 0, 0}, # TimeReversed{PSU2_9} + 16//11 => PMFC{5, 1, 0, 10, 0, 1}, # PSU2_9 # Cannot find c = ± 18//7 UMTCs. They are not SimpleFusion. Should be PMFC{5, 2, ?, ?, ?, ?} ) ] From aa0eff3b1ee059568efbf0083b2b75bd15cce772 Mon Sep 17 00:00:00 2001 From: Chenqi Meng Date: Thu, 2 Apr 2026 18:20:57 +0800 Subject: [PATCH 08/11] Update aliases.jl --- src/aliases.jl | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/aliases.jl b/src/aliases.jl index 7daa965..8422078 100644 --- a/src/aliases.jl +++ b/src/aliases.jl @@ -37,6 +37,8 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 @objectnames ZVecS3 = ZVecS3 A B C F G H D E # Varia + +# All level-2 PMFCs are identified @objectnames Fib = PMFC{2, 1, 0, 2, 0, 0} I τ @objectnames sVec = PMFC{2, 1, 0, 1, 0, 1} I ψ # Non-modular @objectnames Semion = PMFC{2, 1, 0, 1, 1, 0} I ϵ @@ -44,26 +46,31 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 @objectnames SU2_1 = PMFC{2, 1, 0, 1, 1, 0} 0 1 @objectnames PSU2_3 = PMFC{2, 1, 0, 2, 0, 0} 0 2 +# All level-3 PMFCs are identified @objectnames Z3MTC = PMFC{3, 1, 2, 1, 0, 1} 0 1 2 @objectnames Ising = PMFC{3, 1, 0, 1, 1, 3} I ψ σ @objectnames SU2_2 = PMFC{3, 1, 0, 1, 0, 3} 0 2 1 +@objectnames PSU2_4 = PMFC{3, 1, 0, 2, 0, 1} 0 4 2 # Non-modular. {0, 4} form a Rep[Z₂] braided subcategory. @objectnames PSU2_5 = PMFC{3, 1, 0, 3, 0, 0} 0 4 2 + @objectnames ToricCode = PMFC{4, 1, 0, 1, 0, 2} I e m ψ -# @objectnames ThreeFermion = PMFC{4, 1, 0, 1, 0, 3} I f1 f2 f3 +# @objectnames ThreeFermion = PMFC{4, 1, 0, 1, 0, 3} I f1 f2 f3 # Not found. Should be here. @objectnames Z2sVec = PMFC{4, 1, 0, 1, 0, 1} 0I 1I 0ψ 1ψ # Non-modular @objectnames ZSemion = PMFC{4, 1, 0, 1, 1, 0} II ϵI ϵϵ Iϵ @objectnames SemionSemion = PMFC{4, 1, 0, 1, 1, 1} II ϵI ϵϵ Iϵ @objectnames sVecSemion = PMFC{4, 1, 0, 1, 1, 2} II Iϵ ψI ψϵ # Non-modular -# @objectnames Z2Semion = PMFC{4, 1, 0, 1, 1, ?} +# @objectnames Z2Semion = PMFC{4, 1, 0, 1, 1, ?} # Non-modular and not found. Should be here. @objectnames SemionFib = PMFC{4, 1, 0, 2, 1, 1} II ϵI ϵτ Iτ -@objectnames U1_2 = PMFC{4, 1, 2, 1, 2, 0} 0 1 2 3 +@objectnames PSU2_6 = PMFC{4, 1, 0, 4, 0, 0} 0 6 2 4 # Non-modular. Hard to distinguish 2 and 4. They seems to be equivalent. {0, 6} form a sVec braided subcategory. @objectnames ZFib = PMFC{4, 1, 0, 5, 0, 1} II τI Iτ ττ -# @objectnames FibFib = PMFC{4, 1, 0, 5, 0, 2} II τI Iτ ττ +# @objectnames FibFib = PMFC{4, 1, 0, 5, 0, 2} II τI Iτ ττ # Not found. Should be here. @objectnames PSU2_7 = PMFC{4, 1, 0, 6, 0, 0} 0 6 2 4 +@objectnames U1_2 = PMFC{4, 1, 2, 1, 2, 0} 0 1 2 3 @objectnames SU2_4 = PMFC{5, 1, 0, 3, 0, 0} 0 4 3 1 2 -# @objectnames JK4 +# @objectnames JK4 = PMFC{5, 1, 0, 3, 1, 1} 0 4 3 1 2 # Not found. Should be here. +@objectnames PSU2_8 = PMFC{5, 1, 0, 7, 0, 0} 0 8 2 6 4 # Non-modular. Hard to distinguish 2 and 6. They seems to be equivalent. {0, 8} form a Rep[Z₂] braided subcategory. @objectnames PSU2_9 = PMFC{5, 1, 0, 10, 0, 1} 0 8 2 6 4 _umtcs_lowrank_centralcharge = [ @@ -89,10 +96,10 @@ _umtcs_lowrank_centralcharge = [ ), Dict( (0//1, 1) => PMFC{4, 1, 0, 1, 0, 2}, # Toric code ≅ Z(Rep[Z₂]) - # 4//1 => PMFC{4, 1, 0, 1, 0, 3}, # ThreeFermion + # 4//1 => PMFC{4, 1, 0, 1, 0, 3}, # ThreeFermion Not found. Should be here. (0//1, 2) => PMFC{4, 1, 0, 1, 1, 0}, # Z(Semion) ≅ Semion ⊠ TimeReversed{Semion} 2//1 => PMFC{4, 1, 0, 1, 1, 1}, # Semion ⊠ Semion - # -2//1 => PMFC{4, 1, 0, 1, 1, ?}, # TimeReversed{Semion} ⊠ TimeReversed{Semion} + # -2//1 => PMFC{4, 1, 0, 1, 1, ?}, # TimeReversed{Semion} ⊠ TimeReversed{Semion} Not found. Should be here. 1//1 => PMFC{4, 1, 2, 1, 2, 0}, # U1_2 3//1 => PMFC{4, 1, 2, 1, 2, 1}, -3//1 => PMFC{4, 1, 2, 1, 2, 2}, @@ -103,7 +110,7 @@ _umtcs_lowrank_centralcharge = [ 9//5 => PMFC{4, 1, 0, 2, 1, 3}, # TimeReversed{Semion} ⊠ Fib 12//5 => PMFC{4, 1, 0, 5, 0, 0}, # TimeReversed{Fib} ⊠ TimeReversed{Fib} (0//1, 3) => PMFC{4, 1, 0, 5, 0, 1}, # TimeReversed{Fib} ⊠ Fib - # -12//5 => PMFC{4, 1, 0, 5, 0, 2}, # Fib ⊠ Fib + # -12//5 => PMFC{4, 1, 0, 5, 0, 2}, # Fib ⊠ Fib Not found. Should be here. 10//3 => PMFC{4, 1, 0, 6, 0, 0}, # PSU2_7 -10//3 => PMFC{4, 1, 0, 6, 0, 1}, # TimeReversed{PSU2_7} ), From c3d59006e669b404586277e4e7699f9b5fd7d00f Mon Sep 17 00:00:00 2001 From: Chenqi Meng Date: Thu, 2 Apr 2026 19:58:41 +0800 Subject: [PATCH 09/11] Update aliases.jl --- src/aliases.jl | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/aliases.jl b/src/aliases.jl index 8422078..5fe4776 100644 --- a/src/aliases.jl +++ b/src/aliases.jl @@ -38,7 +38,7 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 # Varia -# All level-2 PMFCs are identified +# All rank-2 PMFCs are identified @objectnames Fib = PMFC{2, 1, 0, 2, 0, 0} I τ @objectnames sVec = PMFC{2, 1, 0, 1, 0, 1} I ψ # Non-modular @objectnames Semion = PMFC{2, 1, 0, 1, 1, 0} I ϵ @@ -46,27 +46,29 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 @objectnames SU2_1 = PMFC{2, 1, 0, 1, 1, 0} 0 1 @objectnames PSU2_3 = PMFC{2, 1, 0, 2, 0, 0} 0 2 -# All level-3 PMFCs are identified -@objectnames Z3MTC = PMFC{3, 1, 2, 1, 0, 1} 0 1 2 -@objectnames Ising = PMFC{3, 1, 0, 1, 1, 3} I ψ σ +# All rank-3 PMFCs are identified @objectnames SU2_2 = PMFC{3, 1, 0, 1, 0, 3} 0 2 1 +@objectnames Ising = PMFC{3, 1, 0, 1, 1, 3} I ψ σ @objectnames PSU2_4 = PMFC{3, 1, 0, 2, 0, 1} 0 4 2 # Non-modular. {0, 4} form a Rep[Z₂] braided subcategory. @objectnames PSU2_5 = PMFC{3, 1, 0, 3, 0, 0} 0 4 2 +@objectnames Z3MTC = PMFC{3, 1, 2, 1, 0, 1} 0 1 2 - +@objectnames Z2sVec = PMFC{4, 1, 0, 1, 0, 1} 0I 1I 0ψ 1ψ # Non-modular @objectnames ToricCode = PMFC{4, 1, 0, 1, 0, 2} I e m ψ # @objectnames ThreeFermion = PMFC{4, 1, 0, 1, 0, 3} I f1 f2 f3 # Not found. Should be here. -@objectnames Z2sVec = PMFC{4, 1, 0, 1, 0, 1} 0I 1I 0ψ 1ψ # Non-modular @objectnames ZSemion = PMFC{4, 1, 0, 1, 1, 0} II ϵI ϵϵ Iϵ @objectnames SemionSemion = PMFC{4, 1, 0, 1, 1, 1} II ϵI ϵϵ Iϵ @objectnames sVecSemion = PMFC{4, 1, 0, 1, 1, 2} II Iϵ ψI ψϵ # Non-modular # @objectnames Z2Semion = PMFC{4, 1, 0, 1, 1, ?} # Non-modular and not found. Should be here. -@objectnames SemionFib = PMFC{4, 1, 0, 2, 1, 1} II ϵI ϵτ Iτ +@objectnames Z2Fib = PMFC{4, 1, 0, 2, 0, 2} 0I 1I 1τ 0τ # Non-modular. +@objectnames sVecFib = PMFC{4, 1, 0, 2, 0, 3} II ψI Iτ ψτ # Non-modular. +@objectnames SemionFib = PMFC{4, 1, 0, 2, 1, 1} II ϵI ϵτ Iτ # Others can be obtained by taking braided reverse to each layers respectively. @objectnames PSU2_6 = PMFC{4, 1, 0, 4, 0, 0} 0 6 2 4 # Non-modular. Hard to distinguish 2 and 4. They seems to be equivalent. {0, 6} form a sVec braided subcategory. @objectnames ZFib = PMFC{4, 1, 0, 5, 0, 1} II τI Iτ ττ # @objectnames FibFib = PMFC{4, 1, 0, 5, 0, 2} II τI Iτ ττ # Not found. Should be here. @objectnames PSU2_7 = PMFC{4, 1, 0, 6, 0, 0} 0 6 2 4 -@objectnames U1_2 = PMFC{4, 1, 2, 1, 2, 0} 0 1 2 3 +@objectnames sRepZ4 = PMFC{4, 1, 2, 1, 0, 2} 0 2 1 3 +@objectnames U1_2 = PMFC{4, 1, 2, 1, 2, 0} 0 2 1 3 @objectnames SU2_4 = PMFC{5, 1, 0, 3, 0, 0} 0 4 3 1 2 # @objectnames JK4 = PMFC{5, 1, 0, 3, 1, 1} 0 4 3 1 2 # Not found. Should be here. From c33bb31aadbdb75ebb39da5f757f5344918742ca Mon Sep 17 00:00:00 2001 From: Chenqi Meng Date: Thu, 2 Apr 2026 20:42:03 +0800 Subject: [PATCH 10/11] format --- src/aliases.jl | 92 +++++++++++++++++++++++++++----------------------- 1 file changed, 49 insertions(+), 43 deletions(-) diff --git a/src/aliases.jl b/src/aliases.jl index 5fe4776..af24c32 100644 --- a/src/aliases.jl +++ b/src/aliases.jl @@ -38,7 +38,7 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 # Varia -# All rank-2 PMFCs are identified +# All rank-2 PMFCs are identified! @objectnames Fib = PMFC{2, 1, 0, 2, 0, 0} I τ @objectnames sVec = PMFC{2, 1, 0, 1, 0, 1} I ψ # Non-modular @objectnames Semion = PMFC{2, 1, 0, 1, 1, 0} I ϵ @@ -46,10 +46,14 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 @objectnames SU2_1 = PMFC{2, 1, 0, 1, 1, 0} 0 1 @objectnames PSU2_3 = PMFC{2, 1, 0, 2, 0, 0} 0 2 -# All rank-3 PMFCs are identified +# All rank-3 PMFCs are identified! @objectnames SU2_2 = PMFC{3, 1, 0, 1, 0, 3} 0 2 1 @objectnames Ising = PMFC{3, 1, 0, 1, 1, 3} I ψ σ -@objectnames PSU2_4 = PMFC{3, 1, 0, 2, 0, 1} 0 4 2 # Non-modular. {0, 4} form a Rep[Z₂] braided subcategory. +@objectnames Ising1 = PMFC{3, 1, 0, 1, 1, 3} I ψ σ # c = 1//2 Ising type UMTC +@objectnames Ising3 = PMFC{3, 1, 0, 1, 0, 3} I ψ σ # c = 3//2 Ising type UMTC +@objectnames Ising5 = PMFC{3, 1, 0, 1, 0, 0} I ψ σ # c = 5//2 Ising type UMTC +@objectnames Ising7 = PMFC{3, 1, 0, 1, 1, 0} I ψ σ # c = 7//2 Ising type UMTC +@objectnames PSU2_4 = PMFC{3, 1, 0, 2, 0, 1} 0 4 2 # Non-modular. {0, 4} form a Rep[Z₂] braided subcategory. Have the same fusion rule as Rep[D₃], but different braiding. @objectnames PSU2_5 = PMFC{3, 1, 0, 3, 0, 0} 0 4 2 @objectnames Z3MTC = PMFC{3, 1, 2, 1, 0, 1} 0 1 2 @@ -62,14 +66,16 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 # @objectnames Z2Semion = PMFC{4, 1, 0, 1, 1, ?} # Non-modular and not found. Should be here. @objectnames Z2Fib = PMFC{4, 1, 0, 2, 0, 2} 0I 1I 1τ 0τ # Non-modular. @objectnames sVecFib = PMFC{4, 1, 0, 2, 0, 3} II ψI Iτ ψτ # Non-modular. -@objectnames SemionFib = PMFC{4, 1, 0, 2, 1, 1} II ϵI ϵτ Iτ # Others can be obtained by taking braided reverse to each layers respectively. +@objectnames SemionFib = PMFC{4, 1, 0, 2, 1, 1} II ϵI ϵτ Iτ # Others can be obtained by taking braided-reverse to each layers respectively. +# How to understand PMFC{4, 1, 0, 3, 0, 1} and PMFC{4, 1, 0, 3, 0, 2}? They are non-modular, with the same fusion rule as Rep[D₅], with the Muger center Rep[Z₂]. What is its minimal modular extension? @objectnames PSU2_6 = PMFC{4, 1, 0, 4, 0, 0} 0 6 2 4 # Non-modular. Hard to distinguish 2 and 4. They seems to be equivalent. {0, 6} form a sVec braided subcategory. @objectnames ZFib = PMFC{4, 1, 0, 5, 0, 1} II τI Iτ ττ # @objectnames FibFib = PMFC{4, 1, 0, 5, 0, 2} II τI Iτ ττ # Not found. Should be here. @objectnames PSU2_7 = PMFC{4, 1, 0, 6, 0, 0} 0 6 2 4 -@objectnames sRepZ4 = PMFC{4, 1, 2, 1, 0, 2} 0 2 1 3 +@objectnames sRepZ4 = PMFC{4, 1, 2, 1, 0, 2} 0 2 1 3 # Non-modular. {0, 2} form a Rep[Z₂] braided subcategory. @objectnames U1_2 = PMFC{4, 1, 2, 1, 2, 0} 0 2 1 3 + @objectnames SU2_4 = PMFC{5, 1, 0, 3, 0, 0} 0 4 3 1 2 # @objectnames JK4 = PMFC{5, 1, 0, 3, 1, 1} 0 4 3 1 2 # Not found. Should be here. @objectnames PSU2_8 = PMFC{5, 1, 0, 7, 0, 0} 0 8 2 6 4 # Non-modular. Hard to distinguish 2 and 6. They seems to be equivalent. {0, 8} form a Rep[Z₂] braided subcategory. @@ -77,54 +83,54 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 _umtcs_lowrank_centralcharge = [ Dict( - 1//1 => PMFC{2, 1, 0, 1, 1, 0}, # Semion, U1_1, SU2_1 - -1//1 => PMFC{2, 1, 0, 1, 1, 1}, # TimeReversed{Semion} - -14//5 => PMFC{2, 1, 0, 2, 0, 0}, # TimeReversed{Fib} - 14//5 => PMFC{2, 1, 0, 2, 0, 1}, # Fib, PSU2_3 + 1 // 1 => PMFC{2, 1, 0, 1, 1, 0}, # Semion, U1_1, SU2_1 + -1 // 1 => PMFC{2, 1, 0, 1, 1, 1}, # TimeReversed{Semion} + -14 // 5 => PMFC{2, 1, 0, 2, 0, 0}, # TimeReversed{Fib} + 14 // 5 => PMFC{2, 1, 0, 2, 0, 1}, # Fib, PSU2_3 ), Dict( - 2//1 => PMFC{3, 1, 2, 1, 0, 1}, # Z3MTC - -2//1 => PMFC{3, 1, 2, 1, 0, 2}, # TimeReversed{Z3MTC} - 5//2 => PMFC{3, 1, 0, 1, 0, 0}, # The following are 8-fold ways of Ising-type UMTCs - -3//2 => PMFC{3, 1, 0, 1, 0, 1}, # TimeReversed{SU2_2} - -5//2 => PMFC{3, 1, 0, 1, 0, 2}, - 3//2 => PMFC{3, 1, 0, 1, 0, 3}, # SU2_2 - 7//2 => PMFC{3, 1, 0, 1, 1, 0}, - -1//2 => PMFC{3, 1, 0, 1, 1, 1}, # TimeReversed{Ising} - -7//2 => PMFC{3, 1, 0, 1, 1, 2}, - 1//2 => PMFC{3, 1, 0, 1, 1, 3}, # Ising - 8//7 =>PMFC{3, 1, 0, 3, 0, 0}, # PSU2_5 - -8//7 => PMFC{3, 1, 0, 3, 0, 1}, # TimeReversed{PSU2_5} + 2 // 1 => PMFC{3, 1, 2, 1, 0, 1}, # Z3MTC + -2 // 1 => PMFC{3, 1, 2, 1, 0, 2}, # TimeReversed{Z3MTC} + 5 // 2 => PMFC{3, 1, 0, 1, 0, 0}, # The following are 8-fold ways of Ising-type UMTCs + -3 // 2 => PMFC{3, 1, 0, 1, 0, 1}, # TimeReversed{SU2_2} + -5 // 2 => PMFC{3, 1, 0, 1, 0, 2}, + 3 // 2 => PMFC{3, 1, 0, 1, 0, 3}, # SU2_2 + 7 // 2 => PMFC{3, 1, 0, 1, 1, 0}, + -1 // 2 => PMFC{3, 1, 0, 1, 1, 1}, # TimeReversed{Ising} + -7 // 2 => PMFC{3, 1, 0, 1, 1, 2}, + 1 // 2 => PMFC{3, 1, 0, 1, 1, 3}, # Ising + 8 // 7 => PMFC{3, 1, 0, 3, 0, 0}, # PSU2_5 + -8 // 7 => PMFC{3, 1, 0, 3, 0, 1}, # TimeReversed{PSU2_5} ), Dict( - (0//1, 1) => PMFC{4, 1, 0, 1, 0, 2}, # Toric code ≅ Z(Rep[Z₂]) + (0 // 1, 1) => PMFC{4, 1, 0, 1, 0, 2}, # Toric code ≅ Z(Rep[Z₂]) # 4//1 => PMFC{4, 1, 0, 1, 0, 3}, # ThreeFermion Not found. Should be here. - (0//1, 2) => PMFC{4, 1, 0, 1, 1, 0}, # Z(Semion) ≅ Semion ⊠ TimeReversed{Semion} - 2//1 => PMFC{4, 1, 0, 1, 1, 1}, # Semion ⊠ Semion + (0 // 1, 2) => PMFC{4, 1, 0, 1, 1, 0}, # Z(Semion) ≅ Semion ⊠ TimeReversed{Semion} + 2 // 1 => PMFC{4, 1, 0, 1, 1, 1}, # Semion ⊠ Semion # -2//1 => PMFC{4, 1, 0, 1, 1, ?}, # TimeReversed{Semion} ⊠ TimeReversed{Semion} Not found. Should be here. - 1//1 => PMFC{4, 1, 2, 1, 2, 0}, # U1_2 - 3//1 => PMFC{4, 1, 2, 1, 2, 1}, - -3//1 => PMFC{4, 1, 2, 1, 2, 2}, - -1//1 => PMFC{4, 1, 2, 1, 2, 3}, # TimeReversed{U1_2} - -9//5 => PMFC{4, 1, 0, 2, 1, 0}, # Semion ⊠ TimeReversed{Fib} - 19//5 => PMFC{4, 1, 0, 2, 1, 1}, # Semion ⊠ Fib - -19//5 => PMFC{4, 1, 0, 2, 1, 2}, # TimeReversed{Semion} ⊠ TimeReversed{Fib} - 9//5 => PMFC{4, 1, 0, 2, 1, 3}, # TimeReversed{Semion} ⊠ Fib - 12//5 => PMFC{4, 1, 0, 5, 0, 0}, # TimeReversed{Fib} ⊠ TimeReversed{Fib} - (0//1, 3) => PMFC{4, 1, 0, 5, 0, 1}, # TimeReversed{Fib} ⊠ Fib + 1 // 1 => PMFC{4, 1, 2, 1, 2, 0}, # U1_2 + 3 // 1 => PMFC{4, 1, 2, 1, 2, 1}, + -3 // 1 => PMFC{4, 1, 2, 1, 2, 2}, + -1 // 1 => PMFC{4, 1, 2, 1, 2, 3}, # TimeReversed{U1_2} + -9 // 5 => PMFC{4, 1, 0, 2, 1, 0}, # Semion ⊠ TimeReversed{Fib} + 19 // 5 => PMFC{4, 1, 0, 2, 1, 1}, # Semion ⊠ Fib + -19 // 5 => PMFC{4, 1, 0, 2, 1, 2}, # TimeReversed{Semion} ⊠ TimeReversed{Fib} + 9 // 5 => PMFC{4, 1, 0, 2, 1, 3}, # TimeReversed{Semion} ⊠ Fib + 12 // 5 => PMFC{4, 1, 0, 5, 0, 0}, # TimeReversed{Fib} ⊠ TimeReversed{Fib} + (0 // 1, 3) => PMFC{4, 1, 0, 5, 0, 1}, # TimeReversed{Fib} ⊠ Fib # -12//5 => PMFC{4, 1, 0, 5, 0, 2}, # Fib ⊠ Fib Not found. Should be here. - 10//3 => PMFC{4, 1, 0, 6, 0, 0}, # PSU2_7 - -10//3 => PMFC{4, 1, 0, 6, 0, 1}, # TimeReversed{PSU2_7} + 10 // 3 => PMFC{4, 1, 0, 6, 0, 0}, # PSU2_7 + -10 // 3 => PMFC{4, 1, 0, 6, 0, 1}, # TimeReversed{PSU2_7} ), Dict( - 4//1 => PMFC{5, 1, 4, 1, 0, 1}, - 0//1 => PMFC{5, 1, 4, 1, 0, 2}, - (2//1, 1) => PMFC{5, 1, 0, 3, 0, 0}, # SU2_4 + 4 // 1 => PMFC{5, 1, 4, 1, 0, 1}, + 0 // 1 => PMFC{5, 1, 4, 1, 0, 2}, + (2 // 1, 1) => PMFC{5, 1, 0, 3, 0, 0}, # SU2_4 # Cannot find TimeReversed{SU2_4}, but it should be here with PMFC{5, 1, 0, 3, 0, 1} - (2//1, 2) => PMFC{5, 1, 0, 3, 1, 0}, # TimeReversed{JK4} http://dx.doi.org/10.1103/PhysRevA.92.012301 + (2 // 1, 2) => PMFC{5, 1, 0, 3, 1, 0}, # TimeReversed{JK4} http://dx.doi.org/10.1103/PhysRevA.92.012301 # Cannot find JK4, but it should be here somewhere with PMFC{5, 1, 0, 3, 1, 1} - -16//11 => PMFC{5, 1, 0, 10, 0, 0}, # TimeReversed{PSU2_9} - 16//11 => PMFC{5, 1, 0, 10, 0, 1}, # PSU2_9 + -16 // 11 => PMFC{5, 1, 0, 10, 0, 0}, # TimeReversed{PSU2_9} + 16 // 11 => PMFC{5, 1, 0, 10, 0, 1}, # PSU2_9 # Cannot find c = ± 18//7 UMTCs. They are not SimpleFusion. Should be PMFC{5, 2, ?, ?, ?, ?} - ) + ), ] From eb3802bd7a41789b6b84089247f260e7c8cf8d75 Mon Sep 17 00:00:00 2001 From: Chenqi Meng Date: Mon, 20 Apr 2026 11:19:50 +0800 Subject: [PATCH 11/11] More systematic alias --- src/aliases.jl | 59 +++++++++++++++++++++++++++++++++++++++---------- test/aliases.jl | 5 +++++ 2 files changed, 52 insertions(+), 12 deletions(-) create mode 100644 test/aliases.jl diff --git a/src/aliases.jl b/src/aliases.jl index af24c32..fc7c711 100644 --- a/src/aliases.jl +++ b/src/aliases.jl @@ -38,27 +38,63 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 # Varia +# --- SU2 --- +@objectnames SU2_1 = PMFC{2, 1, 0, 1, 1, 0} _0 _1 +@objectnames SU2_2 = PMFC{3, 1, 0, 1, 0, 3} _0 _2 _1 +@objectnames SU2_3 = PMFC{4, 1, 0, 2, 1, 3} _0 _3 _1 _2 +@objectnames SU2_4 = PMFC{5, 1, 0, 3, 0, 0} _0 _4 _3 _1 _2 +@objectnames SU2_5 = PMFC{6, 1, 0, 6, 0, 1} _0 _5 _1 _4 _2 _3 + +# --- PSU2 --- +@objectnames PSU2_3 = PMFC{2, 1, 0, 2, 0, 0} _0 _2 +@objectnames PSU2_4 = PMFC{3, 1, 0, 2, 0, 1} _0 _4 _2 # Non-modular. {0, 4} form a Rep[Z₂] braided subcategory. Isomorphic to Rep[D₃] as UFC, but has different braiding. +@objectnames PSU2_5 = PMFC{3, 1, 0, 3, 0, 0} _0 _4 _2 +@objectnames PSU2_6 = PMFC{4, 1, 0, 4, 0, 0} _0 _6 _4 _2 # Non-modular. Hard to distinguish 2 and 4. They seems to be equivalent. {0, 6} form a sVec braided subcategory. +@objectnames PSU2_7 = PMFC{4, 1, 0, 6, 0, 0} _0 _6 _2 _4 +@objectnames PSU2_8 = PMFC{5, 1, 0, 7, 0, 0} _0 _8 _2 _6 _4 # Non-modular. Hard to distinguish 2 and 6. They seems to be equivalent. {0, 8} form a Rep[Z₂] braided subcategory. +@objectnames PSU2_9 = PMFC{5, 1, 0, 10, 0, 1} _0 _8 _2 _6 _4 +@objectnames PSU2_10 = PMFC{6, 1, 0, 16, 0, 0} _0 _10 _8 _2 _6 _4 # Non-modular +@objectnames PSU2_11 = PMFC{6, 1, 0, 18, 0, 1} _0 _10 _2 _8 _4 _6 + +# --- Kitaev 16-fold way --- +@objectnames Kitaev16_0 = PMFC{4, 1, 0, 1, 0, 2} I e m ψ +@objectnames Kitaev16_1 = PMFC{3, 1, 0, 1, 1, 3} I ψ σ +@objectnames Kitaev16_2 = PMFC{4, 1, 2, 1, 2, 0} _0 _2 _1 _3 +@objectnames Kitaev16_3 = PMFC{3, 1, 0, 1, 0, 3} I ψ σ +@objectnames Kitaev16_4 = PMFC{4, 1, 0, 1, 1, 1} II ϵI ϵϵ Iϵ +@objectnames Kitaev16_5 = PMFC{3, 1, 0, 1, 0, 0} I ψ σ +@objectnames Kitaev16_6 = PMFC{4, 1, 2, 1, 2, 1} _0 _2 _1 _3 +@objectnames Kitaev16_7 = PMFC{3, 1, 0, 1, 1, 0} I ψ σ +@objectnames Kitaev16_8 = PMFC{4, 1, 0, 1, 0, :?} I e m ψ +@objectnames Kitaev16_9 = PMFC{3, 1, 0, 1, 1, 2} I ψ σ +@objectnames Kitaev16_10 = PMFC{4, 1, 2, 1, 2, 2} _0 _2 _1 _3 +@objectnames Kitaev16_11 = PMFC{3, 1, 0, 1, 0, 2} I ψ σ +@objectnames Kitaev16_12 = PMFC{4, 1, 0, 1, 1, :?} II ϵI ϵϵ Iϵ +@objectnames Kitaev16_13 = PMFC{3, 1, 0, 1, 0, 1} I ψ σ +@objectnames Kitaev16_14 = PMFC{4, 1, 2, 1, 2, 3} _0 _2 _1 _3 +@objectnames Kitaev16_15 = PMFC{3, 1, 0, 1, 1, 1} I ψ σ + # All rank-2 PMFCs are identified! @objectnames Fib = PMFC{2, 1, 0, 2, 0, 0} I τ @objectnames sVec = PMFC{2, 1, 0, 1, 0, 1} I ψ # Non-modular @objectnames Semion = PMFC{2, 1, 0, 1, 1, 0} I ϵ @objectnames U1_1 = PMFC{2, 1, 0, 1, 1, 0} 0 1 -@objectnames SU2_1 = PMFC{2, 1, 0, 1, 1, 0} 0 1 -@objectnames PSU2_3 = PMFC{2, 1, 0, 2, 0, 0} 0 2 + + # All rank-3 PMFCs are identified! -@objectnames SU2_2 = PMFC{3, 1, 0, 1, 0, 3} 0 2 1 + @objectnames Ising = PMFC{3, 1, 0, 1, 1, 3} I ψ σ @objectnames Ising1 = PMFC{3, 1, 0, 1, 1, 3} I ψ σ # c = 1//2 Ising type UMTC @objectnames Ising3 = PMFC{3, 1, 0, 1, 0, 3} I ψ σ # c = 3//2 Ising type UMTC @objectnames Ising5 = PMFC{3, 1, 0, 1, 0, 0} I ψ σ # c = 5//2 Ising type UMTC @objectnames Ising7 = PMFC{3, 1, 0, 1, 1, 0} I ψ σ # c = 7//2 Ising type UMTC -@objectnames PSU2_4 = PMFC{3, 1, 0, 2, 0, 1} 0 4 2 # Non-modular. {0, 4} form a Rep[Z₂] braided subcategory. Have the same fusion rule as Rep[D₃], but different braiding. -@objectnames PSU2_5 = PMFC{3, 1, 0, 3, 0, 0} 0 4 2 + + @objectnames Z3MTC = PMFC{3, 1, 2, 1, 0, 1} 0 1 2 @objectnames Z2sVec = PMFC{4, 1, 0, 1, 0, 1} 0I 1I 0ψ 1ψ # Non-modular -@objectnames ToricCode = PMFC{4, 1, 0, 1, 0, 2} I e m ψ + # @objectnames ThreeFermion = PMFC{4, 1, 0, 1, 0, 3} I f1 f2 f3 # Not found. Should be here. @objectnames ZSemion = PMFC{4, 1, 0, 1, 1, 0} II ϵI ϵϵ Iϵ @objectnames SemionSemion = PMFC{4, 1, 0, 1, 1, 1} II ϵI ϵϵ Iϵ @@ -67,19 +103,18 @@ Base.getindex(::CenterTable, ::Type{VecS3}) = ZVecS3 @objectnames Z2Fib = PMFC{4, 1, 0, 2, 0, 2} 0I 1I 1τ 0τ # Non-modular. @objectnames sVecFib = PMFC{4, 1, 0, 2, 0, 3} II ψI Iτ ψτ # Non-modular. @objectnames SemionFib = PMFC{4, 1, 0, 2, 1, 1} II ϵI ϵτ Iτ # Others can be obtained by taking braided-reverse to each layers respectively. -# How to understand PMFC{4, 1, 0, 3, 0, 1} and PMFC{4, 1, 0, 3, 0, 2}? They are non-modular, with the same fusion rule as Rep[D₅], with the Muger center Rep[Z₂]. What is its minimal modular extension? -@objectnames PSU2_6 = PMFC{4, 1, 0, 4, 0, 0} 0 6 2 4 # Non-modular. Hard to distinguish 2 and 4. They seems to be equivalent. {0, 6} form a sVec braided subcategory. +# How to understand PMFC{4, 1, 0, 3, 0, 1} and PMFC{4, 1, 0, 3, 0, 2}? They are non-modular, isomorphic to Rep[D₅] as UFC, with the Muger center Rep[Z₂]. What is its minimal modular extension? + @objectnames ZFib = PMFC{4, 1, 0, 5, 0, 1} II τI Iτ ττ # @objectnames FibFib = PMFC{4, 1, 0, 5, 0, 2} II τI Iτ ττ # Not found. Should be here. -@objectnames PSU2_7 = PMFC{4, 1, 0, 6, 0, 0} 0 6 2 4 + @objectnames sRepZ4 = PMFC{4, 1, 2, 1, 0, 2} 0 2 1 3 # Non-modular. {0, 2} form a Rep[Z₂] braided subcategory. +# Some other Z4PMFCs are not identified: do not know how to understand. Some are not found. @objectnames U1_2 = PMFC{4, 1, 2, 1, 2, 0} 0 2 1 3 -@objectnames SU2_4 = PMFC{5, 1, 0, 3, 0, 0} 0 4 3 1 2 + # @objectnames JK4 = PMFC{5, 1, 0, 3, 1, 1} 0 4 3 1 2 # Not found. Should be here. -@objectnames PSU2_8 = PMFC{5, 1, 0, 7, 0, 0} 0 8 2 6 4 # Non-modular. Hard to distinguish 2 and 6. They seems to be equivalent. {0, 8} form a Rep[Z₂] braided subcategory. -@objectnames PSU2_9 = PMFC{5, 1, 0, 10, 0, 1} 0 8 2 6 4 _umtcs_lowrank_centralcharge = [ Dict( diff --git a/test/aliases.jl b/test/aliases.jl new file mode 100644 index 0000000..5484b09 --- /dev/null +++ b/test/aliases.jl @@ -0,0 +1,5 @@ +@testset "Test all aliases" begin + for (alias, name) in aliases + @test alias == name + end +end \ No newline at end of file