Considérons les multisets finis . Ses éléments sont donnés par { x 1 , … , x n } cotés par permutations, de sorte que { x 1 , … , x n } = { x π 1 , … , x π n } pour tout π ∈ S n . Qu'est-ce qu'un contexte à un trou pour un élément dans une telle chose? Eh bien, nous devons avoir n > 0 pour sélectionner une position pour le trou, donc nous nous retrouvons avec les n -B a gX{ x1,…,xn}{x1,…,xn}={xπ1,…,xπn}π∈Snn>0 éléments, mais nous ne savons pas qui est où. (C'est différent des listes, où le choix d'une position pour le trou coupe une liste en deux sections, et la deuxième coupe dérivée sélectionne l'une de ces sections et la coupe plus loin, comme "point" et "marque" dans un éditeur, mais je m'égare. ) Un contexte à un trou dans un B a gn−1 est donc a B a gBagX , et chaque B a gBagX peut apparaître comme tel. En pensant spatialement, la dérivée de B a gBagX doit être lui-même.BagX
Maintenant,
BagX=∑n∈NXn/Sn
un choix de taille de tuple , avec un tuple de n éléments jusqu'à un groupe de permutation d'ordre n ! , ce qui nous donne exactement l'expansion en série de puissance de e x .nnn!ex
Naïvement, nous pouvons caractériser les types de conteneurs par un ensemble de formes et une famille de positions dépendantes de la forme P :
∑ s : S X ( PSP
pour qu'un conteneur soit donné par un choix de forme et une carte des positions aux éléments. Avec des sacs et autres, il y a une touche supplémentaire.
∑s:SX(Ps)
La "forme" d'un sac est quelque ; les "positions" sont { 1 , … , n } , l'ensemble fini de taille n , mais la carte des positions aux éléments doit être invariante sous les permutations de S n . Il ne devrait y avoir aucun moyen d'accéder à un sac qui "détecte" la disposition de ses éléments.n∈N{1,…,n}nSn
Le East Midlands Container Consortium a écrit sur ces structures dans Constructing Polymorphic Programs with Quotient Types , for Mathematics of Program Construction 2004. Les conteneurs de quotients étendent notre analyse habituelle des structures par des "formes" et des "positions" en permettant à un groupe d'automorphisme d'agir sur les positions , ce qui nous permet d'envisager des structures telles que des paires non ordonnées , avec un dérivé X . Un n- tuple non ordonné est donné par X n / n ! , et sa dérivée (lorsque n > 0 est un n - 1 non ordonnéX2/2XnXn/n!n>0n−1 tuple ). Les sacs en prennent la somme. Nous pouvons jouer à des jeux similaires avec -tuples cycliques , X n / n , où le choix d'une position pour le trou cloue la rotation à un endroit, laissant X n -nXn/n , un tuple plus petit sans permutation.Xn−1
La "division de type" est difficile à comprendre en général, mais le quotient par groupes de permutation (comme dans les espèces combinatoires) a du sens et est amusant à jouer avec. (Exercice: formuler un principe d'induction structurelle pour des paires de nombres non ordonnées, , etutiliser pour mettreœuvreaddition etmultiplication afin qu'ils soient commutative par construction.)N2/2
La caractérisation des formes et des positions des conteneurs n'impose ni fin ni fin. Les espèces combinatoires ont tendance à s'organiser par taille , plutôt que par forme, ce qui revient à collecter des termes et à calculer le coefficient pour chaque exposant. Les conteneurs de quotients avec des ensembles de positions finies et les espèces combinatoires sont essentiellement des spins différents sur la même substance.