Existe um tipo não trivial que é igual à sua própria derivada?

20

Um artigo chamado A derivada de um tipo regular é seu tipo de contexto de um furo mostra que o "zíper" de um tipo - seus contextos de um furo - segue as regras de diferenciação na álgebra de tipos.

Nós temos:

xx1x00x10x(S+T)xS+xTx(S×T)xS×T+S×xT

Podemos usar esse modelo para derivar que a derivada da unidade é nula, que a derivada da lista é um produto de duas listas (prefixo vezes sufixo) e assim por diante.

Uma pergunta natural a ser feita é: "que tipo é seu próprio derivado?" É claro que já temos , o que nos diz que void (o tipo desabitado) é sua própria derivada, mas isso não é muito interessante. É o análogo do fato de que a derivada de zero é zero no cálculo infinitesimal comum.x00

Existem outras soluções para a equação ? Em particular, existe um análogo de x e x = E x em tipo álgebra? Por que ou por que não?xTTxex=ex

Matthew Piziak
fonte
5
Existe na teoria das espécies combinatórias e corresponde às espécies de conjuntos (finitos), mas isso não corresponde a um tipo de dados algébrico.
Derek Elkins deixou o SE
1
O que você quer dizer com "igual"? No seu mundo, e ( S U ) × ( T U ) são iguais? Como cerca de N e L i s t ( N ) ? (S+T)U(SU)×(TU)NList(N)
Andrej Bauer
1
@AndrejBauer O primeiro sim, o segundo não. é igual ao produto iterado 1 + N + N × N + N × N × N + = n = 0 N n em minha mente. Dito isto, eu não tenho um modelo rigoroso de igualdade de tipos em minha mente e, se você tem um modelo, pode me indicar que ficaria feliz em lê-lo. List(N)1+N+N×N+N×N×N+=n=0Nn
Matthew Piziak
3
@DerekElkins, por acaso, outro artigo de McBride, chamado Palhaços à esquerda de mim, Jokers à direita aponta que: "Para estruturas finitas, [a iteração de um operador em zíperes] dá origem a uma formulação de tipos de dados de séries de poder diretamente, encontrando todos os elementos da esquerda para a direita .... Existe, portanto, uma conexão significativa com a noção de espécie combinatória ". Portanto, não ficaria surpreso se as espécies combinatórias também tiverem algum papel interessante no contexto dessa questão.
Matthew Piziak
@MatthewPiziak Eles definitivamente fazem. Brent Yorgey falou bastante sobre isso . Veja também sua tese .
Derek Elkins saiu do SE

Respostas:

15

Considere os multisets finitos . Seus elementos são dados por { x 1 , , x n } quociente por permutações, de modo que { x 1 , , x n } = { x π 1 , , x π n } para qualquer π S n . O que é um contexto de um buraco para um elemento em tal coisa? Bem, devemos ter n > 0 para selecionar uma posição para o buraco, então ficamos com o restante n -BagX{x1,,xn}{x1,,xn}={xπ1,,xπn}πSnn>0 elementos, mas não somos os mais sábios sobre o que é onde. (Isso é diferente das listas, em que a escolha de uma posição para o furo corta uma lista em duas seções, e o segundo corte derivado seleciona uma dessas seções e a corta ainda mais, como "ponto" e "marca" em um editor, mas discordo. ) Um contexto de um buraco em um B a gn1 é assim um B a gBagX , e todo B a gBagX pode surgir como tal. Pensando espacialmente, a derivada de B a gBagX deveria ser ele mesmo.BagX

Agora,

BagX=nNXn/Sn

uma escolha do tamanho da tupla , com uma tupla de n elementos até um grupo de permutações da ordem n ! , fornecendo exatamente a expansão da série de potência de e x .nnn!ex

Ingenuamente, podemos caracterizar tipos de contêineres por um conjunto de formas e uma família de posições dependentes da forma P : s : S X ( PSP para que um contêiner seja dado por uma escolha de forma e um mapa de posições a elementos. Com bolsas e coisas do gênero, há um toque extra.

s:SX(Ps)

A "forma" de um saco é algumas ; as "posições" são { 1 , , n } , o conjunto finito de tamanho n , mas o mapa de posições para elementos deve ser invariante sob permutações de S n . Não deve haver maneira de acessar uma bolsa que "detecte" a disposição de seus elementos.nN{1,,n}nSn

O East Midlands Container Consortium escreveu sobre essas estruturas em Construindo programas polimórficos com tipos de quocientes , para Matemática da construção de programas em 2004. Os contêineres de quocientes estendem nossa análise usual de estruturas por "formas" e "posições", permitindo que um grupo de automorfismo atue nas posições , permitindo-nos a considerar estruturas, tais como pares não ordenadas , com derivado X . Um n- ordenador não ordenado é dado por X n / n ! e sua derivada (quando n > 0 é um n - 1 não ordenadoX2/2XnXn/n!n>0n1tupla). Sacos levam a soma destes. Podemos jogar jogos semelhantes com n- pares cíclicos , X n / n , em que a escolha de uma posição para o orifício fixa a rotação em um ponto, deixando X n - 1 , uma tupla menor, sem permutação.nXn/nXn1

A "divisão de tipos" é difícil de entender em geral, mas o quociente por grupos de permutação (como nas espécies combinatórias) faz sentido e é divertido de se brincar. (Exercício: formular um princípio de indução estrutural para pares não ordenadas de números, , e usá-lo para implementar adição e multiplicação de modo a que eles estão conmutativo por construção.)N2/2

A caracterização "formas e posições" dos contêineres não impõe finitude a nenhum deles. As espécies combinatórias tendem a se organizar por tamanho , e não por forma, o que equivale a coletar termos e calcular o coeficiente de cada expoente. Conjuntos de quocientes com conjuntos de posições finitas e espécies combinatórias são basicamente rotações diferentes na mesma substância.

porco trabalhador
fonte
O autor original aparece! Obrigado por parar para nos mostrar este belo resultado.
Matthew Piziak
3

E a soma infinita A derivada é i , j N X i + + X i i + 1, que é igual ao original por associatividade e comutatividade de somas.

i,jNXi?
i,jNXi++Xii+1

Além disso, a soma infinita é igual a ), para que pudéssemos tentar calcular a derivada usando listas.jNList(X)

Andrej Bauer
fonte
A derivada de uma lista é um par de listas (prefixo vezes sufixo). Pela regra da soma, a derivada de uma lista de listas é uma lista de pares de listas. Uma lista de pares de listas é isomórfica a uma lista de listas?
Matthew Piziak
iNN×XiiNi×N×XiiNi×Nex=ixi/n!+Nan=(n+1)an+1
ni