-- 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