Você está na página 1de 71

Universidade de Braslia

Instituto de Cincias Exatas Departamento de Cincia da Computao

Vericao de Propriedades do Clculo ex em Coq

Washington Lus Ribeiro de Carvalho Segundo

Dissertao apresentada como requisito parcial para concluso do Mestrado em Informtica

Orientador Prof. Dr. Flvio Leonardo Cavalcanti de Moura

Braslia 2010

Universidade de Braslia  UnB Instituto de Cincias Exatas Departamento de Cincia da Computao Mestrado em Informtica

Coordenador: Prof. Dr. Mauricio Ayala Rincn

Banca examinadora composta por: Prof. Dr. Flvio Leonardo Cavalcanti de Moura (Orientador)  CIC/UnB Prof. Dr. Mario Roberto Folhadela Benevides  COPPE/UFRJ Prof. Dr. Mauricio Ayala Rincn  CIC/UnB

CIP  Catalogao Internacional na Publicao


Segundo, Washington Lus Ribeiro de Carvalho. Vericao de Propriedades do Clculo

ex em Coq / Washington Lus

Ribeiro de Carvalho Segundo. Braslia : UnB, 2010. 71 p. : il. ; 29,5 cm.

Dissertao (Mestrado)  Universidade de Braslia, Braslia, 2010.

1. vericao formal, 2. clculos de substituies explcitas, 3. clculo

ex
CDU 004.4

Endereo:

Universidade de Braslia Campus Universitrio Darcy Ribeiro  Asa Norte CEP 70910-900 BrasliaDF  Brasil

Universidade de Braslia
Instituto de Cincias Exatas Departamento de Cincia da Computao

Vericao de Propriedades do Clculo ex em Coq

Washington Lus Ribeiro de Carvalho Segundo

Dissertao apresentada como requisito parcial para concluso do Mestrado em Informtica

Prof. Dr. Flvio Leonardo Cavalcanti de Moura (Orientador) CIC/UnB

Prof. Dr. Mario Roberto Folhadela Benevides COPPE/UFRJ

Prof. Dr. Mauricio Ayala Rincn CIC/UnB

Prof. Dr. Mauricio Ayala Rincn Coordenador do Mestrado em Informtica

Braslia, 13 de julho de 2010

Dedico esse trabalho em memria de meu av, Jos Gonales.

iv

Agradecimentos
algo bastante comum, que um aluno agradea em primeiro lugar seu mestre. De fato, no h como no reconhecer, de primeira mo, a fantstica dedicao, pacincia e companheirismo empenhado pelo meu orientador, o professor Dr. Flvio de Moura. Dedico tambm meus agradecimentos as contribuies e sugestes efetuadas pelos professores Dr. Maurcio Ayala e Dr. Mario Benevides, na realizao da verso nal desse documento. Ademais, devo agradecer meus amigos colegas, em especial Andria Avelar e

Flvio Barros, pela parceria na luta de cada dia. A minha rosa, linda Iraciara, agradeo a pacincia prestada, todas a vezes que meu humor no ia bem, aps um dia cheio. Aos meus tios daqui, Manoel e Cristina, no sei como expressar a gratido pelo suporte que me foi dado, desde os primeiros dias de residncia nessa capital. Ao meu tio Ricardo e minha av Derly, agradeo o amor incondicional e a fora dada a todo momento. Aos meus pais, Washington e Denise, agradeo minha existncia, minha educao e tudo que pode haver de bom em mim. A Deus, a concincia regente de todas as coisas, agradeo o fascinante e grande universo, com sua riqueza de detalhes e mistrios, que nos foi legado.

Resumo
O clculo

ex representa uma soluo importante dentro da classe de clculos de substituiDelia Kesner obteve, atravs de um conjunto de provas construtivas, de-

es explcitas que lidam com nomes , em oposio aqueles que codicam suas variveis
por ndices. mostraes das importantes propriedades do

ex.

Dentre elas, destacamos a PSN, isso

, a Preservao da Normalizao Forte, cuja demonstrao faz uso de uma estratgia de reduo perptua, que permitiu uma caracterizao indutiva do conjunto demos a especicao em Coq, j realizada para o clculo

SN ex .

Esten-

de B. Aydemir et al, e que

utiliza lgica nominal para construo de princpios de induo e recurso

-estrutural. ex,
e

Dessa forma nossa especicao inclui a substituio explcita (s[x/t]) na gramtica de termos. Avanamos denindo os sistemas de reescrita e as relaes de reduo do Completa), a SIM (Simulao de um passo da para a formalizao da PSN. conclumos por formalizar alguns resultados para o clculo, a saber: a FC (Composio

-reduo)

e ainda outros que caminham

Palavras-chave:

vericao formal, clculos de substituies explcitas, clculo

ex

vi

Abstract
The

ex-calculus represents an important solution among all the class of explicit

substitu-

tions calculi that deal with names , as opposed to those that encode variables by indices.
Delia Kesner developed the proofs, through a set of constructive ones, of important properties of the

ex

calculus.

Among them, we highlight the PSN property, that is, the

Preservation of Strong Normalization, whose proof uses a perpetual reduction strategy which allowed an inductive characterization of the set cation already done in Coq for the to build principles of

SN ex .

We extended the speci-

-calculus

by B. Aydemir et al, using nominal logic

-structural

induction and recursion. In this way our specication

includes the explicit substitution (s[x/t]) in the grammar of the terms. We go foward by dening the rewriting systems and the reduction relations for the by formalizing some results for this calculus, as follows: SIM (Simulation of One Step of formalization of the PSN.

ex

and we conclude

The FC (Full Composition),

-Reduction)

and others that go in the direction of the

Keywords:

formal verication, explicit substitutions calculi,

ex-calculus

vii

Sumrio

1 Introduo 2 Fundamentos
2.1 2.2 2.3 2.4 O sistema Coq Lgica formal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sistemas de reescrita Lgica nominal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1 6
6 10 13 16

3 O Clculo
3.1 3.2 3.3 3.4 Classes de

25
-equivalncia (/= ) -estrutural
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 30 32 33

Recurso e induo

A operao de meta-substituio denida sobre O conjunto

/=

. . . . . . . . . . . .

SN

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4 Clculos de substituies explcitas


4.1 4.2 4.3 Clculos em notao de de Bruijn ( , Clculos com nomes (x,

36
)
. . . . . . . . . . . . . . . . . 36 39 45 . . . . . . . . . . . . . . . . . . . . . .

ex, es)

Uma gramtica auxiliar (ex') . . . . . . . . . . . . . . . . . . . . . . . . .

5 Propriedades do ex
5.1 5.2 5.3 Composio completa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simulao de um passo da Perpetualidade

48
49 51 52

-reduo

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6 Concluso e trabalhos futuros Referncias


viii

56 58

Lista de Figuras
1.1

Organizao do cdigo fonte. . . . . . . . . . . . . . . . . . . . . . . . . . . Clculo

2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9

simplesmente tipado.

. . . . . . . . . . . . . . . . . . . . . . . .

7 8 8 9 9 13 14 14 15 18 19 19 20 21 21 22 22

Demonstrao de

all_perm

no Coq. . . . . . . . . . . . . . . . . . . . . . .

Denio indutiva do tipo nat. . . . . . . . . . . . . . . . . . . . . . . . . . Tipo indutivo

tree,

funo recursiva

n_leaf

e lema

n_leaf_gt_zero. .

. .

Exemplo de rvore binria de nmeros naturais. . . . . . . . . . . . . . . . Exemplo de representao em rvore do termo Fecho transitivo de uma relao binria.

f (g(x, y), c).

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Fecho reexivo-transitivo de uma relao binria. Forma normal.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.10 tomos.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.11 Assinatura nominal do clculo 2.12

. . . . . . . . . . . . . . . . . . . . . . .

-equivalncia.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.13 Funes recursivas: Conjunto de tomos e Substituio. 2.14 Transposies ou Swaps. 2.15 Aes de permutaes.

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.16 Conjunto Suporte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.17 Predicado Fresh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.1 3.2 3.3 3.4 3.5 3.6 3.7

Denio da regra

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27 28 29 29 29 30 30

-equivalncia

no clculo

. . . . . . . . . . . . . . . . . . . . . . . . . .

Incluso progressiva dos conjuntos Conjunto

Phi n.

. . . . . . . . . . . . . . . . . .

Phi.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Termos bem formados e construtores do clculo Teorema de

. .

. . . . . . . . . . . . . .

-equivalncia

para o construtor abstrao. . . . . . . . . . . . para o Clculo


. . . . . . . . . . . . .

Teorema de induo

-estrutural

ix

3.8 3.9

Funes indexadas pelos construturas do Clculo Condio FCB para o construtor abstrao. Regras de reescrita do Clculo Conjunto

. . . . . . . . . . . . .

31 31

. . . . . . . . . . . . . . . . .

4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9

. . . . . . . . . . . . . . . . . . . . . . .

37 39 39 40 41 41 42 43 43 43 44 45 45 46 47 47

Phi

acrescido do construtor da substituio explcita. . . . . . . . para a abstrao e a substituio explcita. . . .

Teorema de

-equivalncia

Regras de reescrita do Clculo Equao

x.

. . . . . . . . . . . . . . . . . . . . . . .

C. .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Regras de reescrita do clculo Conjunto de regras do Sistema de reescrita Sistema de reescrita

ex. .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

ex

no Coq.

ex. Bex.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.10 Relao de reduo

ex.

4.11 Sistema de regras do clculo

es.

. . . . . . . . . . . . . . . . . . . . . . .

4.12 Tabela comparativa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.13 Teorema de induo 4.14

-Estrutural

para o clculo

ex.

. . . . . . . . . . . .

ex

ex'. .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.15 Bijeo entre

Phi

e f(Phi). . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.16 Meta-substituio no

ex,

via da gramtica auxiliar. . . . . . . . . . . . . .

5.1 5.2 5.3 5.4 5.5 5.6

Propriedades bsicas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Compatibiliade da estratgia perptua com a relao

48 53 53 53 55 55

lex+.

. . . . . . . . .

Propriedade IE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Teorema da perpetualidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . Caracterizao indutiva do conjunto

SN ex .

. . . . . . . . . . . . . . . . .

Preservao da normalizao forte. . . . . . . . . . . . . . . . . . . . . . .

Captulo 1 Introduo
O clculo

ex

representa uma soluo importante dentro da classe de clculos de subsAo mesmo tempo, uma abordagem formal de suas propriedades

tituies explcitas [1] que lidam com nomes , em oposio aqueles que codicam suas
variveis por ndices. passa pela denio e demostrao de princpios de induo e recurso sobre classes de equivalncias, isso , aquelas denidas pela relao de

-equivalncia entre termos.

Opta-

mos por realizar esse trabalho no sistema Coq [2], e a apresentao de tal soluo dada nesse documento, juntamente com a vericao formal de algumas das propriedades do

ex.
Como motivao preliminar, gostaramos de inserir uma breve citao, bastante pertinente, retirada do livro de Thomas Hobbes ; Leviat ou Matria, Forma e Poder de um

Estado Eclesistico e Civil: (...) Os gregos tm uma s palavra, linguagem.


Tal armao gera uma reexo sobre o real signicado da palavra razo . De fato, em Lgica Formal, tudo tem como base a interpretao de smbolos, isto , a denio de uma gramtica e semnticas adjacentes. Em conjunto, esses dois conceitos do origem a uma linguagem que viabilizar o estabelecimento de regras de deduo ou procedimentos

logos,

para

linguagem e razo;

no que eles

pensassem que no havia linguagem sem razo, mas sim que no havia raciocnio sem

computacionais, o que mais tarde ir resultar na construo de provas matemticas e algoritmos computacionais. Mas o que uma prova matemtica? Como provas podem
ser justicadas? Existem limitaes para o que possvel provar? Mquinas podem fornecer provas matemticas? Ao nal sculo XIX surgiram diversos avanos na obteno de respostas para essas questes. Os pensadores que se ocuparam com esses tpicos: Boole, Frege, Russel e Hilbert estudaram muito do que j aparecia na lgica tradicional, como os trabalhos de Aristteles e Leibniz. Todavia, enquanto a lgica tradicional era considerada parte da losoa, a lgica moderna foi retirada do domnio losco e passou a desempenhar um papel central na matemtica. Ela evoluiu para um conceito mais restrito, cuja abordagem

 Thomas Hobbes recebeu notoriedade por escrever textos de losoa voltados para poltica, em defesa
do absolutismo, porm sua formao original foi matemtica.

mais formal do que losca. denominada ento: Lgica Formal.

Por esse motivo, essa nova abordagem da lgica foi

O principal objetivo da abordagem formal foi fundamentar, atravs de conceitos estritamente slidos, a prpria matemtica e em especial a aritmtica. Frege, por exemplo, acreditava que a matemtica pudesse ser reduzida lgica, o que atualmente conhecido como logicismo. Russell, por sua vez, se preocupou em renar o sistema de Frege, e obteve o que foi o predecessor do atual clculo de predicados. J Hilbert buscou uma formalizao de toda a matemtica atravs de um conjunto restrito de axiomas. Essa nova proposta cou conhecida como o Programa de Hilbert e foi apresentada no International Congress

of Mathematicians no ano de 1900 em Paris.


No nal da dcada de 50 e incio da dcada de 60, com o surgimento do computador, matemticos despertaram seu interesse na elaborao de provas mecnicas, ou seja, aquelas realizadas inteiramente dentro e atravs de procedimentos de uma mquina. Um pioneiro nesse domnio foi de Bruijn, atravs de seu projeto denominado Automath [3]. O nome sugestivo, pois havia a esperana de que mquinas gerassem provas de teoremas de forma totalmente automtica. Hoje, j se sabe que tal ambio demasiada, e provas mecnicas so utilizadas para certicar as provas realizadas em papel e lpis, e no para automatizar todo o processo de demonstrao. cou conhecida como Vericao Formal. A rea de Vericao Formal se estabeleceu ento como um importante fragmento da rea de Computao, com aplicaes em Teoria da Computao e Engenharia de Software. No entanto, o processo de formalizao de uma teoria bem mais complexo do que possa parecer inicialmente. De fato, as provas construdas em papel e lpis possuem abreviaes que precisam ser eliminadas para viabilizar sua escrita em uma linguagem puramente formal. Dessa maneira, provas em computador se baseiam menos em intuies, que podem eventualmente se mostrar incorretas, e mais em axiomas e regras de deduo. Para atender a esse m, houve a criao de uma nova famlia de sistemas, os quais viabilizavam a especicao formal de teorias. A ideia fundamental desses programas considerar um conjunto bastante restrito de regras de deduo e a partir dele construir teorias, que armazenadas em bibliotecas, permitem a elaborao de provas mais complexas, porm menos extensas. Esses sistemas receberam o nome de Assistentes de Prova e atualmente, no meio acadmico e na indstria, existe muito trabalho em provas mecnicas e construo de programas certicados, com auxlio dessa categoria de software. Alguns exemplos desses sistemas so dados por: Coq [2], Isabelle/HOL [4], PVS [5] e Mizar [6]. Em particular o Coq uma ferramenta renada, baseada em trs linguagens bem coordenadas e complexas. A primeira uma linguagem de especicao, chamada Gallina. A segunda, chamada Vernacular, uma linguagem de comandos. Ela permite ao usurio orientar o Coq na organizao das provas e programas. A terceira linguagem composta pelo conjunto de tticas, as quais possuem construtores lgicos de alto nvel que so utilizados para se transformar, de maneira semi-automtica', provas complexas em provas equivalentes e mais simples. De fato, o uso articulado e inteligente dos comandos e tticas permitem a vericao de provas complexas. Assim, a formalizao em um assistente de prova, como o Coq, mais do que simplesmente preencher os detalhes. Na verdade esse um trabalho desaador e exige criatividade [7]. Mais alm, essa nova rea de trabalho

O sistema Coq baseado em uma lgica de ordem superior, que tem como fundamento terico o Clculo de Construes Indutivas (CCI) [2], o qual por sua vez uma extenso de um formalismo denominado clculo

[8].

Esse formalismo foi o produto de uma

teoria desenvolvida por A. Church [9] na dcada de 30, e nada mais , que um sistema particular de reescrita, o qual se tornou muito popular por ser um modelo terico de computao equivalente s mquinas de Turing, ou seja, capaz de expressar qualquer funo computvel. O clculo ( )

possui uma nica regra de rescrita, chamada

dada por:

(x.a) b a{x/b},

onde o termo do lado direito da regra representa a substituio

simultnea de todas as ocorrncias livres da varivel

em

a,

pelo termo

b.

A denio formal do clculo considera a operao de substituio como uma metaoperao, isto , necessria a denio de um conjunto de regras exterior gramtica do clculo para que se realize a operao de substituio. Tal diculdade motivou pesquisas com modicaes do clculo

pela adio de elementos em sua gramtica e renamento

de suas regras. Nesse contexto foram desenvolvidos sistemas que internalizam a operao de substituio e os clculos resultantes caram conhecidos como clculos de substitui-

es explcitas [1].

Nesse trabalho estamos particularmente interessados no clculo de

substituies explcitas

ex

[10], porque esse possui uma notao relativamente simples

e no entanto satisfaz simultaneamente importantes propriedades como a conuncia em termos fechados e abertos, a composio completa, a preservao da normalizao forte e a simulao de um passo de

-reduo.

A investigao de quais termos de um clculo so fortemente normalizveis desempenha um papel particularmente importante, pois tais objetos no possuem caminhos de reduo de comprimento innito. Alm disso, pode-se realizar um paralelo entre termos e

programas; os termos fortemente normalizveis correspondem exatamente aqueles programas que no consomem um nmero innito de passos de execuo. Um exemplo simples, de um programa que consome um nmero innitamente enumervel de passos, pode ser dado por aquele realiza sequencialmente a impresso de todos os nmeros naturais em uma lista (1, de parada. De forma que muita ateno tem sido dada classicao das estratgias de reduo no clculo que o conjunto

2, 3, 4, ...). Em cada passo, ele imprime o nmero seguinte da lista, e dado N enumervel e innito, o programa segue indenidamente sem um ponto

[11, 12, 13, 14, 15, 16, 17]. E assim, uma estratgia de reduo do clculo [18], se ela computa para um termo, um caminho

pode ser classicada como perptua reduo de comprimento

de reduo de comprimento innito, caso ele exista; seno ela retorna algum caminho de

nN

at uma forma normal.

Em [19], Delia Kesner apresenta uma caracterizao indutiva dos termos do para o prprio

ex

que

so fortemente normalizveis, atravs da denio de uma estratgia de reduo perptua

ex.

As demonstraes realizadas no fazem uso de argumentos da lgica

clssica, como lei do terceiro excludo ou provas por contradio; e portanto podem ser chamadas de provas construtivas, nos moldes do que esperado para execuo de uma vericao formal, em um assistente como o Coq. Inicialmente realizamos uma denio indutiva do clculo as operaes de

ex que no levava em conta

-converso,

isto , o renomeamento de variveis ligadas de um termo.

Essa operao especialmente necessria para se evitar a captura de variveis livres, na construo de funes recursivas sobre termos. O principal exemplo de ocorrncia dessa questo a denio recursiva da operao de substituio, que gerada na regra que temos de executar

Essa

funo deveria ser denida para a totalidade dos termos da gramtica, porm no caso em

(y.a){x/b},

necessrio que se observe duas condies, antes da

propagao da funo no interior do termo:

(i) (ii)

x = y; y
no pode ocorrer livre em

b.

Isso coloca restries sobre a aplicao da funo, e assim a soluo comumente dada considerar a recursividade no na totalidade dos termos, mas sim nas classes de equivalncia geradas pela relao em

= ,

onde

(y.a) = (z.a )

para todo

que no ocorra livre

a;

igual ao renomeamento de todas as ocorrncias livres de

em

a,

por

z.

Nos anos 20 e 30, Frenkel e Mostowski criaram seu modelo de permutao com o objetivo de provar a independncia do axioma de escolha (AC) e outros axiomas da teoria de conjuntos. Esse trabalho foi posteriormente utilizado como base para denio de uma nova teoria chamada Lgica Nominal [20, 21, 22], a qual oferece o subsdio necessrio para se trabalhar com nomes ligados e

-equivalncia.

Ela busca considerar construtores

e propriedades que so invariantes com respeito a permutao de nomes, o que d origem a uma atrativa e simples formalizao do comum, mas frequentemente incorreto, uso de recurso e induo para sintaxes abstratas mdulo H uma formalizao em Coq do clculo

-equivalncia.

B. Aydemir et al [23], e que utiliza lgica nominal para efetuao de

, a qual foi desenvolvida em um trabalho de -induo e -recurso

estrutural [24]. No presente trabalho apresentamos uma extenso dessa especicao, a qual inclui a substituio explcita (s[x/t]) na gramtica de termos. Avanamos tambm na denio dos sistemas de reescrita, relaes de reduo, fechos transitivos / reexivostransitivos do

ex,

utilizando para tal m a biblioteca sur_les_relations, desenvolvida

em [25]. E mais alm, zemos uso tambm da biblioteca CoLoR [26, 27] para se denir

caminhos de reduo e o predicado SN (Fortemente Normalizvel).


Conclumos por demonstrar os primeiros resultados de [19], isto : um resultado sobre o no crescimento do nmero de variveis livres durante o processo de reduo; resultados sobre as redues dos argumentos dentro e fora de uma meta-substituio; o lema da

Composio Completa; o lema da Simulao de um Passo da


lema anterior ao Teorema da Perpetualidade.

-Reduo;

e um primeiro

Todos esses resultados, caminham para

obteno da demonstrao do teorema da PSN (Preservao da Normalizao Forte) para

-termos, ou seja, , tambm o no

a demonstrao de que todo termo fortemente normalizvel no clculo clculo

ex.

A organizao do cdigo fonte e a disposio lgica de todos os arquivos dada pela Figura 1.1 :

Perp_Lex

SN_Lex

Meta_subst NF_Lex

T_Lex

Rel_Lex

Lsigma

Aux_Lex

Lex

sur_les_relations

Nominal_Logic
Axioms AuxLib ExtFset Atoms Permutations Psets Support Freshness

Figura 1.1: Organizao do cdigo fonte.

(i)

Nominal_logic composto de todas as estruturas relativas a lgica nominal, o que um resultado do agrupamento dos blocos lgicos Axioms, AuxLib, ExtFset, Atoms, Permutations, Psets, Support e Freshness, encontrados na especicao [23]; Lex e Aux_Lex, so respectivamente a especicao da gramtica do clculo ex [10]
e uma gramtica auxiliar ao clculo;

(ii)

(iii) (iv) (v)

T_Lex

a denio de translao entre as gramtica

ex

ex'; ex;

Meta_subst

dene a funo recursiva de meta-substituio para o

sur_les_relations trata de uma biblioteca de propriedades sobre relaes binrias,


encontrada em [25];

(vi) (vii) (viii) (ix) (x)

LSigma NF_Lex SN_Lex

uma especicao adicional, do clculo dene as relaes de reduo do clculo

[1];

Rel_Lex

ex; ex; ex;

fornece uma denio indutiva para as formas normais do exibe o predicado fortemente normalizvel no contexto do

Perp_Lex contm, for m, as formalizaes obtidas sobre as propriedades do clculo ex.
http://www.cic.unb.br/ flavio/msc/lex.tar.gz

Disponibilizamos nosso cdigo fonte, no endereo

Captulo 2 Fundamentos
Intitulamos essa primeira seo por Fundamentos porque, de fato, os conceitos aqui abordados sero utilizados ao longo de todas as demais sees do texto. A primeira subseo tem como objetivo fornecer uma rpida introduo ao funcionamento do sistema Coq [2]; a seguinte subseo inicia uma discusso sobre a denio de sintaxes abstratas atravs de termos; a terceira aborda os fundamentos e propriedades de Sistemas de Reescrita de

Termos; e conclumos esse captulo com uma breve apresentao da Lgica Nominal, que
inclui trechos do cdigo do arquivo

Nominal_Logic

da especicao.

2.1 O sistema Coq


O Coq [2] uma ferramenta de computao para vericao de provas de teoremas e certicao de programas, cuja conana reside nas propriedades do Clculo no qual se baseia, que chamado de Clculo de Construes Indutivas (CCI). Esse, um formalismo que combina muitos dos recentes avanos em lgica, do ponto de vista do clculo teoria de tipos [28]. A linguagem do Coq extremamente poderosa e expressiva, tanto para vericao formal quanto para programao lgica. Essa ferramenta tem como nalidade o desenvolvimento de programas para os quais uma conana absoluta necessria, como: telecomunicaes, transportes, energia, transaes bancrias, entre outros. Nesse domnio, a necessidade de programas que atendam rigorosamente suas especicaes, justica o esforo necessrio para a vericao formal dos mesmos, visando a criao de cdigos seguros para aplicaes em condies crticas. Mas o Coq no somente til para o desenvolvimento de programas. Ele tambm

[8] e

atende a um pblico de matemticos que busca formalizar teorias que envolvam provas longas. Suas demostraes so efetuadas de uma maneira interativa e, quando possvel, com o auxlio de ferramentas de aplicao automtica. Existe bastante trabalho j estabelecido em Coq sobre um grande nmero de teorias, o qual pode ser encontrado em suas bibliotecas padro ou em contribuies diversas, como no site de Contribuies de

Usurios do Coq [29].

O processo de realizao de uma prova ou especicao de um programa baseado em um restrito conjunto de regras de deduo. Cada enunciado ou programa equivalente a um termo do CCI, o qual possui um tipo, e a realizao da prova ou especicao, corresponde ao problema de habitao desse tipo, ou seja, a construo de um termo que possui o tipo dado, tipo dado partir do conjunto de regras de inferncia de tipos do CCI. Seguem trs das mais bsicas delas, que correspondem subteoria do clculo simplesmente tipado:

Var (x : A) :A x App

Lam

:: (x : A) t : B ((x:A) . t) : (x : A), B e2 : A

e1 : A B e1 e2 : B

Figura 2.1: Clculo

simplesmente tipado.

Na regra

LAM

da Figura acima,

(v : A), B

equivalente

A B,

se

no possui

ocorrncias livres de

Exemplo 2.1.1.

v.
pode ser obtida

Uma demostrao simples, do fato de que:

(A : Set)(a b : A)(R : A A P rop), (ab, R a b) (ab, R b a),

atravs da aplicao desse pequeno conjunto de regras, e esse trabalho exibido a seguir:

:: (H : ab : A, R a b) :: (a : A) :: (b : A) A, Var (H : ab :: abR: a b)Ra b) (H A, Var (b : A) A) (b :

Lam

App

App

Lam

Lam

(H b) : (c : A, R b c) (H b a) : (R b a) :: (H : ab : A, R a b) :: (a : A) ((b:A) .H b a) : (b : A, R b a) :: (H : ab : A, R a b) ((a b:A) .H b a) : (ab : A, R b a) ((H:ab:A,R a b)(a b:A) H b a) : ((ab : A, R a b) ab : A, R b a)

Var (a : A) :A) (a

A aplicao de regras de inferncia pode se tornar uma tarefa bastante complexa. Por esse e outros motivos, a linguagem de comandos do Coq agrega um tipo de conceito que chamado de ttica. Comandos dessa linguagem permitem aplicar um conjunto de regras, no qual o casamento, entre regra e objetivo, encontrado de maneira quase que automtica. Isso facilita muito o trabalho do usurio, basta ver que na prtica, a prova do lema do exemplo 2.1.1 pode ser efetuada conforme exibe a Figura 2.2, e essa tem somente duas linhas de cdigo:  intros

H a b.

e  apply

H.; o que signica introduo seguida

de aplicao das hipteses. Durante a realizao de uma prova, o ambiente interativo do Coq exibe uma janela de dilogo que possui uma barra horizontal dupla. As armaes acima da barra so o conjunto de hipteses, e abaixo so objetivos de prova. O nmero

de objetivos e o ndice do objetivo corrente so exibidos ao lado direito da barra vertical em

(n/k), onde n representa o ndice do objetivo corrente, e k nmero de sub-objetivos

gerados em cada etapa da prova.

Comandos
Variable A : Set. Variable R : A->A->Prop. Lemma all_perm: (forall (a b:A), R a b)-> (forall (a b:A), R b a). Proof.

Respostas do Coq
Variable A declared Variable R declared

======================================= (1 / 1) (forall (a b:A), R a b)-> forall (a b:A), R b a

intros H a b.

H : forall (a b:A), R a b a : A b : A ======================================= (1 / 1) R b a Proof Completed

apply H. Qed.

Figura 2.2: Demonstrao de

all_perm

no Coq.

O desenvolvimento completo de uma teoria envolve basicamente trs tipos de construes: denies indutivas, funes recursivas e proposies. Propriedades admitidas sem demostrao recebem o nome de Axioma, caso contrrio recebem a denominao de

Lema, Teorema ou Proposio; no existe diferena sinttica entre essas nomenclaturas,


cando a cargo do usurio a escolha da utilizao de um ou outro. Em geral os resultados mais fortes e conclusivos so chamados de Teorema e os demais de Lema. O exemplo clssico de denio indutiva a construo do tipo nat, isso , a denio do conjunto dos nmeros naturais no Coq (Figura 2.3). Sua declarao possui o seguinte signicado:

zero) e

um natural;

S O

um natural;

S S O

um natural, etc. (O (constante

(funo sucessor) so os construtores do tipo de dados indutivo nat). Adota-se

tambm a notao:

O 0; S O 1; S S O 2; S S S O 3, ... Inductive nat : Set := | O:nat | S:nat -> nat.


Figura 2.3: Denio indutiva do tipo nat.

Um outro exemplo de denio indutiva construo de rvores binrias, cujas folhas e ns so marcados com nmeros naturais. Denimos esse tipo de objeto, juntamente

com uma funo recursiva que conta o nmero de folhas da rvore dada como argumento, e um lema que arma que o nmero de folhas em uma rvore estritamente maior que zero, como mostrado na Figura 2.4.

Require Import Arith. Inductive tree : Set := | leaf : nat -> tree | node : nat -> tree -> tree -> tree. Fixpoint n_leaf (t:tree) : nat := match t with | leaf a => 1 | node a t1 t2 => (n_leaf t1) + (n_leaf t2) end. Lemma n_leaf_gt_zero: forall (t:tree), (n_leaf t) > 0. Proof. induction t. (* t = leaf n *) simpl; auto with arith. (* t = node n t1 t2 *) simpl; auto with arith. Qed.
Figura 2.4: Tipo indutivo

tree,

funo recursiva

n_leaf

e lema

n_leaf_gt_zero.

leaf (folha) ou um node (n). A leaf n, sendo n N, uma tree; e alm disso todo (node n t1 t2) tambm o (com n N e t1, t2 do tipo tree). A semntica pretendida a de que o tipo indutivo tree represente uma rvore binria de nmeros
Declaramos o tipo (rvore) que pode ser uma ideia fundamental dessa denio a de que todo naturais, conforme o exemplo da Figura 2.5.
1

tree

Figura 2.5: Exemplo de rvore binria de nmeros naturais.

No nal da Figura 2.4, demostramos o Lema dada por induo na estrutura de

n_leaf_gt_zero

que arma que, toda

rvore tem um nmero de folhas maior que zero. A demostrao bastante simples, e

Arith atravs do

t do tipo tree, fazendo uso dos teoremas da biblioteca comando auto with arith, que proporciona uma aplicao automtica
9

de teoremas j demostrados. atravs do comando

A biblioteca Arith, padro do Coq, e ela foi carregada

Require Import Arith.

As demonstraes realizadas em Coq so muitas vezes prximas das provas de papel e lpis, e a vizualizao desse tipo de conexo depende do grau de familiaridade que o usurio tem com a ferramenta. No entanto, em algumas situaes uma prova em papl no pode ser transcrita de maneira literal para uma prova construtiva, o qual tipo de demonstrao exigida no assistente Coq. Por exemplo, os casos de decidibilidade de uma relao so assumidos de graa quando se lida com lgica clssica, mas aqui provar que uma dada relao binria se construa uma prova de

R satisfaz que R a b ou R a b, para quais quer a e b, exige que de R a b ou uma prova de R a b, para todos os casos particulares

b.

Note que isso s possvel para predicados decidveis.

2.2 Lgica formal


Iniciaremos com algumas questes e conceitos fundamentais no que se refere lgica formal. algo comum, quando se lida com linguagens formais ou lgica matemtica, abstrair os detalhes de sintaxe em termos de palavras ou smbolos, atravs da construo de termos. Isso permite o uso de duas ferramentas inter-relacionadas extremamente teis: a recurso e as provas por induo sobre a estrutura dos termos. Ento seguimos primeiramente com algumas denies.

smbolos.

Denio 2.2.1 Exemplo 2.2.2.


1. 2. 3. 4.

(Alfabeto)

Um

alfabeto A, denido com um conjunto no vazio de

So exemplos de alfabetos:

A = {0, 1, 2, ..., 9} A = {a, b, c, ..., z} A = {, , a, d, x, f, ), (} A = {c1 , c2 , c3 , ...} A


denominada uma string ou

Toda sequncia nita de smbolos de um alfabeto

palavra. E qualquer subconjunto, do conjunto de todas as palavras do alfabeto tado por A ), chamada linguagem.

(deno-

Deseja-se construir linguagens formais nas quais se possa formular os axiomas, teoremas, e provas. Em tal contexto os conectivos, os quanticadores e a relao de igualdade aparecem com um papel de suma importncia. Portanto so includos os seguintes smbolos nas chamadas linguagens de primeira ordem: o ou ),

(para o se ento ),

(para o existe ) e

(para no ),

(para o se e somente se ),

(para o e ),

(para

(para o para todo ),

(como o smbolo de igualdade). Segue a denio do alfabeto da

linguagem de primeira ordem, que dada como base nesses smbolos:

10

Denio 2.2.3.
(i) (ii) (iii) (iv) (v) (vi) (vii)

alfabeto da linguagem de primeira ordem


[variveis] [constantes] [conectivos] [quanticadores] [igualdade] [parnteses]

(denotado por

A)

contm o seguinte conjunto de smbolos:

v0 , v1 , v2 , ... c0 , c1 , c2 , ... , , , , , ), (
Para

n 1: n-rias; n-rias;

(1) Smbolos de relaes (2) Smbolos de funes

As palavras construdas com base em um alfabeto podem, ou no, ter um sentido (por exemplo a palavra

f c v3 R
e

no tem nenhum signicado lgico aparente). Logo a

construo de termos e frmulas caracterizada pela seguinte denio indutiva:

Denio 2.2.4. termos


t1 , t2 , ..., tn t1
e

frmulas so denidos indutivamente sobre A

por:

(T1) Toda varivel um termo; (T2) Toda constante um termo; (T3) Se so termos e

um smbolo de funo

n-ria,

ento

f (t1 , ..., tn )

tambm um termo. (F1) Se

t2

so termos, ento

t1 t2

uma frmula;

(F2) Se as palavras

t1 , t2 , ..., tn

so termos e

um smbolo de relao

n-ria,

ento

R t1 ... tn
(F3) Se (F3) Se

uma frmula;

uma frmula, ento e

tambm uma frmula;

so frmulas, ento

( ), ( ), ( ) x
e

( )

tambm so

frmulas; (F4) Se uma frmula e

uma varivel, ento

tambm so frmulas.

Adicionalmente, a operao de substituio representa uma tarefa bsica em sistemas computacionais. Intuitivamente, uma substituio de primeira ordem dever receber um termo com ocorrncias de uma dada varivel, e substituir simultneamente todas as ocorrncias dessa por um outro termo.

Denio 2.2.5
ordem
substituio

(Substituio de primeira ordem)

um conjunto nito da forma

distinta e cada ti um termo distinto de

{v1 /t1 , ...., vn /tn }, onde cada vi uma varivel vi . Cada  vi /ti  denominado uma ligao da

Uma

substituio de primeira

Denio 2.2.6
do conjunto:

(Composio de substituies)

= {v1 /t1 , ...., vn /tn }

substituies. A

composio
11

Sejam

= {u1 /s1 , ...., um /sm } e , de e , a substituio obtida

{u1 /s1 , ...., um /sm , v1 /t1 , ...., vn /tn }, ui /si , para a qual ui = si e qualquer ligao vj /tj para a qual vj {u1 , ..., um }. Nota: Se t um termo e uma substituio, ento t denota a aplicao da substituio ao termo t.
Onde deve-se eliminar qualquer ligao
(Conjunto de subtermos)

Denio 2.2.7
termo

t,

denotadado por

S(t),

denido recursivamente por:

conjunto de subtermos

de um dado

(i) Se (ii) Se

uma constante ou varivel, ento ento para

S(t) = t;

t f t1 .... tn ,

i N: S(t) =
n i=1

{ti } S(ti )

Observao:

Denio 2.2.8
Observao:
t,

Se

s S(t), t,

ento

chamado

subtermo de t.

de um dado termo

(Conjunto de subtermos prprios) O

denotado por ento

S (t),

denido por:

conjunto de subtermos prprios


S (t) := S(t) \ {t}.

termo

Denio 2.2.9
(i) Se (ii) Se

Se

s S (t), O(t),

chamado

(Posies vlidas dos termos)

denotado por

denido recursivamente por:

subtermo prprio de t.
O conjunto de

posies vlidas de um

uma constante ou varivel, ento ento para

O(t) = {};

t f t1 .... tn ,

i N:
n i=1

O(t) = {}

{i | O(ti )}

Exemplo 2.2.10. Notao 2.2.11.


assim: (ii) Para todo (iii)

Se

t f (g(x, y), c), O(t),

ento

O(t) = {} {1 }, {1 1 } {1 2 } {2 } = {, 1 , 1 1 , 1 2 , 2 }.
Para o subtermo na posio

de

denotado por

t| ,

t, O(t)

t| t;

Exemplo 2.2.12.

t|i ti | .

Uma observao importante a de que todo termo pode ser repre-

sentado por uma rvore, tal que: os smbolos de funes so os ns e as variveis ou

12

constantes so as folhas. Por exemplo, o termo lho esquerda

g,

e direita a folha

c. ,

O n

tem duas folhas

t f (g(x, y), c) tem x e y.

o n raiz

f,

um n

E nesse caso:

S(t) = {

, t|11 , t|12 , t|2 } , = { f (g(x, y), c) , g(x, y) , x , y , c } t| t|1

Figura 2.6: Exemplo de representao em rvore do termo

f (g(x, y), c). O(s),

Notao 2.2.13. s[ t] s| t Denio 2.2.14


o termo
por

denota o termo resultante de substituir na posio

(Variveis livres de um termo)

conjunto de variveis livres de (i) Se (ii) Se (iii) Se

t,

que denido recursivamente atravs de:

Seja

um termo.

fv(t) denota o

tc tx

constante, ento fv(t) varivel, ento fv(t) ento para

= ;

= {x};

t f t1 .... tn ,

i N:
fv(t)

n i=1

fv(ti )

2.3 Sistemas de reescrita


As equaes so ferramentas de grande relevncia na matemtica e nas cincias como um todo. Os Sistemas de Reescrita [30], nada mais so, que restries para aplicao de um conjunto de equaes. Isto , as igualdades so substitudas por regras de reduo, as quais so orientadas para se computar a forma mais simples possvel de um dado objeto.

Denio 2.3.1
sobre (i) (ii)

(Sistema de reescrita)

M . (M, )

um

sistema de reescrita.
(M, )

Seja

um conjunto e

uma relao binria

denominada a relao de reduo

ou relao de reescrita correspondente ao sistema. Considere um sistema de reescrita

denota a relao inversa de

=
13

(iii)

denida indutivamente como segue:

(1) (2)

u v
n+1

sse

uv
n

(iv) (v)

u v sse w, u w v + n = n1 o fecho transitivo de n = n0 o fecho reexivo-transitivo

de

Variable A : Set. Inductive explicit_rel_plus (R : A -> A -> Prop) : A -> A -> Prop := | relplus_1step : forall x y : A, R x y -> explicit_rel_plus R x y | relplus_trans1 : forall x y z : A, R x y -> explicit_rel_plus R y z -> explicit_rel_plus R x z.
Figura 2.7: Fecho transitivo de uma relao binria.

Variable A : Set. Inductive explicit_star (R : A -> A -> Prop) : A -> A -> Prop := | star_refl : forall x : A, explicit_star R x x | star_trans1 : forall x y z : A, R x y -> explicit_star R y z -> explicit_star R x z.
Figura 2.8: Fecho reexivo-transitivo de uma relao binria. No arquivo sur_les_relations [25] encontramos denies indutivas para os fechos + transitivo ( ) e reexivo-transitivo ( ) de uma relao binria R, conforme apresentado respectivamente nas Figuras 2.7 e 2.8. Mas elas no so a transcrio literal da Denio 2.3.1. De fato, a denio indutiva de fecho-reexivo na Figura 2.7 arma que: xy, se + + + x y , ento x y ; e alm disso xyz, se x y e y z , ento x z . Contudo essa caracterizao indutiva acaba por ser logicamente equivalente ao que apresentado na Denio 2.3.1. O mesmo ocorre com a denio do fecho reexivo-transitivo. Se

o conjunto de termos da Denio 2.2.4, ento possvel denir um sistema

de reescrita para tal conjunto e o chamamos Sistema de Reescrita de Termos.

Denio 2.3.2.
(i) Uma

Seja

um conjunto de termos:

regra l r

um par ordenado de termos


fv(l);

l, r M ,

sendo que

no uma

varivel e fv(r)

14

(ii) Um

sistema de reescrita de termos, abreviado por TRS (Term Rewriting SysM


de termos com um conjunto de regras

tem) um conjunto

R;

(iii) Dado um TRS, o conjunto de regras denota por Para todo (1) (2)

R dene a relao R sobre M da seguinte forma; t1 , t2 , t1 R t2 , se e somente se, existem: t1 | l

de reduo de termos,

l r R, O(t1 )
e uma substituio com: e

t2 t1 [ r]

Dado um Sistema de Reescrita, alguns conceitos importantes podem ser denidos. Se um elemento de um sistema de reescrita no possui nenhum caminho innito de reduo ele chamado fortemente normalizvel; quando ao nal de uma sequncia de aplicaes de regras obtemos um termo

t,

que no pode mais ser reduzido, dizemos que

uma

forma normal.
E se para qualquer termo, a ordem de aplicao das regras do sistema no relevante, pois a forma normal resultante, caso exista nica, este sistema ser denominado conu-

ente. Seguem portanto as denies formais desses conceitos, juntamente com exemplos

Denio 2.3.3.
u, v, w M v w).
todo

das denies de forma normal e fortemente normalizvel em Coq.

Denio 2.3.4
R ,

(M, ) uma sistema de reescrita, u, v M so denominados juntveis se existe um w M tal que u w v. Para denotar que dois termos u, v so juntveis usar-se- a seguinte notao: u v
Se com
(Conuncia)

v u w,

Um sistema de reescrita existe algum

(M, ) conuente sse, para r M com v r w (ou simplesmente u


dito forma normal com respeito a

Denio 2.3.5

(Forma Normal)

se para todo

no ocorre que u R v.
NF

Um elemento

Denota-se

v N F R.

Em Coq denimos

como uma traduo literal da Denio 2.3.5:

Definition NF (R : tm -> tm -> Prop) (s : tm) := forall t,  R s t.


Figura 2.9: Forma normal.

termos,

tem um nmero nitamente contvel de termos Caso contrrio seu comprimento

Denio 2.3.6 u iN Denio 2.3.7


i , com

(Caminho de Reduo)

. De forma que:

ui ui+1 . n N,

Um Caminho de Reduo uma sequncia de

(Comprimento de um Caminho de Reduo)

ento seu comprimento

Se um caminho de reduo

zvel

Denio 2.3.8
.

n 1;

(Normalizao fraca)

se existe pelo menos um caminho de reduo a partir de Denota-se:

Um elemento

uM

fracamente normaliu
que tem comprimento

diferente de

u WN R .
15

Denio 2.3.9
zvel
Denota-se:

(Normalizao forte)

se qualquer caminho de reduo a partir de

Um elemento

uM

fortemente normali.

tem comprimento diferente de

u SN R .

Alternativamente, pode-se denir a noo de normalizao forte de forma construtiva. Essa denio em Coq feita indutivamente como a seguir:

Inductive SN (R : tm -> tm -> Prop) : tm -> Prop := | reg_SN : forall t, (forall s, R t s -> SN R s) -> SN R t.
A denio indutiva mais amplamente utilizada em vericaes formais [26, 27] e provas construtivas [19], que a Denio 2.3.9.

Denio 2.3.10

(Comprimento Mximo de um Caminho de Reduo)

possvel denir o comprimento mximo de um caminho de reduo partir n denotado por: lR (u) = max{n | u N F R : u R u }

Se

u SN R , de u, o qual

Utilizamos as denies 2.3.3 a 2.3.10 nas demonstraes de propriedades do clculo

[8], como por exemplo no Teorema 3.4.5, e tambm em vericaes das extenses do clculo . Em especial abordamos as caractersticas de normalizao do ex [10], e assim as
Denies 2.3.5, 2.3.6, 2.3.7, 2.3.9 e 2.3.10 exercem papel fundamental, nas formalizaes apresentadas na Seo 5.3.

2.4 Lgica nominal


A abordagem convencional da lgica formal no sucientemente para expressar linguagens que envolvem construtores com variveis ligadas. quociente, mdulo uma relao de colhas de representantes dessas Uma armao comumente Mas como fazer boas esrealizada a de que, a coleo de termos pode ser representada atravs de um conjunto

-equivalncia conveniente. classes de -equivalncia?

A Conveno de Variveis de Barendregt [8] arma que a escolha de um representante deve obedecer o seguinte princpio: sempre as variveis ligadas devem ter nomes novos, isto , mutualmente distintos de qualquer outro nome de varivel (livre) no contexto corrente. Contudo, apesar de ser comumente armado que a conveno de Variveis de Barendregt permite trabalhar com classes de

-equivalncia

sobre termos, isso no correto quando

se lida com recurso ou induo estrutural.

Exemplo 2.4.1.

Quando realizamos uma prova de uma dada propriedade

simples induo sobre a estrutura de para toda varivel

-termos, devemos provar que: x e todo -termo a. Nesse caso, no possvel colocar restries sobre o conjunto ao qual x pertence. Um caso concreto desse problema ocorre quando tentamos demostrar, por exempo, que para todo t, y, u : y fv(t) t{y/u} t. /
16

P , atravs de P (a) P (x.a);

De fato, se realizarmos induo estrural ordinria, isso , aquela que no considera classes de

-equivalncia,

teremos que abordar o caso em que

t x.s:

y fv(x.s) (x.s){y/u} x.s. /


Mas, para que possamos propagar a meta-substituio hiptese de induo:

y fv(s) s{y/u} s, /

{y/u}

em

(x.s)

e fazer uso da

necessitamos da garantia de que

x fv(u) /

(pela construo da funo recursiva de meta-substituio), e isso um impedimento para concluso da demonstrao, dado que no consiguimos deduzir tal informao do nosso conjunto de hipteses.
A abordagem nominal de sintaxes abstratas oferece o subsdio necessrio para se trabalhar com teorias que possuem ligaes de nomes (binding) e

-equivalncia.

Ela busca

considerar construtores e propriedades que so invariantes com respeito a permutao de nomes, o que d origem a uma atrativa e simples formalizao uso de recurso e induo para sintaxes abstratas mdulo

-equivalncia

[24]. Nosso objetivo aqui jusEssa seo busca

tamente obter uma formalizao dos princpios de induo e recurso sobre classes de

-equivalncia,

porm no varremos todos os detalhes dessa teoria.

fornecer um resumo dos principais conceitos que resultam nos teoremas de induo e recurso aplicados a gramtica do clculo

em [23], o qual buscamos estender para o

ex.
Os princpios usuais de induo e recurso estrutural so parametrizados por uma assinatura algbrica que especica quais so os possveis construtores dos termos. Necessitamos ento xar uma noo de assinatura que tambm especique as ligaes de variveis que ocorram nos termos, aqui utilizaremos a noo de assinatura nominal [24]. Do ponto de vista formal as ligaes de variveis precisam ser atmicas, no sentido de que suas estruturas so imateriais, se comparadas por um critrio de distino entre dois nomes de mesmo tipo. assinatura nominal. Portanto, essa classe de objetos chamada de tomo, em uma

A de todos os tomos e AS de todos os sorts sort A AS, que designa sorts para tomos e determina que os conjuntos AS e Aa := {a A | sort(a) = a} sejam enumerveis. Uma assinatura nominal consiste ento de um subconjunto de sorts de tomos, A AS, um conjunto D de sorts de dados e um conjunto C de construtores. Cada construtor K C tem uma aridade e um sort de resultado s D , o que notacionado por K : s.
Sero denidos dois conjuntos: o conjunto

de tomos. Tambm se dene uma funo

Na especicao de [23] a denio de tomo utiliza um recurso de denio indutiva chamado de tipo

Record, o qual permite uma maleabilidade maior nas declaraes sobre o tipo

em questo. Esse artifcio utilizado pela primeira vez na especicao na denio do

ExtFset, que modela o comportamento de conjuntos extencionais nitos. Os tipos aset e AtomT so construdos sobre a denio de ExtFset, para que o primeiro represente
um conjunto nito de tomos e o segundo, um conjunto innito de objetos dessa mesma classe.

Denio 2.4.2
indutiva:

(Aridade)

O Conjunto de

aridades

obtido pela seguinte denio

17

(i) Todo sort de tomo (ii) Todo sort de dados (iii) A aridade unitria (iv) Se (v) Se

a A s D 1

uma aridade; uma aridade;

uma aridade;

so aridades, ento e

1 2

uma aridade;

a A

uma aridade, ento

uma aridade.

Record AtomT : Type := mkAtom { atom : Set; asetR : ExtFset atom; aset := extFset asetR; atom_eqdec : forall (a b : atom), {a = b} + {a <> b}; atom_infinite : forall (S : aset), { a : atom |  In a S } } .
Figura 2.10: tomos.

Denio 2.4.3.
(i) Se (ii) Se

O conjunto de

termos
t

em uma assinatura nominal tem aridade

com suas re-

spectivas aridades, onde

t:

indica que

denido por:

a Aa

um tomo de sort pertence a

a,

ento

a:a

um termo;

K:s

t:

um termo, ento

Kt : s

tambm um termo;

(iii) O termo (iv) Se (v) Se

:1
e e

o nico termo de aridade unitria; so termos, ento

t1 : 1 a Aa

t2 : 2 t:

t1 , t2 : 1 2 a t: a

tambm um termo; tambm um termo.

um termo, ento

, T() o ar T() Ar() a funo de designao de um termo t para uma nica aridade . Para cada Ar(), denota-se T() o subconjunto {t T() | ar(t) = }, de termos de aridade .
Denotam-se o conjunto de todas as aridades sobre a assinatura conjunto de todos os termos sobre

Ar()

Exemplo 2.4.4.
do clculo

O exemplo clssico de uma assinatura nominal a denio da gramtica

Exemplicando:

X X

A constante A varivel

reresentada por

D; V x;

representada por

X (a b)

represntado por

A a, b L

X x.(x y)

representado por

A V x, V y
18

sorts de tomos sorts de dados construtores


V
t

D:t V :vt A:ttt L: v tt .

Figura 2.11: Assinatura nominal do clculo

X xz.((x y) z))

representado por

(L

A A V x, V y , V z ).

Os termos sobre a assinatura classes de

so justamente as rvores de sintaxe abstrata deter-

minadas sobre a assinatura ordinria (considerada na totalidade dos termos, e no nas tores so aqueles de

-equivalncia) associada a , os quais os sorts so as aridades de , os constru, somados a construtores para a unidade, pares e ligaes de tomos,

alm dos prprios tomos considerados como constantes particulares. Consequentemente pode-se utilizar recurso ordinria estrutural para se denir funes do conjunto T() para

e tambm possvel fazer uso de induo ordinria estrutural para se provar

propriedades sobre esse termos. Ainda no foi considerado o fato de que, termos do tipo a menos de renomeamentos do tomo

-equivalncia, t = t :

(onde

a t devem ser identicados a. Dada uma assinatura nominal , a relao de Ar() e t, t T() ) faz tais identicaes, e

indutivamente denida pelas seguintes regras.

Denio 2.4.5

(Denio de

assinatura nominal

a relao

-equivalncia em uma assinatura nominal) de -equivalncia entre termos denida por:

Em uma

(= .1)

a A a Aa a = a : a = :1

(= .2) (= .4)

(K : s C ) t = t : Kt = Kt : s

(= .3) (= .5) a A

t1 = t1 : 1 t2 = t2 : 2 t1 , t2 = t1 , t2 : 1 2

a, a , a Aa

a atm( a, t, a , t ) t{a := a } = t {a := a } : / a t = a t : a -equivalncia. t; e t{a := a em t por


denidas

Figura 2.12: Na regra

a } indica o termo resultante aps a substituio de todas as ocorrncias de a (assumindo que ambos so do mesmo sort). Essas duas operaes podem ser

(= .5), atm(t)

indica o conjunto nito de tomos que ocorre em

Denio 2.4.6
seguintes funes

atravs de recurso ordinria estrutural.

conjunto de tomos e substituio

(Funes: Conjunto de tomos e Substituio)

(sem preveno de captura de

Dado um termo, as

variveis), podem ser denidas atravs de recurso ordinria, respectivamente por:

19

(i) (ii) (iii) (iv) (v)

atm(a) atm(Kt) atm( ) atm( t1 , t2 ) atm( a t)

= = = = =

{a} atm(t) atm(t1 ) atm(t2 ) {a} atm(t) {

(i)

a {a := a } =

(ii) (Kt){a := a } (iii) {a := a } (iv) t1 , t2 {a := a } (v) ( a t){a := a }

a se a = a a se a = a = K(t{a := a }) = = t1 {a := a }, t2 {a := a } = a {a := a } t{a := a }

Figura 2.13: Funes recursivas: Conjunto de tomos e Substituio.

O ingrediente crucial na formulao da induo e recurso estrutural, para sobre uma assinatura nominal, conceito de suporte nito.

-termos a

Ele fornece uma maneira

elegante, baseada em aes de permutaes, de se expressar o fato que um dado tomo

fresh (novo) para um objeto matemtico. Isso permite caracterizar no somente tomos novos para termos, o que coincide com a denio do conjunto de variveis que no ocorrem livres no termo, mas tambm denir o signicado de tomo novo para objetos de tipo funcional. Ento, consideremos o seguinte conjunto de armaes:

(i) Seja

P erm o conjunto de todas as permutaes (nitas) de tomos, cujos elementos so, por denio, bijees : A A tais, que o conjunto {a A | (a) = a} nito e sort((a)) = sort(a);
por :

(ii) A operao de composio de permutaes

( )(a) := ( (a));

(P erm P erm P erm) denida


denota a permutao identidade e

(iii)

(P erm, ) um grupo de permutaes, 1 representa o inverso de ; P erm


nada mais so que um mapeamento de demais tomos;

onde

(iv) Dentre os elementos de

destacam-se as transposies (ou swapps)

(a a ),

que

para

e de

para

a,

xando os todos os

(v) um fato bsico de teoria de grupos, que qualquer por uma lista nita de transposies.

P erm
se

igual a composio ento

de nmero nito de transposies, assim uma permutao pode ser representada Por exemplo:

a, a , b, b , c, c A

[(a a ), (b b ), (c c )]

um elemento de

P erm.

20

Denio 2.4.7
pertencente a

(Ao de Permutaes)

(P erm X X),

cujo efeito sobre

Uma ao de

.x,
(i) (ii)

onde so observadas as seguintes propriedades,

P erm no conjunto X um funo (, x) P erm X denotado por para todo x X e , P erm:

.x = x .( .x) = ( ).x

Definition swapa (s : atom A * atom A) (c : atom A) := let (a, b) := s in if atom_eqdec _ a c then b else if atom_eqdec _ b c then a else c. Record SwapT (A : AtomT) (X : Set) : Set := mkSwap { swap : (A * A) -> X -> X; swap same : forall a x, swap (a, a) x = x; swap invol : forall a b x, swap (a, b) (swap (a, b) x) = x; swap distrib : forall a b c d x, swap (a, b) (swap (c, d) x) = swap (swapa A (a, b) c, swapa A (a, b) d) (swap (a, b) x) }.
Figura 2.14: Transposies ou Swaps.

Record PsetT (A : AtomT) (X : Set) : Set := mkPset { perm : permt A -> X -> X; perm_id : forall x, perm [] x = x; perm_compose : forall p q x, perm (p :++ q) x = perm p (perm q x) }.
Figura 2.15: Aes de permutaes. Em [23] aes de permutaes (Figura 2.15) so denidas pelo

Record PsetT. Swaps

so denidos primeiro para tomos, como uma funo que recebe um par ordenado de elementos e um terceiro elemento a ser trocado. Se o terceiro elemento for igual a qualquer um dos outros dois, no par, ento ele ser trocado, caso contrrio nada realizado. A ao de um swap sobre um objeto qualquer do tipo

Denio 2.4.8
X,
(i) Sendo e (ii) Se de (iii)

Set

(Suporte e Conjunto Nominal)

e um elemento

x X:

denida atravs do

Record SwapT.
um conjunto

Dada uma ao de

P erm,

A A um conjunto de tomos, = [(a a )] P erm, tem-se .x = x, A


suporte de

ento se para todo ento

a, a A /

denominado um

suporte de x;

de mesmo sort

suporte nito de x; um conjunto nominal se todo elemento x possui um suporte nito;


21

x,

e alm disso ele um conjunto nito, ento ele recebe o nome

(iv) Se

x possui suporte nito, suppX (x), onde X pode ser

ento o

menor suporte nito

de

denotado por

omitido se ele for claro no contexto.

Demonstrao. No item (iv) dessa denio, consideramos a existncia do um mnimo nmero de elementos para o conjunto suporte, e de fato necessitamos provar a existncia desse mnimo. Se digamos

o nico suporte nito de

ento, por denio,

ele ser o menor suporte nito de

x.

Mas se

tem mais de um suporte nito,

A2 , podemos vericar que A1 A2 tambm um suporte nito de x. Suponhamos a, a tomos de mesmo sort no pertencentes a A1 A2 ; ento devemos provar que (a a ).x = x. O caso trivial ocorre quando a = a (pois (a a ) = ); No caso em que a = a , consideremos um outro tomo a de mesmo sort de a e a , no pertencente ao conjunto nito A1 A2 {a, a }, ento (a a ) = (a a ) (a a ) (a a ) A1
e a uma composio de transposies tal que ela xa esto em

(dado que para cada um

desses trs pares de tomos, ambos elementos de cada par no esto em

A1

ou no

A2 ),

logo

(a a )

tambm xa

conforme se desejava demonstrar. Ento

segue imediatamente da propriedade de interseo de conjuntos, que se um elemento

xX

possui um suporte nito, ele possui tambm um menor suporte nito.

Variable A : AtomT. Variable X : Set. Variable P : PsetT A X. Definition supports (F : aset A) (x : X) := forall a b,  In a F ->  In b F -> perm P [(a, b)] x = x.
Figura 2.16: Conjunto Suporte.

Dado um elemento de um conjunto nominal, na maioria do tempo o interesse no saber qual o seu suporte, mas qual conjunto (innito) de tomos que no contm seu suporte. Em [23] o predicado

Denio 2.4.9

(Fresh)

suppX (x) suppY (y) = , x # y.

f resh

denido conforme exibe a Figura 2.17.

Se

x X

ento dito que

y Y so elementos de conjuntos nominais e x fresh (novo) para y , o que denotado por

Definition freshP (a : A) (x : X) := exists F : aset A, In a F supports P F x.


Figura 2.17: Predicado Fresh.

A Denio 2.4.9 bastante abrangente, pois dados quaisquer dois elementos de conjuntos nominais, possvel conceber se um ou no novo para o outro. Basta vericar ser interseo de seus menores suportes vazia. O Predicado de um conjunto nominal.

freshP em Coq mais restrito.

Ele permite caracterizar somente o fato de um tomo ser novo ou no para um elemento

22

Enunciaremos o seguinte lema sem demonstr-lo, para maiores detalhes recomendamos a leitura de [24].

Lema 2.4.10
(i) (ii) (iii)
Se

(Freshness)

X, y Y, f Y f s Z, P erm

Sejam

X, Y
e

Z trs conjuntos nominais. tomos a, a A de mesmo sort:


e

Para todo

.((a a ).x) = ((a) (a )).(.x); x # y .x # .y ; x # f e x # y x # (f y). X


e

so conjuntos nominais, ento possvel obter uma ao de permutaes

Y , de modo que se f X Y , ento .f igual o mapeamento de cada x X para .(f ( 1 .x)) Y . Essa
de tomos sobre o conjunto de todas as funes de para denio equivalente a ao fato da aplicao de funes ser respeitada por permutaes de tomos:

X Y,

.(f (x)) = (.f )(.x)


Infelizmente, mesmo no caso de que toda

(2.1)

serem conjuntos nominais, no h garantia de

f X Y possua um suporte nito. Por exemplo, se X = N e Y = A, ento dado que o conjunto A de tomos contvel, h funes sobrejetivas de N em A; ms no difcil de ver que, nesse caso toda f N A dever ter uma imagem nita para que
seu suporte seja tambm nito. Todavia, se

tem um suporte nito

A,

ento

.f

suportada por

{(a) | a A} f}

(tal

fato segue do Lema 2.4.10). Ento o conjunto:

X f s Y := {f X Y | A
de funes com suporte nito de

nito

A, A

suporte de

para

Y,

fechado sobre a ao de permutaes de

tomos e portanto um conjunto nominal.

Uma outra maneira de formar conjuntos nominais considerar conjuntos quocientes. Se

uma relao de equivalncia em um conjunto nominal

X,

ento tal como

X/ de classes de equivalncia possui .[x] = [.x]. Mais adiante, uma classe de equivalncia possuir o suporte igual a qualquer representante da classe. Ento X/ ser um conjunto nominal. O conjunto nominal T () de -termos (de aridade sobre uma assinatura nominal ) do conjunto nominal T() , um exemplo dessa construo.
subconjunto nominal de o usual conjunto uma ao de permutao tomos, dada por Essas classes de devido a prpria mais prxima da

X X,

-equivalncia [t] de termos t : , tm propriedades elementares, denio relao = (2.4.5), e assim possvel introduzir uma notao notao informal para as classes de -equivalncia, conforme segue: a A
e

(i) tomos : Se

caso, escreve-se somente

e T ()a , ento h um nico a Aa a;


23

tal que

e = [a] .

Nesse

(ii)

-termos construdos : Se s D e e T ()s , ento h um nico (K : s) C e T () , tal que existe t com e = [t ] e e = [Kt ] , nesse caso escreve-se somente Ke ;
e

(iii) Unidade : T ()1 contm uma nica classe de equivalncia, por

[ ] , a qual denotada

( );
tal que existe

(iv) Pares : Se

i = 1, 2,
escreve-se

1 , 2 Ar() e e T ()1 2 , ento h um nico ei T ()i , para ti com ei = [ti ] (i = 1, 2) e e = [ t1 , t2 ] . Nesse caso, somente (e1 , e2 );

(v) Ligaes de tomos : Se

a A , Ar() e e T () a , ento para cada a Aa com a # e h um nico e T () tal que existe t com e = [t ] e e = [ a t ] . Nesse caso escreve-se a.e .

Nesse ponto, temos a descrio dos principais fundamentos da abordagem nominal, com a construo de um conjunto quociente, mdulo uma relao de

-equivalncia,

alcanando uma denio precisa para os termos com ocorrncias de variveis ligadas. Mais alm, nas Seces 3 e 4.2, forneceremos exemplos de aplicaes de tais conceitos, no estabelecimento dos princpios de induo e recurso gramticas dos clculos

-estrutural,

para as respectivas

ex.

24

Captulo 3 O Clculo
O Clculo

[8] um sistema de reescrita de termos, que foi originalmente desenvolvido por

Alonzo Church [9] na dcada de 30. Inicialmente Church trabalhava em uma teoria que envolvia funes e lgica, objetivando uma fundamentao terica para tais conceitos, mas na totalidade o sistema desenvolvido continha inconsistncias, tal como foi demonstrado por Kleene e Rosser em [31]. Assim o subsistema formado somente pela parte da teoria de funes, cuja a consistncia foi demonstrada por Church [32], se tornou um modelo eciente. O curioso que, de acordo com Russell [33], a nomenclatura Clculo a notao

surgiu

devido a um erro tipogrco na publicao do trabalho de Church, que pretendia utilizar

x.2x + 1,

para denotar uma funo de

cujo corpo era

2x + 1.

recursos tipogrcos da poca induziram o posicionamento do smbolo no em cima da letra x, mas a sua esquerda, o que resultou em x.2x + 1. Depois em uma outra publicao apareceu

No entanto os

x.2x + 1,

e assim o nome Clculo

acabou por se difundir como a

nomenclatura ocial do sistema de Church.

a ::= x | (a a) | (x.a)
A denio acima que representar que, um termo clculo

(3.1)

poder ser uma varivel; uma

aplicao de termos; ou uma abstrao de um termo por uma varivel. A gramtica do

baseada portanto em duas operaes: aplicao

(a b);

e abstrao

(x.a),

qual representa a funo de varivel gramtica do clculo

e corpo

a.

ento notacionado que

Se a um a .

termo construdo a partir da

x1 . xk .a (x1 . (xk .a)) x1 . . . xk .a; enquanto que aplicaes sucessivas so associadas esquerda: a1 a2 a3 . . . an (. . . ((a1 a2 ) a3 ) . . . an ). Por exemplo, ((y u) x) ((x u) (w v)) escrito como (yux (xu (w v))).
Abstraes sucessivas so associadas direita, isto , que abreviado por

25

Variable tmvar : Set Inductive tm : | var : tmvar | app : tm -> | lam : tmvar
Uma denio da gramtica do clculo

Set := -> tm tm -> tm -> tm -> tm.


em Coq, dada acima. Mas esse tipo de

denio tem um problema bem conhecido. Os construtores de uma declarao no deveria ser verdade, se quisermos incluir a relao de igualdade (=) pr-construda no Coq, pois: por [23], justamente a especicao do clculo

so sempre injetivos por denio, no entanto no caso do construtor abstrao (lam) isso

Inductive

x.a = y.b via uma

-equivalncia na relao de x = ya = b. A soluo dada


abordagem nominal, a qual

ns apresentamos na Seo 3.1. As funes recursivas de variveis livres e comprimento

de um termo podem ser obtidas atravs dos princpios de recurso ordinria (que no
necessitam considerar a relao de O abstrator

-equivalncia

entre termos).

x do termo (x.a) liga todas as ocorrncias da varivel x em a, e qualquer outra varivel que no est ligada por nenhum outro abstrator em a, denominada varivel livre do termo (x.a). Ento, por exemplo y ocorre livre em x.(y x), e x ocorre ligado
no termo.

Denio 3.0.11
(i) fv(x)

junto das variveis livres de a , denotado por fv(a), recursivamente por:


:= {x} :=
fv(a) fv(b) fv(a) \ {x} (Comprimento de um termo

(Conjunto de variveis livres de um termo

a )

Denimos o

con-

(ii) fv(a b)

Denio 3.0.12
termo

(iii) fv(x.a)

:=

a ,

a )

denida recursivamente por: ento

A funo comprimento

de um

(i) Se (ii) Se (iii) Se

a x,

L(a) = 0; L(a) = L(a0 ) + L(a1 ) + 1;

a (a0 a1 ), a x.a0 ,

ento

ento

L(a) = L(a0 ) + 1.
composto de uma nica regra de reescrita, que

O sistema de reescrita do clculo

Denio 3.0.13
a{x/b}
cias livres de

chamada

e dada por: (Regra

) (x.a)b a{x/b}

representa o termo resultante da substituio simultnea de todas as ocorrn-

em

por

b.

Essa operao denida separadamente, atravs de uma

funo recursiva. Dada a denio da gramtica do clculo (Seo 3.1) e de tal funo recursiva (Seo 3.2), possvel denir a regra

em Coq, conforme a Figura 3.1. Essa

26

declarao indutiva arma que tipo por

rule_beta uma relao binria entre termos, pois tem tm -> tm -> Prop, e alm disso ela relaciona um a aplicao de uma abstrao um termo ((& x, s) ! t)) a uma meta-substituio (s{x := t}). Estamos uti:= (a ! b)),
abstraes (x.a

lizando aqui uma notao criada nos arquivos da especicao, para denotar aplicaes ((a b)

b})

:= & x, a)

e a meta-substituio (a{x/b}

e que acreditamos facilitar o entendimento das declaraes. Para a

:= {x := prpria regra

criamos a notao:

a ->_Beta b := rule_beta a b.

Inductive rule_beta : tm -> tm -> Prop := reg_rule_beta : forall (s t : tm)(x : tmvar), rule_beta ((& x, s) ! t) (s{x := t}).
Figura 3.1: Denio da regra

. a, b
e

Denio 3.0.14
distintas, a (i) (ii) (iii) (iv)

meta-substituio a{x/b} denida recursivamente por:


se

(Meta-substituio para

-termos)

Sendo

x, y

variveis

x{x/b} := b y{x/b} := y , x=y

(t v){x/b} := (t{x/b}) (v{x/b}) (y.t){x/b} = y.t{x/b},


se

x=y

y /

fv(b)

A restrio  x

= y e y fv(b) /
O termo

no item

(iv) busca evitar um problema chamado coliso x


no

tem nenhuma relao com o parmetro

Exemplo 3.0.15.

entre variveis livres e ligadas de um termo. Consideremos o seguinte exemplo:

y.x

representa uma funo constante onde o corpo

y;

aplicando a substituio

{x/y}

a este termo o que seria

de forma ingnua (sem observar as restries) obtm-se uma inconsistncia do sistema.

y.y ,

que a representao da

funo identidade, e portanto o termo obtido tem semntica distinta de

y.x,

3.1 Classes de -equivalncia (/= )


De fato, a funo da denio 3.0.14 no est denida para todo do item

t ,

pois as condies

(y.t). A -equivalncia, onde qualquer termo (z.t ) -equivalente a (y.t) (fato denotado por z.t = y.t) desde que z j no ocorra livre em t e t seja igual a termo t, com o renomeamento de todas as ocorrncias livres de y por z . Ento por exemplo: x.x(z x) = y.y(z y). Barendregt [8] abordou essa questo,
restringem tambm a propagao da recurso dentro do termo soluo dada, primeiramente denir uma relao propondo uma condio de higiene para os termos: Os nomes utilizados para variveis

(iv)

livres devero ser sempre distintos dos nomes dados para variveis ligadas em um termo .

27

No entanto essa condio no dispensa o uso da relao de se ento funes recursivas no sobre relao

-equivalncia.

Consideram-

mas nas classes de equivalncia formadas pela

isto , o conjunto

/= . (x.a)
representa uma funo, cuja varivel

Deve-se lembrar que como

x,

logo seu

renomeamento no deve gerar nenhum prejuzo de signicado.

Exemplo 3.1.1.

f :RR f (x) = x

f :RR f (y) = y

A abordagem nominal da seo 2.4, pode ser aplicada ao clculo o conjunto quociente

comforme exibido

no Eexemplo 2.4.4, permitindo a formalizao dos princpios de induo e recurso sobre

/= . O construtor D dessa assinatura representa uma constante, a qual ser chamada dot (). J V , A e L so os respectivos construtores de varivel, aplicao e abstrao. Nesse contexto, a relao de -equivalncia entre os termos dada
por:

(= .D)

D = D a, a , a AV

(= .V )

a AV V a = V a

(= .A)

u = u : t & v = v : t A u, v = A u , v : t

(= .L)

a {a} fv(t) {a } fv(t ) (a a )u = (a a )u : t / L a u = L a u : t -equivalncia


no clculo

Figura 3.2:

Em [23] a denio da gramtica do clculo

inicia por assumir que as variveis ligadas

de um termo devero ser designadas por ndices e as variveis livres por nomes. Esse tipo de formalizao conhecida como locally nameless representation [34, 35], e originalmente surge em implementaes para o assistente de prova Isabelle/HOL [4]. Nomes so denidos pela estrutura atmica conforme mostrado na Figura 2.10. A denio indutiva

subconjunto de termos bem formados. De um modo geral, dado um termo t, seu tipo

Phi n se o maior ndice de uma varivel pendurada que ocorre nele, menor que n. Entende-se por varivel pendurada de ndice n, uma varivel do tipo pbound n que ocorre em um posio livre no termo. No difcil de se vericar que (n : nat), Phi n Phi (n + 1).
Assim, deni-se o conjunto de termos bem formados (tm) como sendo

Phi

cria uma classe de termos atravs da qual ser derivado um

Phi 0,

o que

exibido na Figura 3.5. Os construtores do clculo so ento identicados pelas subestruturas de

Exemplo 3.1.2.
(i) (ii) (iii)

Phi

que tem tipo

Phi 0. Phi,
so dados por:

Alguns exemplos de termos denidos em

dot Phi 0; x Phi 0; ( 0) Phi 0;


28

(iv) (v)

0 Phi 1 (( 0)(1 x)) Phi 2;


. . .
Phi 3 Phi 2 Phi 1 Phi 0

Figura 3.3: Incluso progressiva dos conjuntos

Phi n.

No caso da ocorrncia de de variveis ligadas, necessrio que se dena uma funo recursiva sobre a estrutura de um termo

de tipo

Phi n,

Phi,

a qual substitui a ocorrncia de uma varivel livre em

pelo ndice

funo que realiza essa tarefa chamada

n, resultando em um termo de tipo (n + 1). A abs. E ela aparece no construtor lam realizando

tarefa de realizar a ligao de um dado nome de varivel a um termo.

Inductive Phi : nat -> Set := | pdot : forall (n : nat), Phi n | pfree : forall (n : nat), tmvar -> Phi n | pbound : forall (n i : nat), i < n -> Phi n | papp : forall (n : nat), Phi n -> Phi n -> Phi n | plam : forall (n : nat), Phi (S n) -> Phi n.
Figura 3.4: Conjunto

Phi.

Definition tm : Set := Phi 0. Definition Definition Definition Definition dot var app lam : (a (s (x tm := pdot 0. : tmvar) : tm := pfree 0 a. t : tm) : tm:= papp 0 s t. : tmvar) (b : tm) : tm := plam 0 (abs x b).
.

Figura 3.5: Termos bem formados e construtores do clculo

Os princpios de induo e recurso ordinria estrutural sobre termos, isto , no considerando as classes uso estrutura indutiva de

-equivalncia, podem ser obtidos em alguns casos, somente fazendo Phi, automaticamente gerada pelo Coq. Esse o caso, por

exemplo, das construes de funes recursivas para conjunto de variveis livres e para o

29

comprimento de um termo. O princpio induo ordinria de

abs,

permitem que se demonstre o teorema da

Phi, e a denio da funo -equivalncia entre termos.


-equivalncia,
para o nico cono

A declarao da Figura 3.6 exibe um teorema de strutor que tem varivel ligada no clculo enunciado do teorema se resume a:

, a abstrao. Em notao matemtica ab AV , s : t, b fv(s) a.s = b.(a b)s. /

Theorem eq_lam : forall a b s,  In b (fvar s) -> & a, s = & b, (perm tmP [(a, b)] s).
Figura 3.6: Teorema de

-equivalncia

para o construtor abstrao.

3.2 Recurso e induo -estrutural


a assinatura nominal da Figura 2.11. Ento T()t o conjunto de -termos e T ()t o conjunto quociente /= . Podemos ento utilizar a notao para estruturas com uma relao de -equivalncia denida, exibida ao nal da Seo 2.4. Apresentamos ento, no contexto do clculo , os teoremas de induo e recurso -estrutural, ao lado
Seja das declaraes correspondentes ao cdigo da especicao em Coq.

Teorema 3.2.1
junto (i) (ii) (iii) (iv)

(Teorema de Induo

T ()t , para provar que

-estrutural para o clculo ) Dado S = T ()t , suciente mostrar que:

um subcon-

D S; a AV , V a S ; e1 e2 S, A (e1 , e2 ) S ; F
nito

AV , a e, a F L a.e S . /

Theorem tm_induction : forall (P : tm -> Type) (F : aset tmvar), (P dot) -> (forall a, P (var a)) -> (forall s, P s -> forall t, P t -> P (s ! t)) -> (forall a,  In a F -> forall s, P s -> P (& a, s)) -> forall x : tm, P x.
Figura 3.7: Teorema de induo

-estrutural

para o Clculo

No Teorema 3.2.2 as condies so: primeiro o fornecimento de funes particulares, isto , indexadas pelos construtores, todas das quais com um suporte nito

F;

e alm

disso uma condio nita para ligaes (FCB), a qual exige que sempre exista um

a AV ,

30

tal que

aF /

x, a # fL (a, x).

A armao realizada de que, existe uma nica famlia

de funes (mdulo equivalncia extencional), tal que essa famlia tem comportamento de uma funo recursiva sobre

Teorema 3.2.2

/= . -estrutural
para o clculo

(Teorema de Recurso

so dados um conjunto nominal

e funes:

Suponhamos que

fD X fV AV f s X fA X X f s X fL AV X f s X

Variables (R : Set) (RP : PsetT tmvar R). Variable (f_dot : R). Variable (f_var : tmvar -> R). Variable (f_app : tm -> R -> tm -> R -> R). Variable (f_lam : tmvar -> tm -> R -> R).
Figura 3.8: Funes indexadas pelos construturas do Clculo

Todas as quais com um suporte nito de tomos satisfeita:

F.

E alm disso a seguinte condio

a AV , a F & x X, a # fL (a, x). /

Variable (fcb_lam : exists b,  In b F forall x y, freshP RP b (f_lam b x y)).


Figura 3.9: Condio FCB para o construtor abstrao.

Ento existe uma nica famlia de funes, de suporte nito satisfazendo: (i) (ii) (iii) (iv)

F (f /= f s X )

f (D) = fD ; f (V a) = fV a; f (A (e1 , e2 )) = fA (f e1 , f e2 ); a F f (L a.e) = fL a.(f e). /

Theorem tm_rec_dot : tm_rec dot = f_dot. Theorem tm_rec_var : forall a, tm_rec (var a) = f_var a. Theorem tm_rec_app : forall s t, tm_rec (s ! t) = f_app s (tm_rec s) t (tm_rec t). Theorem tm_rec_lam : forall a s,  In a F -> tm_rec (& a, s) = f_lam a s (tm_rec s).
31

Conclumos aqui, uma descrio da especicao de [23], do clculo natura nominal.

via uma assi-

O passo seguinte ser a construo de uma funo recursiva, a meta-

substituio, utilizando o Teorema 3.2.2. Esse trabalho foi desenvolvido em Coq, tambm por Aydemir et al em [23].

3.3 A operao de meta-substituio denida sobre /=


A aplicao do Teorema 3.2.2 na construo da operao de meta-substituio, tem como resultado a denio exibida logo abaixo. Essa declarao fornece as funes indexadas para cada um dos construtores do clculo, sendo que a ltima linha da denio arma qual ser o conjunto

F := add y (fvar s),

suporte de todas as funes. Os enunciados dos

lemas que retratam esse fato so dados logo abaixo da denio.

Section Meta_substitution. Variable y : tmvar. Variable s : tm. Definition meta_subst : tm -> tm := tm_rec tm dot (fun x => if atom_eqdec tmvar x y then s else (var x)) (fun s s' t t' => s' ! t') (fun x t t' => & x, t') (add y (fvar s)). Lemma meta_subst_supp_dot : supports tmP (add y (fvar s)) dot. Lemma meta_subst_supp_var : supports (tmvarP > tmP) (add y (fvar s)) (fun x : tmvar => if atom_eqdec tmvar x y then s else var x). Lemma meta_subst_supp_app : supports (tmP > tmP > tmP > tmP > tmP) (add y (fvar s)) (fun _ s' _ t' : tm => s' ! t'). Lemma meta_subst_supp_lam : supports (tmvarP > tmP > tmP > tmP) (add y (fvar s)) (fun (x : tmvar) (_ t' : tm) => & x, t'). meta_subst

possvel ento concluir que a funo

tem de fato, o comportamento

desejado, ou seja, verica-se a sequncia de armaes abaixo, quem descrevem que para

32

cada construtor haver a propagao da funo de forma recursiva, sendo que no caso do construtor abstrao a varivel ligada no poder pertencer a conjunto conjunto

F.

E por m o

demonstrado ser tambm o suporte de

meta_subst.

Theorem meta_subst_dot : meta_subst dot = dot. Theorem meta_subst_var_eq : meta_subst (var y) = s. Theorem meta_subst_var_neq : forall x, x <> y -> meta_subst (var x) = (var x). Theorem meta_subst_app : forall q r, meta_subst (q ! r) = (meta_subst q) ! (meta_subst r). Theorem meta_subst_lam : forall x t, x <> y ->  In x (fvar s) -> meta_subst (& x, t) = & x, (meta_subst t). Theorem supports_meta_subst : supports (tmP > tmP) (add y (fvar s)) meta_subst. -

3.4 O conjunto SN
A obteno de um conjunto de regras indutivas para denio do conjunto A demonstrao da PSN para o clculo para o conjunto

SN ,

algo

que possibilita a demonstrao de propriedades de normalizao para o prprio clculo

ex,

utiliza tambm uma caracterizao indutiva

SN ex . ,
que so dadas seguir.

Iniciamos com alguns exemplos de redues no clculo

a) Exemplo 3.4.1. (y.(x.x y)y)) bb (y.(x y){x/a}) b := (y.(a y)) b (y.(a (a y){y/b} := (a b) Exemplo 3.4.2. (x.(x x)) (x.(x x)) (x.(x x)) (x.(x x))

Esse ltimo exemplo mostra que o clculo

no terminante, dado que

(x.(x x)) (x.(x x))

reduz para si mesmo. Tal processo pode ser repetido indenida-

mente, gerando assim um caminho de reduo de comprimento

O processo de reduo de um termo no nico, no Exemplo 3.4.1 havia duas possibilidades para aplicao da regra

na raiz do termo ou no seu interior. Essas escolhas Quando adotado um

podem seguir uma lgica, ou podem vir de maneira aleatria. processo chamado de Estratgia de Reduo [18]. Uma estratgia de reduo do clculo

procedimento de escolha para qual parte o termo dever ser primeiramente reduzida, esse

pode ser ento classicada como:

33

(i) maximal, se ela computa para um termo, o maior caminho de reduo at uma forma

normal, caso ela exista; seno ela retorna um caminho de reduo de comprimento

;
(ii) minimal, se ela computa para um termo, o menor caminho de reduo at uma forma normal, caso ela exista; seno ela retorna um caminho de reduo de comprimento

;
(iii) perptua, se ela computa para um termo, um caminho de reduo de comprimento

, caso ele exista; seno ela retorna n N at uma forma normal, e;

algum caminho de reduo de comprimento

(iv) normalizante, se ela computa para um termo, um caminho de reduo comprimento

n N at uma forma normal, se ela existe; seno ela retorna um caminho de reduo de comprimento .
Os seguintes lemas so teis para se demonstrao de que uma dada estratgia de reduo perptua no clculo

, permite encontrar uma denio indutiva para o conjunto

SN .
que

Lema 3.4.3
x /

(Lema Fundamental da Perpetualidade)

fv(a0 ), ento para todo

n 1

Assumindo que

a1 SN

sempre

a0 {x/a1 } a2 ...an SN (x.a0 ) a1 ...an SN a0 {x/a1 } a2 ...an SN . Ento a0 , a2 , ..., an SN . Se x fv(a0 ), / ento, por hiptese, a1 SN . Se x fv(a0 ), ento a1 ocorre em alguma posio do termo a0 {x/a1 } a2 ...an , e portanto a1 SN . Se (x.a0 ) a1 ...an SN , ento qualquer /
Demonstrao. Seja
reduo pertencente a um caminho innito, deve ser da forma:

(x.a0 ) a2 ...an (x.a0 ) a2 ...an a0 {x/a1 } a2 ...an ...


E dado que,

aa bb : a a & b b a{x/b} a {x/b }


Ento h um caminho innito de reduo dado por :

a0 {x/a1 } a2 ...an a0 {x/a1 } a2 ...an ...


Contradizendo o fato de que

a0 {x/a1 } a2 ...an SN .

 (n

= 1) (a0 {x/a1 } a2 ...an a0 {x/a1 })

34

Corolrio 3.4.4. Lema 3.4.5


(i) (ii) (iii) Ento

Se

a1 SN ,

ento para todo

n 1:

a0 {x/a1 } a2 ...an SN (x.a0 ) a1 ...an SN


Demonstrao. Aplicao direta do Lema 3.4.3.

(Caracterizao Indutiva de

SN )

a1 , ..., an X x a1 ...an X ; a X x.a X ; a1 X e a0 {x/a1 } a2 ...an X (x.a0 ) a2 ...an X ; SN = X . SN X X SN .


derivaes de

Seja

denido indutivamente por:

Demonstrao. necessrio demonstrar a dupla incluso

(a SN a X) pode ser demonstrada no somente pelas possveis em SN , mas atravs da induo lexicogrca no par l (a), L(a) :
1. 2. 3.

a x b1 ...bn . Ento b1 , ..., bn SN . E por hiptese de induo b1 , ..., bn X , logo a X. a x.b. Demonstrao anloga ao caso anterior. a (x.b0 ) b1 ...bn . Ento b1 SN , b0 {x/b1 } b2 ...bn SN , logo por hiptese de induo, b1 X e b0 {x/b1 } b2 ...bn X , ento a X . (a X a SN ) a demostrao realizada de induo na estrutura de X : a x b1 ...bn . Ento b1 , ..., bn X . E por hiptese de induo b1 , ..., bn SN , logo a SN . a x.b. Demonstrao anloga ao caso anterior. a (x.b0 ) b1 ...bn . Ento b1 X , b0 {x/b1 } b2 ...bn X , logo por hiptese de induo, b1 SN e b0 {x/b1 } b2 ...bn SN , ento a SN .

Para 1. 2. 3.

35

Captulo 4 Clculos de substituies explcitas


No clculo

o processo de avaliao modelado pela

-reduo

e a troca de parmetros

formais, por seus correspondentes argumentos modelada pela substituio. Enquanto que a substituio no clculo

uma operao em um meta-nvel, descrita fora da

gramtica do clculo, em clculos de substituies explcitas este processo internalizado e manipulado por smbolos e regras de reduo, dentro da prpria sintaxe do sistema, objetivando fornecer um formalismo adequado e mais prximo das implementaes reais. Clculos de substituies explcitas, tem aplicaes em diferentes reas da computao, tal como programao lgica e funcional, teoria da prova, formalizao de teoremas, linguagens orientadas a objeto, dentre outras. Por exemplo, a denio da regra bem claros nesse contexto. H de se vericar que os novos formalismos, que implementam substituies explcitas, atendem simultaneamente a determinadas propriedades, como a simulao de um passo Existem diversas formas de se denir um clculo de substituies explcitas, todavia algumas restries so bastante relevantes.

em 3.0.13 e da substituio em 3.0.14, so limites

da

-reduo, a conuncia em termos abertos e fechados , a preservao da normalizao

forte e a composio completa, o que algo no muito comum.

4.1 Clculos em notao de de


como um ndice natural A gramtica do

Bruijn (, )
[1], o qual utiliza ndices ,
pois ela tem

Um primeiro exemplo de clculo de substituies explcitas o

de de Bruijn [36] para designao de variveis. Essa notao considera qualquer varivel

n.
um pouco mais complexa do que a do clculo

duas classes de objetos : termos e substituies. A notao com ndices de de Bruijin tem vantagens, por exemplo ela dispensa o uso de resenta uma classe de equivalncia, de

-converso, j que um termo do tipo 1 reptodos os termos x.x, onde x pode ser renomeado
metavariveis,
e abertos so os que possuem. Meta-

 Termos fechados so aqueles que no possuem

varivel um conceito que denido para cada clculo de modo particular, mas sempre representa um buraco, isso , um lugar no termo que pode ser preenchido por uma variedade de outros termos.

36

por qual outra varivel. Em contrapartida os clculos com ndices adicionam uma diculdade com relao a manipulao de sua notao, que mais adequada mquinas do que a humanos.

TERMOS SUBSTITUIES

M, N S, T

:= :=

1 | X | M | (M N ) | M [S] id | | M.S | S T M [N.id] (M [S] N [S]) M [1.(S )] M [S T ] M M M [T ](S T ) S S S id S N,


se

(4.1)

(Beta) (App) (Abs) (Clos) (Varcons) (Id) (Assoc) (Map) (IdL) (IdR) (VarShift) (Scons) (Eta )

(M N ) (M N )[S] (M )[S] M [S][T ] 1 [M.S] M [id] (M.S) T id S S id 1. 1 [S].( S) (M 1)

(S1 S2 ) T S1 (S2 T )

(ShiftCons) (M.S)

M = N [] .

Figura 4.1: Regras de reescrita do Clculo

Exemplo 4.1.1.
0
pela regra

O construtor denido de forma que, para um natural n N, temos n[] := n e n + 1 := 1[]n . Assim, por exemplo o termo z.x.(x x) z representado por (1 1) 1[] e w.z.x.(x z) w representado por (1 1[]) 1[]2 .
O conjunto de regras do

pretende simular a regra , sendo que o precesso estartado


e a operao de substituio executada pela aplicao das

(Beta),

do

Exemplo 4.1.2.

demais regras.

Segue um exemplo de simulao da regra

no clculo

(x.(x x) z ((1 1)) 1[]2 (1 1)[1[]2 .id] ((1[1[]2 .id]) (1[1[]2 .id]))

(Beta) (App) (Varcons)


37

(x x){x/z} := (z z) (1 1)[1[]2 .id] ((1[1[]2 .id]) (1[1[]2 .id])) (1[]2 1[]2 ) (z z)

No clculo

a meta-substituio, isso , aquela equivalente a que gerada na regra do , denida para a gramtica do novo clculo atravs de recurso sobre a estrutura
(Meta-substituio no clculo

dos termos.

Denio 4.1.3
a funo (i) (ii)

meta-substituio denida recursivamente por:

Para todo termo

do clculo

(M1 M2 ) {n/N } := M 1 {n/N } M 2 {n/N } (M ) {n/N } := M {n + 1/N + } m 1 , se m > n N , se m = n m {n/N } := m , se m n M +i


tambm denido recursivamente por:

(iii)

Onde

(a) (b) (c)

(M N )+i := (M +i N +i ) (M )+i = (M +(i+1) ) { n + 1 , se n > i +i n := n , se n i

Observao:

Exemplo 4.1.4.
e no clculo

A elevao de um termo

sua

0-potncia

denotada por

M +.

Exibimos uma comparao entre as operaes de subtiuio no clculo

(x.y x){y/z w} = x.(y x){y/z w} = x.y{y/z w} x{y/z w} = x.(z w) x + (2 1){1/3 4} = (2 1){1 + 1/(3 4) } = 2{2/(4 5)} 1{2/(4 5)} = (4 5) 1
O clculo

recebeu ainda uma extenso, a qual foi denominada

[37].

Ns a

citamos nesse texto, no somente porque ela um exemplo importante como comparao com os demais clculos, mas pelo fato de que o clculo

j possui uma especicao em

Coq, realizada [25], a qual serve de referncia para as novas especicaes de clculos de substituies explcitas. Inicialmente ns adaptamos a especicao de [25] para denir a gramtica do clculo

o que foi uma tarefa relativamente simples, pois as denies

indutivas do Coq a realizam de forma plena, gerando automaticamente os princpios de induo e recurso estrutural. Dado que o

e so clculos de designao de variveis


Quando avanamos,

por ndices de de Bruijin, no necessrio denir em suas gramticas, conceitos como

-equivalncia

e o conjunto quociente denido por essa relao.

optando por trabalhar com o clculo na especicao do clculo

ex, que lida com nomes ao invs de ndices, tivemos

que estudar os conceitos desenvolvidos nas seces 2.4 e 3.2, os quais aparecem aplicados

em [23].

38

4.2 Clculos com nomes (x, ex, es)


Uma maneira natural de especicar o clculo o que resumidamente, resulta no clculo

com substituies explcitas, a codi-

cao explcita da denio 3.0.14, tal que ela continue funcionando, mdulo

-equivalncia,

[38, 39, 40, 41]:

a ::= x | (a a) | (x.a) | a[x/a]

(4.2)

Inductive Phi : nat -> Set := | pdot : forall (n : nat), Phi n | pfree : forall (n : nat), tmvar -> Phi n | pbound : forall (n i : nat), i < n -> Phi n | papp : forall (n : nat), Phi n -> Phi n -> Phi n | plam : forall (n : nat), Phi (S n) -> Phi n | psubst : forall (n : nat), Phi (S n) -> Phi n -> Phi n.
Figura 4.2: Conjunto Se

Phi

acrescido do construtor da substituio explcita.

s construdo a partir da denio indutiva (4.2), ento esse fato notacionado por s T . Adaptamos a especicao de [23] para esse nova gramtica, incluindo nela o construtor da substituio explcita (a[x/a]). O primeiro passo foi adicionar um novo construtor na denio indutiva de Phi, da especicao. A -equivalncia estendida para o caso do construtor da substituio explcita, onde por exemplo: (y.x)[x/y] = (z.x)[z/y]. O que representado atravs dos teoremas da Figura 4.3.

Theorem eq_lam : forall a b s,  In b (fvar s) -> & a, s = & b, (perm tmP [(a, b)] s). Theorem eq_subst : forall a b s t,  In b (fvar s) -> s [a | t] = (perm tmP [(a, b)] s) [b | t] .
Figura 4.3: Teorema de

-equivalncia

para a abstrao e a substituio explcita.

Da mesma forma que na especicao do clculo inerentes a denio de

, os princpios de recurso ordinria,

Phi,

permitem a construo das funes recursivas das variveis

livres e do comprimento de um termo.

Denio 4.2.1

(Conjunto das variveis livres de

de um dado termo

tT,

tT)

notacionados por fv(t), denido indutivamente por:

O conjunto das variveis livres

39

fv(x)

Denio 4.2.2
(i) Se (ii) Se (iii) Se (iv) Se

:= {x} fv(x.u) := fv(u) \ {x} fv(u v) := fv(u) fv(V ) fv(u[x/v]) := (fv(u) \ {x}) fv(v)
(Comprimento de

tT)

denida recursivamente por:

A funo comprimento

L de um termo t T ,

t x,

ento

L(t) = 0; L(t) = L(s) + L(v) + 1; L(t) = L(s) + 1; L(t) = L(s) + L(v) + 1.

t (s v), t x.s,

ento ento

t s[x/v],

ento

x.t e t[x/u] ligam as ocorrncias livres de x em t. usada a notao tn para a lista de n (n 0) termos t1 , ...., tn e utn para ut1 ...tn , o que uma abreviao de (...((ut1 ) t2 )... tn ).
Portanto,

(x.t)u x[x/u] t[x/u] (tu)[x/v] (y.t)[x/v]

B Var Gc App Lamb

t[x/u] u t t[x/v] u[x/v] y.t[x/v]

se

x fv(t) /

Figura 4.4: Regras de reescrita do Clculo

x.

O sistema de reescrita acima (Figura 4.4) pode ser visto como o mnimo desenvolvimento necessrio para se incluir a operao de substituio de forma explcita. Entretanto, a implementao do operador de substituio explcita tem um preo. De fato, enquanto o clculo

conuente, o clculo aqui denido sofre de no mnimo um bem conhecido

exemplo de divergncia no juntvel:

t[y/v][x/u[y/v]] ((x.t)u)[y/v] t[x/u][y/v]


a adio da regra de reescrita:

(4.3)

Diferentes solues so adotadas com intuito de fechar este diagrama. Uma soluo

t[x/u][y/v] Comp t[y/v][x/u[y/v]]


A restrio

se

y fv(u)

(4.4)

y fv(u) em (4.4) feita, justamente porque nesse caso especco, a regra: t[x/u][y/v] Comp t[y/v][x/u[y/v]] fundamentalmente necessria para garantia da conuncia. Alm disso, tomando-se somente o sistema x (sistema formado por todas as regras do clculo, exceto a regra B ) e no se inserindo a restrio y fv(u) aplicao / / da regra (4.4), pode-se ter um caso de no terminncia, quando y fv(u) e x fv(v):
40

t[x/u][y/v] Comp t[y/v][x/u[y/v]] Gc t[y/v][x/u] Comp t[x/u][y/v[x/u]] Gc t[x/u][y/v] Comp ...


A regra (4.4) nada mais que uma regra de composio para substituies explcitas. Esse tipo de regra aparece primeiramente no

e dentre outras coisas ela importante

para estabelecer a conuncia em termos abertos [10, 37]. Infelizmente o sistema. A equao

no con-

uente em termos abertos (termos com meta-variveis), o que uma decincia desse

t[x/u][y/v] =C t[y/v][x/u]

se

y /

fv(u)

&x /

fv(v), adiciona, ao mesmo

tempo, composio completa e conuncia em meta-termos ao reescrita do

x, e anexada ao sistema , ,
tem

da Figura 4.4 juntamente com (4.4), resultando na denio do conjunto de regras de

ex.

Muitos clculos de substituies explcitas tal como o

composio completa, mas no preservam a normalizao forte, como foi constatado por Mllies [42]. Mesmo assim, a composio completa e a normalizao forte podem ocorrer juntas; este , por exemplo, o caso do clculo

ex

e do

es

[10].

No Coq denimos o conjunto de regras atravs de declaraes indutivas, conforme exemplica a Figura 4.7. A equao

C declarada na forma de um axioma na especicao.

Axiom equation_C : forall (t u v:tm) (x y:tmvar),  In y (fvar u) ->  In x (fvar v) -> t [x | u] [y | v] = t [y | v] [x | u].
Figura 4.5: Equao

C.

Equao: Regras:

t[x/u][y/v] =C B Var Gc App Lamb Comp

t[y/v][x/u]

se

y fv(u) & x fv(v) / /

(x.t)u x[x/u] t[x/u] (tu)[x/v] (y.t)[x/v] t[x/v][y/v]

t[x/u] u t t[x/v] u[x/v] y.t[x/v] t[y/v][x/u[y/v]]

se

x fv(t) / y fv(u) ex.

se

Figura 4.6: Regras de reescrita do clculo A relao de reduo

a relao gerada pela aplicao de qualquer uma das

regras da Figura 4.6, exceto a regra

B,

em qualquer posio de um termo: na raiz, no

lado esquerdo ou direito de uma aplicao, no corpo de uma abstrao e no corpo ou no argumento de uma substituio explcita. Denota-se

relao de equivalncia reduo (mdulo

=e )

=e gerada pela unio ex e ex so respectivamente


sse sse

Bx para a = =C . De

relao dada por

B x.

forma que, as relaes de

denidas por:

t ex t t ex t

s, s s, s

tal que tal que 41

t =e s x s =e t t =e s Bx s =e t

Inductive rule_b: tm -> tm -> Prop := reg_rule_b : forall (s t : tm)(x : tmvar), rule_b ((& x, s) ! t) (s[x | t]). Notation "M ->_B N":= (rule_b M N) (at level 59, left associativity). Inductive rule_var: tm -> tm -> Prop := reg_rule_var : forall (s t : tm)(x : tmvar), rule_var (x[x | t]) t. Notation "M ->_Var N":= (rule_var M N) (at level 59, left associativity). Inductive rule_gc : tm -> tm -> Prop := reg_rule_gc : forall (s t : tm) (x : tmvar),  In x (fvar s) -> rule_gc (s [x | t]) s. Notation "M ->_Gc N":= (rule_gc M N) (at level 59, left associativity). Inductive rule_app : tm -> tm -> Prop := reg_rule_app : forall (s t u: tm) (x : tmvar), rule_app ((s ! t) [x | u]) ((s [x | u]) ! (t [x | u])). Notation "M ->_App N":= (rule_app M N) (at level 59, left associativity). Inductive rule_lamb : tm -> tm -> Prop := reg_rule_lamb : forall (s t : tm) (x y : tmvar), x <> y ->  In x (fvar t) -> rule_lamb ((& x, s) [y | t]) (& x, (s [y | t])). Notation "M ->_Lamb N":= (rule_lamb M N) (at level 59, left associativity). Inductive rule_comp : tm -> tm -> Prop := reg_rule_comp : forall (s t u : tm) (x y : tmvar), x <> y ->  In x (fvar u) -> In y (fvar t) -> rule_comp ((s [x | t]) [y | u]) ((s [y | u]) [x | (t [y | u])]). Notation "M ->_Comp N":= (rule_comp M N) (at level 59, left associativity).
Figura 4.7: Conjunto de regras do

ex

no Coq.

No Coq, denimos primeiramente o uma das regras do

ex

na raiz de um

sistema_ex que representa a aplicao de qualquer termo, excetuando-se a regra B.

42

Inductive sistema_ex : tm -> tm -> Prop := | rule_var_ex : forall M N: tm, (M ->_Var N) -> sistema_ex M | rule_gc_ex : forall M N: tm, (M ->_Gc N) -> sistema_ex M N | rule_app_ex : forall M N: tm, (M ->_App N) -> sistema_ex M | rule_lamb_ex : forall M N: tm, (M ->_Lamb N) -> sistema_ex | rule_comp_ex : forall M N: tm, (M ->_Comp N) -> sistema_ex Notation "M ->_[ex] N":= (sistema_ex M N) (at level 59, left associativity).
Figura 4.8: Sistema de reescrita

N N M N M N.

ex.

sistema_Bex ento denido para representar regras do sistema_ex adicionando-se a regra B, a raiz
O

a aplicao de qualquer uma das de um termo.

Inductive sistema_Bex : tm -> tm -> Prop := | rel_rule_b_Bex : forall M N: tm, (M ->_B N) -> sistema_Bex M N | rel_sistema_ex : forall M N: tm, (M ->_[ex] N) -> sistema_Bex M N. Notation "M ->_[Bex] N":= (sistema_Bex M N) (at level 59, left associativity).
Figura 4.9: Sistema de reescrita

Bex.

As relaes de reduo dos sistemas

ex

Bex,

rel_ex

rel_lex, rel_lex.

so dadas respetivamente pela aplicao Na Figura 4.10 exibimos o

em qualquer posio de um termo.

incio da denio indutiva da relao

Inductive rel_lex : tm -> tm -> Prop := | rel_root_lex : forall (a b:tm), a ->_[Bex] b -> rel_lex a b | rel_app_fun_lex : forall (a b b':tm), rel_lex a b -> rel_lex (a ! b') (b ! b') | rel_app_arg_ex : forall (a b b':tm), rel_ex a b -> rel_ex (b'! a) (b' ! b) | rel_lam_ex : forall (x:tmvar) (a b:tm), rel_ex a b -> rel_ex (& x, a) (& x, b) | rel_subst_fun_ex : forall (x:tmvar) (a b b':tm), rel_ex a b -> rel_ex (a [x | b']) (b [x | b']) | rel_subst_arg_ex : forall (x:tmvar) (a b b':tm), rel_ex a b -> rel_ex (b' [x | a]) (b' [x | b]). Notation "M ->_ex N":= (rel_ex M N) (at level 59, left associativity).
Figura 4.10: Relao de reduo

ex.

43

Como exemplo de extenso do clculo gramtica do

ex, exibimos o clculo es.

Ele utiliza a mesma

ex,

mas possui um maior nmero de regras reescrita, buscando exercer Esse controle diminui o

um maior controle na propagao das substituies explcitas.

nmero de passos de reduo de um termo, mas em contrapartida gera um maior custo computacional, dado que so realizadas repetidas chamadas da funo recursiva  fv, no processo de reescrita.

Equaes:
t[x/u][y/v] (x.t)u x[x/u] t[x/u] (tu)[x/v] (tu)[x/v] (tu)[x/v] (y.t)[x/v] t[x/v][y/v] t[x/v][y/v]

Regras:

=C B V ar Gc App1 App2 App3 Lamb Comp1 Comp2

t[y/v][x/u]

se

y fv(u) & x fv(v) / /

t[x/u] u t se x fv(t) / (t[x/v] u[x/v]) x fv(t) & x fv(u) (t u[x/v]) x fv(t) & x fv(u) / t[x/v] u x fv(t) & x fv(u) / y.t[x/v] t[y/v][x/u[y/v]] se y fv(u) & y fv(t) t[x/u[y/v]] se y fv(u) & y fv(t) / es.

Figura 4.11: Sistema de regras do clculo

Realizando agora uma rpida comparao entre os clculos de substituies explcitas apresentados, com respeito as caractersticas desejadas para uma extenso do clculo consideramos

; z

uma extenso do clculo

e a funo (f ) da sintaxe

para a sintaxe

(algumas vezes esta funo justamente a identidade). interessante observar se

possui algumas (ou a totalidade) das seguintes propriedades:

C MC PSN SIM FC

A relao de reduo denida por A relao de denida por

conuente; A conuncia em

conuente nos termos abertos.

meta-termos desejvel, dado que muitas vezes se quer elaborar provas com lacu-

nas. Tal estratgia muitas vezes utilizada tambm em problemas de unicao, e


generalizaes nas demonstraes; A relao de reduo

preserva a

normalizveis no clculo Um passo de ento

tambm o so no

-normalizao-forte, z ;

isto , termos fortemente

-reduo f (t) z f (t );

no clculo

pode ser simulado por

z .

Ou seja, se

t t

A substituio explcita denida em meta-substituio do clculo

efetivamente implementa a operao de

Adaptamos aqui uma tabela realizada em [10] que aponta, para alguns clculos de substituies explcitas, a presena ou no, das propriedades acima mencionadas:

44

Clculo

C
[43]

MC No Sim No Sim

PSN Sim Sim No No

SIM Sim Sim Sim Sim

FC No Sim Sim Sim

x [38, 39, 40, 41], s ex, es [10] [1] [37], se [43]

Sim Sim Sim Sim

Figura 4.12: Tabela comparativa.

Conclumos que os clculos

ex

es,

apesar da simplicidade de notao de suas

regras, tem as importantes propriedades desejadas para uma extenso do clculo alm disso eles cumprem a tarefa de implementar as substituies explcitas.

4.3 Uma gramtica auxiliar (ex')


No trabalho de extenso da especicao de [23] para a gramtica do diculdade em demonstrar o Teorema de induo

ex,

no tivemos

-estrutural

(Figura 4.13), pois sua

adaptao possui um grau de complexidade relativamente baixo. Contudo, quando buscamos realizar o mesmo trabalho com o Teorema de recurso

-estrutural, nos deparamos

com uma barreira na demonstrao de um dos lemas nais da seo de recurso. O problema aparece quando temos que permutar a varivel ligada da substituio explcita, pois quando aplicamos a permutao temos possivelmente ocorrer livre em

t.

[(x, y)], com y / s[x | t] = ([(x, y)]s)[y | [(x, y)]t],

fv(s) fv(t), ns dado que

pode

Buscamos algumas alternativas na demostrao do lema que estava

pendente, mas no obtivemos sucesso.

Theorem tm_induction : forall (P : tm -> Type) (F : aset tmvar), (P dot) -> (forall a, P (var a)) -> (forall s, P s -> forall t, P t -> P (s ! t)) -> (forall a,  In a F -> forall s, P s -> P (& a, s)) -> (forall a,  In a F -> forall s, P s -> forall t, P t -> P (s  [a | t])) -> forall x : tm, P x.
Figura 4.13: Teorema de induo

-Estrutural

para o clculo

ex.

Nossa principal inteno denir a funo recursiva de meta-substituio para o clculo

ex, o que muito semelhante ao que ocorre na Denio 3.0.14 para clculo . t[y/u]{x/v}. ex)

Mas

necessrio levar em considerao um novo caso, para a situao onde o termo uma substituio explcita, isto , a recurso em

Denio 4.3.1
distintas, a

meta-substituio u{x/b} denida indutivamente por:


45

(Meta-substituio no Clculo

Sendo

u, b T

x, y

variveis

(i) (ii) (iii) (iv) (v)

x{x/b} = b y{x/b} = y (t v){x/b} = (t{x/b}) (v{x/b}) (y.t){x/b} = y.t{x/b},


se

y /

fv(b)

t[y/u]{x/b} = t{x/b}[y/u{x/b}],

se

y /

fv(b)

Observamos que processo de recurso em: ocorre no

t[y/u]{x/v};

muito semelhante ao que

-redex: ((y.t) u){x/v}.

Estabelecemos uma gramtica paralela, a qual chamamos

de um gramtica auxiliar (ex'), onde a substituio explcita fosse substituda por uma espcie de segunda abstrao, ou seja, uma substituio que no carrega o seu argumento, por exemplo transladamos do

s[x]. Para aplicar a funo de meta-substituio a um termo u T , u para gramtica auxiliar, onde foram realizadas as chamadas recursivas da

meta-substituio denida, e por m transladamos o resultado de volta para gramtica

ex. ex ex' (x | (a a) | x.a | a[x/a]) (x | (a a) | x.a | a[x])


Figura 4.14:

ex

ex'. ex
na

Criamos ento uma funo recursiva aplicao de

gramtica auxiliar, mantendo a maioria termos xos, exceto quando

que leva cada termo da gramtica do

(s[x/t])

levada na

s[x]

por

t,

conforme ilustra o diagrama e o cdigo abaixo.

Phi

Phi

f(Phi)

s[x/t]

(s[x] t)

Fixpoint f_Phi (n : nat) (x : Phi n) struct x : (Phi' n) := match x with | pdot _ => pdot' _ | pfree _ a => pfree' _ a | pbound _ i pf => pbound' _ i pf | papp _ s t => papp' _ (f_Phi _ s) (f_Phi _ t) | plam _ s => plam' _ (f_Phi _ s) | psubst _ s t => papp' _ (psubst' _ (f_Phi _ s)) (f_Phi _ t) end.
46

O conjunto de termos da gramtica auxiliar construdo tomado como base um conjunto

Phi',

onde se dene uma funo

prova de que

associando os elementos desses dois conjuntos de acordo com a seguinte lista:

injetiva, trabalhamos na construo de uma bijeo entre

de

Phi

em

Phi'.

Dado que obtivemos uma

Phi

e f(Phi),

Phi x (s t) x.s s[x/t]

f(Phi)

x (s t) x.s (s[x] t)

Exemplo 4.3.2.
termo

Figura 4.15: Bijeo entre

Phi

e f(Phi).

Segue um exemplo de como o procedimento de recurso executado no

y[y/(x x)]{x/(z z)}: y[y/(x x)]{x/(z z)} := :=


f 1 f

(y[y] (x x)){x/(z z)} (y[y]{x/(z z)} (x x){x/(z z)}) (y[y] (z z))

Construmos uma funo

domnio f(Phi) Phi'. Esse fato demostrado atravs de induo sobre Phi. De posse 1 dessas duas funes ( e ), denimos a meta-substituio no clculo ex como sendo: 1 u{x/b} := f (f(u){x/f(b)} ).

f f

y[y/(z z)]
1

: Phi' Phi,

a qual provamos ser o inverso de

, no

Definition meta_subst (y : tmvar) (s : tm) (t : tm) : tm := f_inv (meta_subst' y (f_Phi s) (f_Phi t)).
Figura 4.16: Meta-substituio no

ex,

via da gramtica auxiliar.

A funo recursiva da meta-substituio para o clculo

ex

ento denida, e conIsso feito Por

seguimos demonstra que ela possui, de fato, o comportamento esperado.

atravs da formalizao de cinco Teoremas, um para cada construtor do clculo. que:

exemplo, no caso da meta-substituio aplicada a substituio explcita, demonstramos

forall x y s t u, x <> y ->  In x (fvar s) -> meta_subst y s (subst x t u) = subst x (meta_subst y s t) (meta_subst y s u).
que na notao que criamos equivalente a:

forall x t u, x <> y ->  In x (fvar s) -> t [x | u] {x := s} = t {x := s} [x | u {x := s}]

47

Captulo 5 Propriedades do ex
Em [19], foi demonstrado, de maneira construtiva, que o clculo

ex

possui importantes

propriedades como C e MC, FC, SIM e a PSN (fato que exibido na tabela da Figura 4.12. Aqui ser dada especial ateno a demonstrao das propriedades relativas a terminao do

ex,

ou seja, FC, SIM e a PSN.

Lemma basic_prop_1_rel_lex : forall (s t :tm), (s ->_lex t) -> Subset (fvar t) (fvar s). Lemma basic_prop_2_lex : forall x s t u, (s ->_lex t) -> ((u  {x := s}) ->_lex* (u  {x := t})). Lemma basic_prop_3_rel_lex : forall x s t u, (s ->_lex t) -> ((s  {x := u}) ->_lex (t  {x := u})). Lemma basic_prop_4_rel_lex : forall x t u, SN rel_lex (t  {x := u}) -> SN rel_lex t.
Figura 5.1: Propriedades bsicas.

Lema 5.0.3
(i) Se (ii) Se

(Propriedades bsicas)

Seja

R {ex, ex},

e sejam

t, t , u

termos.

t R t ,

ento fv(t

) fv(t);

t R t , ento u{x/t} R u{x/t } t{x/u} SNR implica t SNR .

t{x/u} R t {x/u}.

Ento em particular

Demonstrao. Demonstramos o item (i) por induo sobre a relao de reduo


a denio de fv; e na primeira parte do item (ii) aplicamos o Teorema de estrutural em

R, e induo -

u,

e a denio da meta-substituio, pois:

X X

Se Se

u = x,

ento segue trivialmente que: ento

u{x/t} = t R t = u{x/t };
e portanto

u = y = x,

y{x/t} = y = y{x/t }
48

y{x/t} R y{x/t };

X X X X

Se

u = (u v ), u = x.u , y=x
e

ento

por hiptese de Se

(u v ){x/t} = (u {x/t} v {x/t}) R (u {x/t } v {x/t }), induo e (u {x/t } v {x/t }) = (u v ){x/t }; (x.u ){x/t} = (z.u ){x/t} = z.u {x/t} R z.u {x/t }, induo. Mas z.u {x/t } = (z.u ){x/t } = (x.u ){x/t };
ento

ento

por hiptese de Se

u = y.u ,

por hiptese de induo e Se

(y.u ){x/t} = y.u {x/t} R y.u {x/t }, z.u {x/t } = (z.u ){x/t }.

u = u [x/v ], ento u [x/v ]{x/t} = u [z/v ]{x/t} = u {x/t}[z/v {x/t}] R u {x/t }[z/v {x/t }], por hiptese de induo. Mas u {x/t }[z/v {x/t }] = u [z/v ]{x/t } = u [x/v ]{x/t }; y = x e u = u [y/v ], ento u [y/v ]{x/t} = u {x/t}[y/v {x/t}] R u {x/t }[y/v {x/t }], por hiptese de induo. Mas u {x/t }[y/v {x/t }] = u [y/v ]{x/t }.

Se

y = x e t = (y.s) v B s[y/v] = t , ento: t{x/u} = ((y.s) v){x/u} = ((y.s){x/u} v{x/u}) = ((y.s{x/u}) v{x/u}) t{x/u} = ((y.s) v){x/u} B s{x/u}[y/v{x/u}] = s[y/v]{x/u} = t {x/u}.
E se, por exemplo

5.1 Composio completa

Lema 5.1.1 Composio completa .


( )

Sejam

uT.

Ento

t[x/u] ex t{x/u}.
estrutural sobre

Demonstrao. Segue diretamente por aplicao do Teorema

-induo

t,

juntamente com a equao

C.

X X X

Se Se Se

t = x,

ento

x[x/u] Var u = x{x/u}; y[x/u] Gc y = y{x/u};

t = y = x, t = (u v ),

ento ento

(u v )[x/u] App (u [x/u] v [x/u]), + mas por hiptese de induo (u [x/u] v [x/u]) ex (u {x/u} v {x/u}) e (u {x/u} v {x/u}) = (u v ){x/u}; t = x.u ,
ento

(x.u )[x/u] = (z.u )[x/u] Lamb z.u [x/u], + mas hiptese de induo z.u [x/u] ex z.u {x/u} = (z.u ){x/u} e (z.u ){x/u} = (x.u ){x/u};
Se Se

X X X

y=x

t = x.u ,

ento

mas hiptese de induo Se

(y.u )[x/u] Lamb y.u [x/u], + y.u [x/u] ex y.u {x/u} = (y.u ){x/u};
com

t = u [x/v ], y=x
e

ento

u [x/v ] = u [y/v ],
temos dois casos:

y = x

e os demais passos so

semelhantes ao prximo item; Se

t = u [y/v ],

49

x fv(v ) u [y/v ][x/u] Comp u [x/u][y/v [x/u]] ex u {x/u}[y/v {x/u}], por hiptese de induo e u {x/u}[y/v {x/u}] = u [y/v ]{x/u}; x fv(v ) u [y/v ][x/u] = u [z/v ][x/u], onde z fv(u) e portanto / / + u [z/v ][x/u] =c u [x/u][z/v ] ex u {x/u}[z/v ], por hiptese de induo. Mas u {x/u}[z/v ] = u {x/u}[z/v {x/u}] = u [z/v ]{x/u} = u [y/v ]{x/u}.

Exemplo 5.1.2.
Proof.

A ttulo de exemplo, fornecemos a seguir uma comparao entre cdigo

da formalizao do Lema 5.1.1 e sua prova em papel e lpis:

Lemma full_comp:forall x t u, t  [x | u] ->_ex+ (t  { x := u}).


intros x t u. pattern t. apply tm_induction'. (* dot *)
autorewrite with lex. assert ( In x (fvar dot)). rewrite fvar_dot. apply empty_neg_intro. auto with lex.

Sejam ento

varivel,

uT,

t[x/u] ex t{x/u}.
-estrutural
sobre

induo

x = fv() / [x/u] Gc = {x/u}

(* var *)

intro a. case (atom_eqdec _ a x).

(* a = x *)

intro H. autorewrite with lex. rewrite H. auto with lex. intro H. autorewrite with lex. assert ( In x (fvar (var a))). rewrite fvar_var. apply singleton_neg_intro. intro H'. apply sym_eq in H'. contradiction. auto with lex.

x[x/u] Var u = x{x/u}

(* a <> x *)

a = x a {x} = fv(x) / a[x/u] Gc a = a{x/u}

(* app *)

intros s Hs t' Ht'. autorewrite with lex. apply Rplus_transitive with (y := s  { x := u} ! (t'  [x | u])). apply Rplus_transitive with (y := s  [ x | u] ! (t'  [x | u])). auto with lex. auto with lex. auto with lex. exists (add x (fvar u)). intros a H s Hs. destruct_neg_add H H1 H1. autorewrite with lex. apply Rplus_transitive with (y := (& a, s  [x | u])). auto with lex. auto with lex.

(u v )[x/u] App (u [x/u] v [x/u]) u [x/u] ex u {x/u} (H.I.) v [x/u] ex v {x/u} (H.I.) (u [x/u] v [x/u]) ex (u {x/u} v {x/u}) y {x} fv(u) / (y.u )[x/u] Lamb y.u [x/u] u [x/u] ex u {x/u} (H.I.) (y.u )[x/u] ex (y.u ){x/u}
+ + + + +

(* lam *)

50

(* subst *)

exists (add x (fvar u)). intros a H s Hs t' Ht'. destruct_neg_add H H1 H1. autorewrite with lex. case (In_dec x (fvar t')).

y {x} fv(u) /

(* In x (fvar t') *)

intro H3. apply Rplus_transitive with (y := s  [x | u]  [ a | (t'  [x | u])]); auto with lex. apply Rplus_transitive with (y := s  {x := u}  [ a | (t'  [x | u])]). auto with lex. auto with lex.

x fv(v ) u [y/v ][x/u] Comp u [x/u][y/v [x/u]] u [x/u][y/v [x/u]] ex u {x/u}[y/v {x/u}] (H.I.) u {x/u}[y/v {x/u}] = u [y/v ]{x/u} x fv(v ) / u [y/v ][x/u] =c u [x/u][y/v ] + u [x/u][y/v ] ex u {x/u}[y/v ] (H.I.) u {x/u}[y/v ] = u {x/u}[y/v {x/u}] = u [y/v ]{x/u}
+

(* In x (fvar t') *) rewrite equation_C; trivial.


rewrite meta_subst_not_fv with (M := t'); trivial. auto with lex. intro H3.

Qed.
A especicao do clculo

ex

que utilizamos, extendendo a abordagem nominal

de [23], proporciona uma grande proximidade entre provas em papel e lpis e suas respectivas formalizaes em Coq. O Exemplo 5.1.2 testemunha desse fato, contudo necessrio tomar certo cuidado, as teorias e bibliotecas implictas nessa prova que viabilizam tal conforto nas formalizaes. Se analisarmos de forma isolada a construo da gramtica do clculo, baseda no arquivo

Nominal_Logic,

a conexo entre as provas em

papel e as formalizaes no de forma alguma trivalmente aparente.

5.2 Simulao de um passo da -reduo

Lema 5.2.1 Simulao de um passo da -reduo .


ento

t ex t .

Sejam

t .

Se

t t ,

Demonstrao. t = (y.s) v s[y/v] = t , mas t = (y.s) v B s[y/v] + + e s[y/v] ex s{y/v} = t , pelo Lema da seo anterior. Portanto t ex + + ex ex ex , ento t ex t

t,

e como

Lemma beta_one_step: forall (t s: tm), (t ->_L s) -> (t ->_lex* s). Proof. intros. elim H. elim H0. intros. assert ((& x, s0) ! t0 ->_lex* (s0 [ x | t0 ])). auto with lex. assert ((s0  [ x | t0]) ->_lex+ (s0  { x := t0})). apply red_ex_lex_plus. apply full_comp. apply Rplus_Rstar in H2. apply star_trans with (y := (s0  [ x | t0])); trivial. Qed.
51

A demonstrao do Lema 5.2.1 em Coq , de fato, bastante curta, por que ela feita por induo na relao de reduo

(notacionada por

->_L),

somente atravs da

aplicao de alguns resultados j formalizados, como o Lema 5.1.1 e lemas de incluses e transitividade das relaes de reduo, que so importados dos arquivos

sur_les_realations.

Reduct_Lex

5.3 Perpetualidade
Deniu-se uma estratgia perptua para o se o

ti

mais a esquerda que redutvel. Se

reescreve-se a cabea do redex. Se

ex da seguinte forma: se t = xt1 ...tn , reescrevet = x.u, reescreve-se u; se t = (x.s)uvn , t = s[x/u]vn , e u SN ex , reescreve-se a cabea do
)

redex utilizando-se composio completa. Formalmente:

Denio 5.3.1

(Estratgia

perptua .
t x.t

un N F ex t t (p-var) xun tvm xun t vm

t (p-abs) x.t

(x.t)uun

t[x/u]un

(p-B)

u SN ex (p-subs1) t[x/u]un t{x/u}un


A estratgia determinstica, tal que se

u SN ex u / u (p-subs2) t[x/u]un t[x/u ]un t u


e

v,

ento

u = v.

E alm disso,

ela no necessariamente leftmost-outermost ou left-to-right, pois a regra permite a propagao da substituio em qualquer ordem. resultados obtidos so:

(p-subst1)

Na sequncia, os primeiros

Lema 5.3.2.
(i)

Se

t,

ento

t ex t .
e aplicao

Demonstrao. O lema provado por induo na estratgia


dos lemas 5.0.3 e 5.1.1:

(p-var) xun tvm xun t vm , por hiptese + e portanto xun tvm ex xun t vm ; (p-abs) x.t x.t , por hiptese + e portanto x.t ex x.t ;

de induo

t ex t

(ii)

de induo

t ex t

(iii)

(p-B) (x.t)uun t[x/u]un . Temos + e portanto (x.t)uun ex t[x/u]un ; (p-subst1) t[x/u]vn (p-subst2) t[x/u]vn
Ento pelo Lema 5.0.3

que

(x.t)u B t[x/u]
+

(iv)

t{x/u}vn .

Temos que

pela aplicao do Lema 5.1.1. Portanto (v)

t[x/u] ex t{x/u}, + t[x/u]vn ex t{x/u}vn ;


+

t[x/u ]vn , por hiptese de induo u ex u . + + t[x/u] ex t[x/u ] e logo t[x/u]vn ex t[x/u ]vn .

52

Assim como no Lema 5.2.1, a formalizao de 5.3.2 utiliza resultados previamente demostrados no arquivo

t ex t (t un ) ex

Reduct_Lex, como o Lema mult_app_plus, (t un ); alm do Lema 5.1.1.

que arma que:

Lemma perp_1 : forall a b, (a ->_$ b) -> (a ->_lex+ b). Proof. intros a b H; elim H; intros a b H; elim H; intros; try apply mult_app_plus; auto with lex. apply red_ex_lex_plus. apply full_comp. Qed.

Lema 5.3.3

Figura 5.2: Compatibiliade da estratgia perptua com a relao (Propriedade

IE . u SN
)

lex+.

ex

t{x/u} SN ex

ento

t[x/u] SN ex .

Axiom ie_property : forall x t u, (SN rel_lex u) -> (SN rel_lex (t  {x := u})) -> (SN rel_lex (t  [x | u])).
Figura 5.3: Propriedade IE. Por hora, admitiremos o Lema 5.3.3 sem demostrao. O artigo [19] fornece, atravs de uma tcnica sosticada de colorao das substituies explcitas, um captulo completo a parte, para demonstrao de tal propriedade. gramtica do A diculdade da formalizao de tal propriedade reside no fato de que, a prova em papel e lpis considera uma extenso da

ex

(com diferentes tipos de substituies explcitas), o que a rigor tem Pretendemos concluir primeiramente os demais resultados

que ser construdo em Coq.

IE

relativos a terminao, e ento concentraremos esforos na formalizao da propriedade .

Theorem perpetuality : forall t t', (t ->_$ t') -> (SN rel_lex t') -> (SN rel_lex t).
Figura 5.4: Teorema da perpetualidade.

Teorema 5.3.4
t SN ex
se induo sobre (i)

(Teorema da Perpetualidade)

ento

t SN ex .

Sejam

t, t T
n

tal que,

t.

Se

Demonstrao. Lembrando que lR (s)


, temos:

= max{n | s N F R : s R s }.

Ento, efetuando-

(p-var) t = xun svm xun s vm = t , un N F ex e s s. Se un s vm SN ex , ento vm , s SN ex . Portanto por hiptese de induo s SN ex e logo xun svm SN ex ;
53

(ii)

(p-abs) t = x.s Se x.s SN ex ,

ento

Mas por hiptese de (iii)

x.s = t , e s s. s SN ex . induo s SN ex e logo x.s SN ex ;

(p-B) t = (x.s)uun s[x/u]un = t . Se s[x/u]un SN ex , ento s, u, un SN ex . Ento deve-se mostrar, por induo sobre lex (s) + lex (u) + i lex (ui ), que toda ex-reduo de (x.s)uun pertence a SN ex . Conclui-se que (x.s)uun SN ex ; (p-subst1) t = s[x/u]vn s{x/u}vn = t e pela hiptese de que s{x/u}vn SN ex , e portanto s[x/u]vn SN ex ;
e

(iv)

u SN ex .

Ento pelo Lema 5.3.3

conclui-se que

s[x/u], vn SN ex

(v)

(p-subst2) t = s[x/u]vn s[x/u ]vn = t , u SN ex e u / u. Se s[x/u ]vn SN ex , ento em particular u SN ex , e assim u SN ex , por hiptese de induo. Dado que u SN ex e u SN ex , / pode-se concluir qualquer proposio construtiva, em especial t SN ex

A correta denio do conjunto

SN ex

exerce inuncia de forma direta na formali-

zao do Teorema 5.3.4. Adaptamos a denio do predicado

CoLoR [26, 27], para denir construtivamente o conjunto

SN SN ex .

realizada na biblioteca Mas, no conseguimos

ainda avanar na demostrao de fatos simples sobre esse predicado, como por exemplo a armao de que: qualquer subtermo de um termo fortemente normalizvel tambm fortemente normalizvel. Necessitamos da prova de tais lemas para que possamos conluir a formalizao de 5.3.4. Esse teorema fornece a garantia de que a denio da estratgia 5.3.1 perptua. Uma caracterizao indutiva do conjunto

SN ex

poder ser obtida, utilizando-se a estratgia

perptua denida. Esse tipo de caracterizao usualmente til no desenvolvimento de provas de normalizao, como realizado na denio indutiva de

SN , que dada no Lema

3.4.5. Tal caracterizao foi estendida para clculos com substituies explcitas em [44, 45], mas nesses trabalhos so consideradas muitas regras de inferncia para se caracterizar termos fortemente normalizveis da forma de

t[x/u]. [19] obteve uma caracterizao indutiva

SN ex

onde necessrio somente uma regra para cada objeto da sintaxe do clculo

ex.

Denio 5.3.5

(Denio indutiva do conjunto

ISN )

.
u ISN (abs) x.u ISN

t1 , ..., tn ISN n 0 (var) xt1 ...tn ISN

u[x/v]t1 ...tn ISN n 0 (app) (x.u)vt1 ...tn ISN

Proposio 5.3.6. SN
e no Teorema 5.3.4:

u{x/u}t1 ...tn ISN v ISN n 0 (subs) u[x/v]t1 ...tn ISN


ex

= ISN . <lex (t), L(t)>

Demonstrao. A demonstrao realizada com base na induo do par

54

X t SN ex t ISN X t ISN t SN ex
do Teorema 5.3.4.

demonstrado por induo sobre demonstrado por induo sobre

<lex (t), L(t)>; t


e aplicao

Lemma ISN_prop : forall t, SN rel_lex t <-> ISN t.


Figura 5.5: Caracterizao indutiva do conjunto

SN ex .

A demostrao do Lema 5.3.6 faz uso do Teorema 5.3.4, o qual no conluimos a formalizao. E mesmo admimitindo o 5.3.4 sem demonstrao, seria ainda necessrio formalizar o princpio de induo no par

<lex (t), L(t)>, que utilizado na demonstrao

em papel e lpis de 5.3.6. Como ainda no obtivemos tais resultados, consideramos esse

Teorema 5.3.7 PSN


(

trabalho como pertencente a um escopo futuro de realizao. para o

ex)

Se

t SN ,

ento

t SN ex . t SN
(Lema

Demonstrao. A prova realizada por induo na denio do conjunto


3.4.5), utilizando-se a proposio 5.3.6.

X X X

Se

t = xtn

com

aplicao da Se

ti SN , ento ti SN ex por hiptese de induo, regra (var) conclui-se que xtn ISN = SN ex ; s SN , ento s SN ex por hiptese de regra (abs), possvel concluir que x.s SN ex

e ento por

t = x.s

com

induo. Logo por

aplicao da Se

t = (x.u)vtn com u{x/v}tn , v SN . Ento ambos os termos pertencem a SN ex por hiptese de induo. Portanto ao se aplicar a regra (subs) obtm-se que u[x/v]tn SN ex , e logo ao se aplicar a regra (app) se chega a concluso de que (x.u)vtn SN ex .

Theorem PSN : forall t, SN rel_lambda t -> SN rel_lex t.


Figura 5.6: Preservao da normalizao forte.

Como possvel observar na demostrao de 5.3.7, tal teorema um corolrio da proposio 5.3.6. Assim, objetivamos concluir a formalizao de tal proposio, antes de abordar o 5.3.7, que de certo modo, conclui uma cadeia de formalizaes.

55

Captulo 6 Concluso e trabalhos futuros


A tarefa de vericao formal de uma teoria algo desaador e estimulante. Pois a construo de um conjunto de ferramentas para vericaes formais, que aproxime cada vez mais provas mecnicas de provas realizadas em papel e lpis, uma busca global, que envolve um nmero grande de pesquisadores ao redor do mundo [46]. teve como foco a formalizao do clculo de substituies normalizao. Uma questo importante, a escolha de um determinado assitente de prova para realizao de formalizaes, que algo de cunho mais pessoal, do que tcnico. No entanto, nossa opo pelo assistente Coq levou tambm em considerao o tipo de teoria com o qual esse sistema trabalha, que o CCI (Clculo de Contrues Indutivas). A teoria contrutiva uma restrio da lgica clssica, e assim a realizao de formalizaes nesse contexto, insere uma certa diculdade, dado que alguns axiomas, como a dupla negao e a lei do terceiro excludo, no podem ser utilizados. Em contrapartida, a extrao de cdigo excutvel, para a obteno de programas certicados, parece ser mais simples em um assitente baseado em uma teoria construtiva. Nosso trabalho,

ex,

e suas propriedades de

A priori, esse trabalho no objetivou a obteno de cdigos de programas executveis,


mas temos a esperana de que nossa biblioteca de formalizaes do clculo para tal m. Alguns dos exemplos mais conhecidos de clculos de substituies explcitas, designam suas variveis atravs da notao de ndices de de Bruijn. Esse tipo de notao nasceu para realizar a tarefa de construo de linguagens de programao, no ambiente em que uma mquina pode interpretar com rapidez e agilidade os termos da gramtica do clculo. A grande vantagem dessa abordagem que ela dispensa o uso de termos, dado que um objeto do tipo

ex,

assim

como qualquer outra elaborada em um ambiente construtivo, possa ser tambm utilizada

representa uma classe de equivalncia

-equivalncia entre a /= .

Em um primeiro trabalho de iniciao cientca, realizamos uma formalizao do clculo

que um exemplo muito conhecido de clculos de substituies explcitas, que

utilizam notao de de Bruijn. E quando realizamos o projeto de formalizao de um clculo com nomes, o

ex,

nos deparamos com o trabalho de Dlia Kesner [19]: Perpet-

uality for full and safe composition (in a constructive setting); e nos sentimos, de certo

56

modo, seduzidos pela caracterstica construtiva das provas realizadas, pela simplicidade de notao e do conjunto de regras de reescrita, aliados ao poder do clculo, que possui muitas das propriedades esperadas para uma extenso do clculo

Contudo a designao de variveis por nomes tem seu preo. No Coq denies indutivas no consideram ligaes de variveis, ento qualquer construtor necessariamente injetivo, isto , dado

K:

um construtor e

x 1 , x 2 : , K x 1 = K x 2 x1 = x2 .

Isso

um problema quando denimos indutivamente a gramtica de um clculo com nomes, pois nos construtores com variveis ligadas, que no nosso caso so a abstrao e a subs-

=, pr-contruda no Coq: x.a = y.b x = y a = b e s[x/v] = t[y/v] s = t x = y . H dois caminhos a seguir, a primeira opo seria a construo de uma relao = no contida em =; a
tituio explcita, no h injetividade com respeito a relao segunda no fazer uso da denio do indutiva do Coq e para denio da gramtica do clculo, e considerar

contida em

=.

A especicao de Aydemir et al [23], a qual

tomamos como base, adotou a segunda opo. Essa questo, de formalizao de sintaxes abstratas com nomes e variveis ligadas, surge primeiramente em um contexto em que se fazia uso do assistente de prova Isabelle

/ HOL [4]. Tal trabalho apresentado por Christian Urban [34] e ele gerou motivaes
para que formalizaes de sintaxes com ligaes fossem estendidas a outros assistentes de prova, como o Coq. O artigo [23], de B. Aydemir et al, apresenta uma biblioteca de Lgica Nominal [20, 21, 22] (que se encontra no arquivo a gramtica do clculo

Nominal_Logic ),

e formaliza

Essa formalizao fornece os princpios de recurso e induo

-estrutural

[24] do

. -estrutural
para a gramtica do

Estendemos a especicao de [23] incluindo a substituio explcita (s[x/t]) na gramtica denida, e formalizamos o princpio de induo

ex.

Construmos assim uma gramtica auxiliar, a qual chamamos de conseguimos formalizar ambos os teoremas de induo e recurso uma bijeo entre as gramticas do operao de meta-substituio

ex', e nessa sintaxe -estrutural. Ao criar

ex e ex', para o ex.

obtivemos como resultado a denio da

Denimos as relaes de reduo do relaes, utilizando a biblioteca

ex, os fechos transitivo / reexivo-transitivo das sur_les_relations [25]. Formalizamos resultados com

respeito a compatibilidade entre as relaes reduo e a operao de meta-substituio. Conclumos com a demostrao dos Lemas da Composio Completa, da Simulao de um passo da relao

-reduo

e a compatibilidade entre a estratgia de reduo perptua e a

ex .

Criamos tambm a denio do predicado

SN

(Fortemente Normalizvel)

utilizando a biblioteca CoLoR [26, 27]. Como trabalhos futuros, pretendemos concluir a formalizao dos Teoremas da Perpetualidade, da Caracterizao Indutiva do Conjunto

SN ex ,

e do Teorema da Preservao

da Normalizao Forte, assim como a formalizao completa do Teorema de Recurso

-estrutural para o ex.

A soluo de criao de uma gramtica auxiliar, para construo

da funo de meta-substituio no

ex,

surgiu com uma alternativa durante a realizao

das provas. Finalizando, consideramos tambm um outro ponto interessante a ser abordado: a questo de comparao, com respeito as propriedades de normalizao, entre o clculo

ex

e um clculo baseado na gramtica

ex'.

 http://www.cic.unb.br/ flavio/msc/lex.tar.gz
57

Referncias
[1] M. Abadi, L. Cardelli, P.-L. Curien, and J.-J. Lvy. Explicit substitutions. Journal

of Functional Programming, 1(4):375416, 1991. 1, 3, 5, 36, 45


[2] The Coq Development Team.

The Coq Proof Assistant Reference Manual Ver-

sion 8.2. INRIA-Rocquencourt, 2008. 1, 2, 3, 6


[3] N. G. de Bruijn. The mathematical language automath, its usage and some of its extensions. Symposium on Automatic Demonstration, 125, 1970. 2 [4] T. Nipkow, L. C. Paulson, and M. Wenzel.

Isabelle/HOL - A Proof Assistant for

Higher-Order Logic, volume 2283 of LNCS. Springer, 2002. 2, 28, 57


[5] S. Owre, J. M. Rushby, and N. Shankar. PVS: A prototype verication system. In D. Kapur, editor, 11th International Conference on Automated Deduction (CADE), volume 607 of Lecture Notes in Articial Intelligence, pages 748752, Saratoga, NY, June 1992. Springer Verlag. 2 [6] A. Trybulec. The mizar-qc/6000 lgic information language. ALLC Buletin, 6(2):136 140, 1978. 2 [7] Y. Bertot and P. Castran. Interactive Theorem Proving and Program Development.

Coq'Art: The Calculus of Inductive Constructions. Texts in Theoretical Computer


Science. Springer Verlag, 2004. 2 [8] H. Barendregt. The Lambda Calculus : Its Syntax and Semantics (revised edition). North Holland, 1984. 3, 6, 16, 25, 27 [9] A. Church. The Calculi of Lambda-Conversion. Princeton University Press, 1941. 3, 25 [10] D. Kesner. The theory of calculi with explicit substitutions revisited. In Proc.

16th Annual Conference on Computer Science and Logic (CSL-07), LNCS. SpringerVerlag, 2007. 3, 5, 16, 41, 44, 45 [11] H. Barendregt, J. Bergstra, J. W. Klop, and H. Volken. Degrees, reductions and

representability in the lambda calculus. Technical Report Preprint 22, University of

Utrecht, Departament of Mathematics, 1976. 3


[12] J. A. Bergstra and J. W. Klop. Church-rosser strategies in the lambda calculus.

Theoretical Computer Science, 9:2738, 1979. 3


58

[13] J. A. Bergstra and J. W. Klop. Strong normalization and perpetual reductions in the lambda calculus. Journal of Information Processing and Cybernetics, 18:403417, 1982. 3 [14] H. B. Curry and R. Feys. Combinatory Logic, volume 1. North Holland, 1958. 3 [15] J. W. Klop. Combinatory Reduction Systems. Mathematical Center Tracts, 27, 1980. 3 [16] J.-J Lvy. Optimal reductions in the lambda-calculus. Academic Press Limited, pages 159191, 1980. 3 [17] R. C. de Vrijer. Surjective Pairing and Strong Normalization. PhD thesis, University of Amsterdam, 1987. 3 [18] F. van Raamsdonk, P. Severi, M. H. Srensen, and H. Xi. Perpetual reductions in lambda-calculus. Inf. Comput., 149(2):173225, 1999. 3, 33 [19] D. Kesner. Perpetuality for full and safe composition (in a constructive setting). In To

appear in Proceedings of the 35th International Colloquium on Automata, Languages and Programming (ICALP 2008), Track B, 2008. 3, 4, 16, 48, 53, 54, 56
[20] M. J. Gabbay and A. M. Pitts. A new approach to abstract syntax involving binders. In 14th Annual Symposium on Logic in Computer Science, pages 214224. IEEE Computer Society Press, Washington, 1999. 4, 57 [21] A. M. Pitts. Nominal logic, a rst order theory of names and binding. Information

and Computation, 186:165193, 2003. 4, 57


[22] M. J. Gabbay and A. M. Pitts. A new approach to abstract syntax with variable binding. Formal Aspects of Computing, 13:341363, 2001. 4, 57 [23] B. E. Aydemir, A. Bohannon, and S. Weirich. Nominal reasoning techniques in coq: (extended abstract). Electr. Notes Theor. Comput. Sci., 174(5):6977, 2007. 4, 5, 17, 21, 22, 26, 28, 32, 38, 39, 45, 51, 57 [24] A. M. Pitts. Alpha-structural recursion and induction. J. ACM, 53(3):459506, 2006. 4, 17, 23, 57 [25] A. Saibi. Formalization of a lamda-calculus with explicit substitutions in coq. In

P. Dybjer, B. Nordstrm, and J. M. Smith, editors, TYPES, volume 996 of Lecture

Notes in Computer Science, pages 183202. Springer, 1994. 4, 5, 14, 38, 57


[26] F. Blanqui, S. Coupet-Grimal, W. Delobel, S. Hinderer, and A. Koprowski. CoLoR: a Coq Library on Rewriting and Termination. http://color.inria.fr/, 2006. 4, 16, 54, 57 [27] F. Blanqui and A. Koprowski. Automated Verication of Termination Certicates. Technical report, INRIA, 2009. 4, 16, 54, 57 [28] H. Barendregt. 1992. 6

-calculi

with types.

Handbook of Logic in Computer Science, II,

59

[29] The Coq Club.

The Coq users' Contributions.

Available on the Internet, 2010.

http://coq.inria.fr/contribs/. 6 [30] M. Ayala-Rincn and F. L. C. de Moura. Fundamentos da programao lgica e

funcional - o principio da resoluo e a teoria de reescrita. Notas de Aula, 2008. 13 [31] S. Kleene and B. Rosser. The inconsistency of certain formal logics. Annals of Math., 36(2):630636, 1935. 25 [32] A. Church and J. B. Rosser. Some properties of conversion.

Trans. Amer. Math.

Soc., 39:472482, 1936. 25


[33] A. N. Whitehead and B. Russell. Press, revised edition, 1925-1927. 1910-1913. 25 [34] C. Urban. Nominal Techniques in Isabelle/HOL. Journal of Automated Reasoning, 40(4):327356, 2008. 28, 57 [35] A. Charguraud. The locally nameless Acessado representation. em 21/06/10,

Principia Mathematica.

Cambridge University

Three volumes. The rst edition was published

http://arthur.chargueraud.org/research/2009/ln/.
2010. 28 [36] N. G. de Bruijn.

Lambda-Calculus Notation with Nameless Dummies, a Tool for

Automatic Formula Manipulation, with Application to the Church-Rosser Theorem.

Indag. Mat., 34(5):381392, 1972. 36


[37] T. Hardin and J.-J. Lvy. A Conuent Calculus of Substitutions.

France-Japan

Articial Intelligence and Computer Science Symposium, 1989. 38, 41, 45


[38] K. H. Rose. Explicit cyclic substitutions. In M. Rusinowitch and J.-L. Remy, editors,

CTRS, volume 656 of Lecture Notes in Computer Science, pages 3650. Springer,
1992. 39, 45 [39] R. Lins. A new formula for the execution of a categorical combinators. In 8th

Conference on Automated Deduction (CADE), volume 230 of LNCS, pages 8998.


Springer-Verlag, 1986. 39, 45 [40] R. Lins. Partial categorical multi-combinators and church rosser theorems. Technical report, Computing Laboratory, University of Kent at Canterbury, 1992. 39, 45 [41] R. Bloo and K. H. Rose. Preservation of strong normalisation in named lambda

calculi with explicit substitution and garbage collection. In Computer Science in the

Netherlands, November 1995. 39, 45


[42] P.-A. Mellis. Typed

-calculi

with explicit substitutions may not terminate.

In

TLCA'95, volume 902 of LNCS. Springer-Verlag, 1995. 41


[43] F. Kamareddine and A. Ros. The 45

s-calculus:

its typed and its extended versions.

Technical report, Department of Computing Science, University of Glasgow, 1995.

60

[44] S. Lengrand, P. Lescanne, D. Dougherty, M. Dezani-Ciancaglini, and S. van Bakel. Intersection types for explicit substitutions. Information and Computation, 189(1):17 42, 2004. 54 [45] E. Bonelli.

Substitutions explicites et rcriture de terms.

PhD thesis, Universit

Paris XI, 2001. 54 [46] B. E. Aydemir, A. Bohannon, M. Fairbairn, J. N. Foster, B. C. Pierce, P. Sewell, D. Vytiniotis, G. Washburn, S. Weirich, and S. Zdancewic. Mechanized Metatheory for the Masses: The PoplMark Challenge. LNCS, 3603:5065, 2005. 56

61