-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A Haskell implementation for combining SU(n) multiplets. -- -- See README at https://github.com/mdrslmr/MultipletCombiner @package MultipletCombiner @version 0.0.2 -- | This module contains operators and functions for combining SU(n) -- multiplets according to the algorithm presented by C.G. Wohl in the -- PDG book 2021 section 48 -- https://pdg.lbl.gov/2022/reviews/rpp2022-rev-young-diagrams.pdf. -- -- It provides the operators (><) and (>><) -- for combining multiplets, and the function multi and -- multis to calculate the multiplicities, e.g.: -- --
-- [1,0] >< [0,1] = [[1,1],[0,0]] -- -- multi [1,0] = 3 -- -- [1,0] >< [1,0] >>< [1,0] = [[3,0],[1,1],[1,1],[0,0]] -- -- multis $ [1,0] >< [1,0] >>< [1,0] = [10,8,8,1] ---- -- Example for combinaing two multiplets using Young-Diagrams: -- --
-- (0,0)x(0,0) = (0,0) -- # a # a # a # a -- # (x) b = # > # b > # b -- # c # # # c -- -- (1,0)x(1,0) = (step ->) (2,0) + (step ->) (0,1) -- # # a a # # a a # # a a # # a # # a -- # x b = # > # b + # a > # a b -- # c # # c # # c --module Physics.MultipletCombiner -- | Produce multiplet structure from combining two SU(n) multiplets (><) :: [Int] -> [Int] -> [[Int]] -- | Produce multiplet structure from combining a list of multiplets with -- another multiplet (>><) :: [[Int]] -> [Int] -> [[Int]] -- | Calculate the multiplicity of a multiplet multi :: [Int] -> Int -- | Calculate the multiplicities of a list of multiplets multis :: [[Int]] -> [Int] -- | Basic type used for a Tableau/Diagram data Tableau -- | Build a tableau bottom up from it's label. ytSymbols :: [Int] -> Tableau -- | Build multiple tableaux from multiple labels. ytsSymbols :: [[Int]] -> [Tableau] -- | Show like function to display a list of tableaux. showt :: [Tableau] -> String -- | Calculate the number representation from a tableau. ytNums :: Tableau -> [Int] -- | Calculate the list of labels fro a list of tableaux. ytsNums :: [Tableau] -> [[Int]] -- | Check for the string for being composed of admissible letters. | -- Admissible and not admissible examples: -- --
-- admis "aabacdaebbcbd" = True -- -- last letter not admissable -- admis "abacae" = False -- admis "abacdec" = False --admis :: String -> Bool -- | Extract one strictly ordered chain from the given string, starting at -- the given character. unchain :: Char -> String -> Maybe String -- | Convert a tableau of symbols into a tableau of letters sym2letter :: Tableau -> Tableau -- | Append a string to the i'th line of a tableau. appendAt :: Int -> String -> Tableau -> Tableau -- | Read a string of letters from a given tableau to be checked for -- admissibility. readTab :: Tableau -> String -- | Produce a list of placing-coordinates of all combinations for a -- tableau with t rows to place c character. -- -- E.g.: 3 rows, two characters -> 3*3 possible placements: -- -- 1:1, 1:2, 1:3, 2:1, 2:2, 2:3, 3:1, 3:2, 3:3 combis :: Int -> Int -> [[Int]] -- | Create multiple new tableau using newtab given one tableau and -- one line of a right side tableau. -- -- e.g.: tabs1 (ytSymbols [1,1,1]) "a a " tabs1 :: Tableau -> String -> [Tableau] -- | Create all tableaux from two given tableaux. allTsFromSyms :: Tableau -> Tableau -> [Tableau] -- | allTs [1,0] [1,1] -- -- Create all tableau from two tableaux identified by their labels. -- --
-- putStrLn $ showt $ noDoubs.admisTabs $ allTs [1,1] [1,1] -- ytsNums $ noDoubs.admisTabs $ allTs [1,1] [1,1] -- [[2,2],[3,0],[0,3],[1,1],[1,1],[0,0]] -- --allTs :: [Int] -> [Int] -> [Tableau] instance GHC.Classes.Eq Physics.MultipletCombiner.Tableau instance GHC.Show.Show Physics.MultipletCombiner.Tableau