Formalizando a teoria dos conjuntos finitos na teoria dos tipos


10

A maioria dos assistentes de prova tem uma formalização do conceito de "conjunto finito". Essas formalizações, no entanto, diferem bastante (embora se espere que todas sejam essencialmente equivalentes!). O que não entendo neste momento é o espaço de design envolvido e quais são os prós e os contras de cada formalização.

Em particular, gostaria de entender o seguinte:

  • Posso axiomatizar conjuntos finitos (isto é, tipos habitados por um número finito de habitantes) na teoria de tipos simples? Sistema F? Quais são as desvantagens de fazê-lo dessa maneira?
  • Eu sei que isso pode ser feito 'elegantemente' em um sistema tipicamente dependente. Mas, do ponto de vista clássico, as definições resultantes parecem extremamente estranhas. [Eu não estou dizendo que eles estão errados, longe disso!]. Mas também não entendo por que eles estão "certos". Entendo que eles escolhem o conceito correto , mas a razão mais profunda para 'dizer dessa maneira' é o que não entendo completamente.

Basicamente, eu gostaria de uma introdução fundamentada ao espaço de design das formalizações do conceito de 'conjunto finito' na teoria dos tipos.

Respostas:


8

Eu sei que isso pode ser feito 'elegantemente' em um sistema tipicamente dependente. Mas, do ponto de vista clássico, as definições resultantes parecem extremamente estranhas.

Você pode explicar o que você quer dizer com "alienígena"? Parece-me que você formaliza o conceito de conjunto finito exatamente da mesma maneira na teoria dos tipos e na teoria dos conjuntos.

Fin(n)

Fin(n){kN|k<n}
Finite(X)nN.XFin(n)
AB

Na teoria dos tipos, você pode fazer exatamente a mesma coisa! Observe que é um tipo com elementos (já que o segundo componente do par é irrelevante para a prova). Em seguida, você pode definir o construtor do tipo de finitude como: Onde significa isomorfismo de tipos.

Fin(n)Σk:N.ifk<nthenUnitelseVoid
Fin(n)n
Finite(X)Σn:N.XFin(n)
AB

Estrangeiro porque eu só vi as definições brutas sem nenhum teste complementar que explica como ler essas definições. Além disso, o fato de a definição Fin usual, feita indutivamente, obscurecer ainda mais as coisas. Sua breve explicação é o que eu precisava para fazer clique.
Jacques Carette 14/09

5

Deixe-me ver se posso acrescentar algo útil à resposta de Neel. O "espaço de design" para conjuntos finitos é muito maior construtivamente do que é classicamente porque várias definições de "finito" não precisam concordar construtivamente. Várias definições na teoria dos tipos fornecem conceitos ligeiramente diferentes. Aqui estão algumas possibilidades.

Conjuntos finitos Kuratowski ( -finite) pode ser caracterizada como a livre -semilattices: dado um conjunto, ou tipo objeto , os elementos do livre -semilattice pode ser de thougth como subconjuntos finitos de . De fato, cada um desses elementos é gerado por:KXK(X)X

  • o elemento neutro , que corresponde ao conjunto vazio, ou0
  • um gerador , que corresponde ao singleton , ouxX{x}
  • uma união de dois elementos, que corresponde a uma união.ST

Uma formulação equivalente de é: é infinito se, e somente se, existir e uma exceção .K(X)SXKnN e:{1,,n}S

Se compararmos isso com a definição de Neel vemos que ele requer um bijection . Isso equivale a pegar os subconjuntos infinitos que têm igualdade decidível: . Vamos usar para a recolha de decidable subconjuntos -finite de .e:{1,,n}SKSXx,yS.x=yxyD(X)KX

Obviamente, é fechado sob uniões finitas, mas não precisa ser fechado sob interseções finitas. E não está fechado em nenhuma operação. Como as pessoas esperam que conjuntos finitos se comportem um pouco como uma "aglebra booleana sem topo", também é possível tentar defini-los como a álgebra booleana generalizada livre ( , , e complementos relativos ), mas na verdade nunca ouviu falar de tal esforço.K(X)D(X)0

Ao decidir qual é a definição "correta", você deve prestar atenção ao que deseja fazer com os conjuntos finitos. E não há uma definição correta única. Por exemplo, em que sentido de "finito" é o conjunto de raízes complexas de um finito polinomial ?

Consulte Construtivamente finito? por Thierry Coquand e Arnaud Spiwack para uma discussão detalhada da finitude. A lição é que a finitude está longe de ser óbvia construtivamente.


Certo, eu sabia o suficiente disso para saber que minha pergunta não era trivial. Agora posso reler as partes das bibliotecas Coq, Isabelle e Agda que lidam com conjuntos finitos e ter uma esperança de entender quais escolhas (trocadilhos) fizeram.
Jacques Carette 15/09

Eu me pergunto até que ponto os autores das bibliotecas estavam cientes das escolhas. Eles provavelmente apenas entraram em uma das definições. Uma coisa natural a se fazer é assumir que tem igualdade decidível, porque então coincide com e tudo corre bem e muito como no caso clássico. O problema começa quando não tem igualdade decidível. AK(A)D(A)A
Andrej Bauer

Para ser justo, costuma-se usar conjuntos finitos para formalizar aspectos da verificação do programa e, nesse caso, você geralmente pode assumir que a igualdade decidida é válida.
Cody
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.