úÎï(ãĀĻ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧ+Anders Claesson <anders.claesson@gmail.com>None?By convention, a member of Perm0 is a permutation of some  finite subset of [0..]. %A Lehmercode is a vector of integers w such w!i <= length w - 1 - i  for each i in [0..length w - 1]. unrankLehmercode n rank is the rank-th Lehmercode of length n. )Build a permutation from its Lehmercode. )A random Lehmercode of the given length. +The list of Lehmercodes of a given length. 3The size of a permutation; the number of elements. %The list of images of a permutation. *Make a permutation from a list of images. act u v is the permutation w defined by w(u(i)) = v(i).  inflate w vs is the  inflation of w by vs. unrankPerm n rank is the rank -th (Myrvold & Ruskey) permutation of length n. *A random permutation of the given length. sym n is the list of permutations of [0..n-1] (the symmetric group). .The identity permutation of the given length. )The reverse of the identity permutation. sti w* is the inverse of the standardization of w (a  permutation on [0..length w-1] ). E.g., sti <4,9,2> ==  <2,0,1>. The standardization map.  ordiso u v m# determines whether the subword in v specified by  m is order isomorphic to u. simple w determines whether w is simple copies subsets p w2 is the list of bitmasks that represent copies of p in w. avoiders subsets st ps ws is the list of permutations in ws  avoiding the patterns in ps. reverse < a_1,...,a_n> == < a_n,,...,a_1>. E.g., reverse  <9,3,7,2> == <2,7,3,9>.  complement < a_1,...,a_n> == < b_1,,...,b_n>, where b_i = n - a_i - 1.  E.g.,  complement < 3,4,0,1,2> == < 1,0,4,3,2>.  inverse w% is the group theoretical inverse of w. E.g.,  inverse <1,2,0> == <2,0,1>. 3The clockwise rotatation through 90 degrees. E.g.,  rotate <1,0,2> == <1,2,0>. *First (left-most) value of a permutation. *Last (right-most) value of a permutation. $The number of left-to-right minima. $The number of left-to-right maxima. The right-most increasing run. The right-most decreasing run. The number of ascents. !The number of descents. "The number of inversions. #The major index. $The co-major index. %The number of peaks. &The number of valleys. 'The number of double ascents. (The number of double descents. )$The number of left-to-right minima. *$The number of left-to-right maxima. +The left-most increasing run. ,The left-most decreasing run. -The number of excedances. .The number of fixed points. /The number of cycles. 0The number of components. 1 The number of skew components. 2Rank as defined by Elizalde & Pak. 3%Dimension (largest non-fixed-point). 4The number of small ascents. 5The number of small descents. 6,The set of indices of left-to-right maxima. 7,The set of indices of right-to-left maxima. 8"The set of indices of components. 9One pass of stack-sort. :One pass of bubble-sort. ;'Delete the element at a given position <Lexicographically, the next Ļ with the same Hamming weight. = onesCUInt k m gives the k( smallest indices whose bits are set in m. >JLexicographically, the next integral number with the same Hamming weight. ^ĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃ Ä ÅÆ !"#$%&'()*+,-./012345678Į9:;<=>?  !"#$%&'()*+,-./0123456789:;<=>?  !-./"#$%&'()*+,0123456789:;=<>^ĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃ Ä ÅÆ !"#$%&'()*+,-./012345678Į9:;<=>+Anders Claesson <anders.claesson@gmail.com>None4ČBLexicographically, the next bitmask with the same Hamming weight. Éones k m- is the set of indices whose bits are set in  m. Default implementation: < ones m = fromListN (popCount m) $ filter (testBit m) [0..] ?=A set is represented by an increasing vector of non-negative  integers. @8The class of permutations. Minimal complete definition: A  B and D!. The default implementations of C and   neutralize4 can be somewhat slow, so you may want to implement  them as well. A:The standardization map. If there is an underlying linear  order on a then st# is determined by the unique order  preserving map from [0..]! to that order. In any case, the ? standardization map should be equivariant with respect to the 7 group action defined below; i.e., it should hold that  st (u `act` v) == u `act` st v B A (left)  group action of I on a. As for any group  action it should hold that M (u `act` v) `act` w == u `act` (v `act` w) && neutralize u `act` v == v CCThe size of a permutation. The default implementation derived from   size == size . st %This is not a circular definition as C on I is 5 implemented independently. If the implementation of A is ; slow, then it can be worth while to override the standard < definiton; any implementation should, however, satisfy the  identity above. D,The identity permutation of the given size. E3The group theoretical inverse. It should hold that   inverse == unst . inverse . st (and this is the default implementation. F.Predicate determining if two permutations are 3 order-isomorphic. The default implementation uses   u `ordiso` v == u == st v Equivalently, one could use 8 u `ordiso` v == inverse u `act` v == idperm (size u) G<The inverse of the standardization function. For efficiency A reasons we make the size of the permutation an argument to this  function. It should hold that   unst n w == w `act` idperm n >and this is the default implementation. An un-standardization 0 function without the size argument is given by H below. HThe inverse of A. It should hold that   unst w == unstn (size w) w (and this is the default implementation. IBy a standard permutation! we shall mean a permutations of  [0..k-1]. J*Convert a standard permutation to a list. K<Convert a list to a standard permutation. The list should a  permutation of the elements [0..k-1] for some positive k. No  checks for this are done. LQThe list of standard permutations of the given size (the symmetric group). E.g., + sym 2 == [fromList [0,1], fromList [1,0]] MThe empty permutation. NThe one letter permutation. O#Convert a permutation to a vector. P:Convert a vector to a permutation. The vector should be a  permutation of the elements [0..k-1] for some positive k. No  checks for this are done. Q1The bijective function defined by a permutation. RGeneralize a function on I$ to a function on any permutations:  generalize f = unst . f . st SLike R$ but for functions of two variables T@Sort a list of permutations with respect to the standardization  and remove duplicates U*Cast a permutation of one type to another VThe  direct sum of two permutations. W*The direct sum of a list of permutations. XThe skew sum of two permutations. Y(The skew sum of a list of permutations. Z inflate w vs is the  inflation of w by vs . It is the  permutation of length sum (map size vs) obtained by replacing  each entry w!i, by an interval that is order isomorphic to vs!i : in such a way that the intervals are order isomorphic to w. In  particular, + u \+\ v == inflate (fromList [0,1]) [u,v] + u /-/ v == inflate (fromList [1,0]) [u,v] [unrankPerm u rank is the rank -th (Myrvold & Ruskey)  permutation of size n. E.g., # unrankPerm 9 88888 == "561297843" \ randomPerm n! is a random permutation of size n. ](All permutations of a given size. E.g., 2 perms 3 == ["123","213","321","132","231","312"] ^One pass of stack-sort. _One pass of bubble-sort. ` copiesOf p w3 is the list of (indices of) copies of the pattern  p in the permutation w. E.g., \ copiesOf (st "21") "2431" == [fromList [1,2],fromList [0,3],fromList [1,3],fromList [2,3]] a avoids w ps is a predicate determining if w avoids the patterns ps. bavoiders ps vs is the list of permutations in vs avoiding the  patterns ps'. This is equivalent to the definition  $ avoiders ps = filter (`avoids` ps) but is usually much faster. cav ps n is the list of permutations of [0..n-1] avoiding the  patterns ps. E.g., H map (length . av [st "132", st "321"]) [1..8] == [1,2,4,7,11,16,22,29] d'Delete the element at a given position e'The list of all single point deletions f?The list of permutations that are contained in at least one of  the given permutaions g?Extend a permutation by inserting a new largest element at the  given position h(The list of all single point extensions i,The set of indices of left-to-right maxima. j,The set of indices of left-to-right minima. k,The set of indices of right-to-left maxima. l,The set of indices of right-to-left minima. m"The set of indices of components. n'The set of indices of skew components. o:A predicate determining if a given permutation is simple. p subsets n k is the list of subsets of [0..n-1] with k  elements. EĘČÉ?@ABCDEFGHIËĖJKLÍÎÏMNOPQÐŅRSTUVWXYZ[\]^_`abcdefghijklmnoŌpÓÔÕÖŨØŲÚ2?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop2IJKL@ABCDEFGHMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno?p9ĘČÉ?@ABCDEFGHIËĖJKLÍÎÏMNOPQÐŅRSTUVWXYZ[\]^_`abcdefghijklmnoŌpÓÔÕÖŨØŲÚ+Anders Claesson <anders.claesson@gmail.com>Noneq,Ration by 0 degrees, i.e. the identity map. r Ration by 90 degrees clockwise. s(Ration by 2*90 = 180 degrees clockwise. t(Ration by 3*90 = 270 degrees clockwise. u2Reflection through a horizontal axis (also called ). v0Reflection through a vertical axis (also called ‚). w2Reflection through the main diagonal (also called ƒ). x&Reflection through the anti-diagonal. yEThe dihedral group of order 8 (the symmetries of a square); that is, ' d8 = [r0, r1, r2, r3, s0, s1, s2, s3] z:The Klein four-group (the symmetries of a non-equilateral  rectangle); that is,  klein4 = [r0, r2, s0, s1] { orbit fs x is the orbit of x under the group of function fs. E.g., 6 orbit klein4 "2314" == ["1423","2314","3241","4132"] |symmetryClasses fs xs* is the list of equivalence classes under  the action of the group of functions fs. }%Symmetry classes with respect to D8. ~(Symmetry classes with respect to Klein4  id = r0€  rotate = r1 complement = s0‚  reverse = s1ƒ  inverse = s2qrstuvwxyz{|}~€‚ƒqrstuvwxyz{|}~€‚ƒqrstuvwxyz{|}~€‚ƒqrstuvwxyz{|}~€‚ƒ+Anders Claesson <anders.claesson@gmail.com>None„The number of ascents. An ascent in w is an index i such  that w[i] < w[i+1]. …The number of descents. A descent in w is an index i such  that w[i] > w[i+1]. †The number of  excedances : positions i such that w[i] > i. ‡The number of  fixed points : positions i such that w[i] == i. ˆThe number of cycles7: orbits of the permutation when viewed as a function. ‰The number of  inversions: pairs (i,j) such that i < j and w[i] > w[j]. ŠThe major index is the sum of descents. ‹The co-major index is the sum of descents. ŒThe number of peaks : positions i such that w[i-1] < w[i] and w[i] > w[i+1]. The number of valleys : positions i such that w[i-1] > w[i] and w[i] < w[i+1]. ŽThe number of double ascents : positions i such that w[i-1] < w[i] < w[i+1]. The number of double descents : positions i such that w[i-1] > w[i] > w[i+1]. The number of left-to-right minima : positions i such that w[i] < w[j] for all j < i. ‘The number of left-to-right maxima : positions i such that w[i] > w[j] for all j < i. ’The number of right-to-left minima : positions i such that w[i] < w[j] for all j > i. “The number of right-to-left maxima : positions i such that w[i] > w[j] for all j > i. ”<The first (left-most) element in the standardization. E.g., head "231" = head (fromList [1,2,0]) = 1. •<The last (right-most) element in the standardization. E.g., last "231" = last (fromList [1,2,0]) = 0. –0Length of the left-most increasing run: largest i such that  w[0] < w[1] < ... < w[i-1]. —0Length of the left-most decreasing run: largest i such that  w[0] > w[1] > ... > w[i-1]. ˜1Length of the right-most increasing run: largest i such that  w[n-i] < ... < w[n-2] < w[n-1]. ™1Length of the right-most decreasing run: largest i such that  w[n-i] > ... > w[n-2] > w[n-1]. š The number of components. E.g., [2,0,3,1,4,6,7,5] has three  components: [2,0,3,1], [4] and [6,7,5]. ›%The number of skew components. E.g., [5,7,4,6,3,1,0,2] has three  skew components: [5,7,4,6], [3] and [1,0,2]. œ8The rank as defined by Elizalde and Pak [Bijections for " refined restricted permutations, J. Comb. Theory, Ser. A, 2004]: 8 maximum [ k | k <- [0..n-1], w[i] >= k for all i < k ] 9The dimension of a permutation is defined as the largest 3 non-fixed-point, or zero if all points are fixed. žThe number of small ascents. A  small ascent in w is an index  i such that w[i] + 1 == w[i+1]. Ÿ The number of small descents. A  small descent in w is an  index i such that w[i] == w[i+1] + 1.  The size of the shadow of w#. That is, the number of different  one point deletions of w. ۄ…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ „…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ „…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ۄ…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ +Anders Claesson <anders.claesson@gmail.com>NoneĄ7Av(231); also know as the stack sortable permutations. Ē@The V-class is Av(132, 231). It is so named because the diagram < of a typical permutation in this class is shaped like a V. ĢThe "';-class is Av(213, 312). It is so named because the diagram @ of a typical permutation in this class is shaped like a wedge. Ī@The >-class is Av(132, 312). It is so named because the diagram < of a typical permutation in this class is shaped like a >. ĨThe <;-class is Av(213, 231). It is so named because the diagram 9 of a typical permutation in this class is shaped like a <. Ķ The union of Ē, Ģ, Ī and Ĩ"; the orbit of a V under rotation §GThe class of separable permutations; it is identical to Av(2413,3142). ĄÜĒÝĢĪĨÞĶß§ĄĒĢĪĨͧĄĒĢĪĨͧ ĄÜĒÝĢĪĨÞĶß§ā      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF GHI JKLMNOPQRSTUVW?@XYZA[\]^<_=`>abcdefghijklmnopq&'345()*+,-./0"# !12$%6789:;rstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžIŸ ĄĒĢĪĨͧĻĐŠŦŽ­OŪŊ°ąēsym-0.6Math.Sym.InternalMath.Sym Math.Sym.D8 Math.Sym.StatMath.Sym.ClassPerm0 LehmercodeunrankLehmercodefromLehmercoderandomLehmercode lehmercodessizetoListfromListactinflate unrankPerm randomPermsymidperm revIdpermstistordisosimplecopiesavoidersreverse complementinverserotateheadlastrminrmaxrirrdrascdesinvmajcomajpeakvalldascddeslminlmaxlirldrexcfpcyccompscompepdimasc0des0lMaximarMaxima components stackSort bubbleSortdel nextCUInt onesCUInt nextIntegralSetPermunstnunstStPermemptyonetoVector fromVector bijection generalize generalize2 normalizecast\+\dsum/-/ssumpermscopiesOfavoidsavshadowdownsetextcoshadowlMinimarMinimaskewComponentssubsetsr0r1r2r3s0s1s2s3d8klein4orbitsymmetryClasses d8Classes klein4Classesidshadav231veewedgegtltvorb separablesbaseForeign.C.TypesCUIntc_onesc_next c_bubblesort c_stacksortc_des0c_asc0c_dimc_epc_compc_ldrc_lirc_lmaxc_lminc_ddesc_dascc_vallc_peakc_comajc_majc_invc_cycc_fpc_excc_desc_ascc_simplec_ordiso factorial avoiders1statsortopnextonesBitmaskperm0act'actLstStringliftlift2bitmasks$fBitmaskInteger$fBitmaskCUInt$fPerm[] $fPerm[]0 $fPermStPerm$fMonoidStPerm $fShowStPerm $fOrdStPerm streamAv231 streamVeeunion compositions