Sistema F

O sistema F é um formalismo lógico que torna possível expressar funções de uma forma muito rica e rigorosa e demonstrar formalmente propriedades difíceis. Especificamente, o sistema F (também conhecido como cálculo polimórfico lambda ou cálculo lambda de segunda ordem ) é uma extensão do cálculo lambda simplesmente digitada, introduzida de forma independente pelo lógico Jean-Yves Girard e pelo cientista da computação John C. Reynolds . Este sistema se distingue do lambda-cálculo simplesmente tipado pela existência de uma quantificação universal dos tipos que torna possível expressar o polimorfismo.

O Sistema F tem duas propriedades cruciais:

  1. a redução de termos é fortemente normalizadora (de forma mais direta: todos os cálculos terminam);
  2. ela corresponde por correspondência Curry-Howard à lógica mínimo proposicional a segunda ordem . Quer dizer: o cálculo proposicional, sem a negação mas com os quantificadores .

Nota introdutória  : A leitura deste artigo pressupõe a leitura preliminar do artigo "  lambda-cálculo  " e sua assimilação.

Introdução

Como atesta sua origem dupla, o sistema F pode ser estudado em dois contextos muito diferentes:

Historicamente, o sistema F desempenhou um papel essencial nos fundamentos da ciência da computação ao propor, desde o início da década de 1970, um formalismo de tipo rico, simples e muito expressivo de funções calculáveis ​​muito gerais. Ele abriu o caminho para linguagens de programação digitadas modernas e assistentes de prova como COQ .

Como o cálculo lambda simplesmente digitado, o sistema F admite duas apresentações equivalentes:

Apresentação na Igreja

O sistema F admite dois tipos de objetos: tipos e termos . Os termos podem ser "recolhidos" e traduzir funções computáveis, enquanto os tipos anotam os termos e permitem que sejam categorizados.

A sintaxe

O tipo de sistema de F (denotado , , , etc.) são formados a partir de um conjunto de tipos de variáveis (classificado , , etc.) utilizando os seguintes três regras de construção:

Em resumo, os tipos do sistema F são dados pela gramática BNF  :

Como em lambda-calculus ou em cálculo de predicado, a presença de um símbolo mutante requer distinguir as noções de variável livre e variável ligada , e introduzir os mecanismos usuais de renomeação que permitem trabalhar até a -conversão. Finalmente, a álgebra de tipo do sistema F é dotada de uma operação de substituição semelhante à do cálculo lambda, e denotamos o tipo obtido substituindo no tipo todas as ocorrências livres da variável de tipo pelo tipo .

Os termos (bruto) Sistema F (classificado , etc.) são formados a partir de um conjunto de termos de variáveis (denotado , , , etc.), utilizando as cinco seguintes regras de construção:

Em resumo, os termos (brutos) do sistema F são dados pela gramática BNF:

Os termos do sistema F incorporam dois mecanismos de ligação variável: um mecanismo de ligação variável de termo (por construção ) e um mecanismo de ligação variável de tipo (por construção ), os quais são levados em consideração no nível da relação de conversão. Esse mecanismo duplo dá origem naturalmente a duas operações de substituição: uma substituição de termo anotada e uma substituição de tipo anotada .

A -redução

A presença de um duplo mecanismo de abstração e aplicação (abstração / aplicação de termo e abstração / aplicação de tipo) dá origem a duas regras de -redução, cuja união gera passando para o contexto a relação de -redução em uma etapa do sistema F:

Quanto ao cálculo lambda puro, a -redução do sistema F é confluente (nos termos brutos) e satisfaz a propriedade de Church-Rosser  :

O sistema de tipo

Chamado contexto tipagem (notação: , etc) qualquer lista finita de enunciados da forma (que é um termo variável e tipo) em que uma variável termo é declarado mais do que uma vez.

O sistema de tipo do sistema F é construído em torno de um julgamento de digitação do formulário ("no contexto , o termo tem para tipo  "), que é definido a partir das seguintes regras de inferência:

As duas propriedades principais deste sistema de tipo são a propriedade de preservação do tipo de redução e a propriedade de normalização forte  :

A primeira dessas duas propriedades é uma propriedade puramente combinatória que é demonstrada por uma indução direta na derivação de tipagem. Por outro lado, a propriedade de normalização forte do sistema F é uma propriedade cuja prova se baseia fundamentalmente em métodos não combinatórios, baseados na noção de redutibilidade candidata.

Representação de tipos de dados

Para poder usar o lambda-cálculo simplesmente digitado como linguagem de programação, é necessário adicionar tipos básicos (booleanos, inteiros, etc.) e regras de redução adicionais que ampliam o poder expressivo do formalismo. Um exemplo de tal extensão é o sistema T de Gödel, que é obtido adicionando aos inteiros naturais primitivos lambda-calculus simplesmente digitados e um mecanismo de recursão semelhante à recursão primitiva (mas mais expressivo).

No sistema F, tal extensão não é necessária porque a expressividade do formalismo permite definir os tipos básicos e os construtores de tipo usuais sem que seja necessário modificar o sistema de tipos ou as regras de redução.

Booleanos e tipos finitos

O tipo de booleanos é definido no sistema F por

e as constantes e por:

Pode-se mostrar que os dois termos acima são os únicos dois termos fechados na forma normal do tipo . Assim, o tipo de dados captura efetivamente a noção de booleano.

A construção 'if ... then ... else ...' é definida por

onde designa o tipo de eliminação da construção 'se ...', ou seja, o tipo comum aos dois ramos da condicional. Esta definição é correta do ponto de vista de digitação e do ponto de vista computacional na medida em que:

De forma mais geral, pode-se definir um tipo finito com valores colocando:

Novamente, pode ser mostrado que os termos são os únicos termos fechados na forma de tipo normal . A operação de filtragem correspondente é definida por:

(onde designa o tipo de ramificações do filtro).

Em particular :

O tipo não é habitado por nenhum termo fechado na forma normal e, de acordo com o teorema de normalização forte, não é habitado por nenhum termo fechado.

Produto cartesiano e soma direta

Um e dois tipos. O produto cartesiano é definido no sistema F por

e a construção do casal por

Quanto aos tipos enumerados, pode-se mostrar que os únicos termos fechados na forma normal do tipo são da forma , onde e são termos fechados na forma normal do tipo e , respectivamente. As funções de projeção correspondentes são fornecidas por

Essas funções verificam naturalmente as igualdades e .

A soma direta é definida por

Os habitantes dos tipos e são imersos no tipo com a ajuda das construções

enquanto a filtragem de elementos de tipo é fornecida pela construção

que satisfaz a igualdade de definição esperada.

Ao contrário do produto cartesiano, a codificação da soma direta no sistema F nem sempre captura a noção de união disjunta, na medida em que é possível, em certos casos, construir termos fechados em forma normal de tipo que não são nem da forma (com ) nem da forma (com ) .

Inteiros da igreja

O tipo de inteiros da Igreja é definido no sistema F por

Cada número natural é representado pelo termo

Quanto aos booleanos, o tipo captura a noção de inteiro natural, pois qualquer termo fechado de tipo na forma normal tem a forma de um certo inteiro natural .

Apresentação no Curry

A função de apagar

O sistema de tipo

Equivalência entre os dois sistemas

O teorema de normalização forte

Os termos tipáveis ​​do sistema F são fortemente normalizáveis , ou seja, a redução dos termos é uma operação que sempre termina produzindo uma forma normal.

Correspondência com lógica de segunda ordem

Por meio da correspondência Curry-Howard , o sistema F corresponde exatamente à lógica mínima de segunda ordem , cujas fórmulas são construídas a partir de variáveis ​​proposicionais usando implicação e quantificação proposicional:

Lembre-se de que, neste quadro, as unidades (verdade) e (absurdo), os conectores (negação), (conjunção) e (disjunção) e a quantificação existencial são definíveis por

(Observe que, por meio da correspondência Curry-Howard, o absurdo corresponde ao tipo vazio, a verdade ao tipo singleton, a conjunção ao produto cartesiano e a disjunção à soma direta.)

Provamos que, neste formalismo, uma fórmula é demonstrável sem hipóteses se e somente se o tipo correspondente no sistema F é habitado por um termo fechado.

Correspondência com aritmética de segunda ordem

Bibliografia

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">