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.
fonte
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:K ∨ X ∨ K(X) X
Uma formulação equivalente de é: é infinito se, e somente se, existir e uma exceção .K(X) S⊆X K n∈N 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}→S K S⊆X ∀x,y∈S.x=y∨x≠y D(X) K X
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.
fonte