Você está na página 1de 0

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

Prof. Dr. Mauricio Ayala Rincn

COPPE/UFRJ

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.

umento.

Mario Benevides, na realizao da verso nal desse doc-

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 substitui-

es explcitas que lidam com nomes , em oposio aqueles que codicam suas variveis
por ndices.

Delia Kesner obteve, atravs de um conjunto de provas construtivas, de-

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.

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

ex,

conclumos por formalizar alguns resultados para o clculo, a saber: a FC (Composio


Completa), a SIM (Simulao de um passo da

-reduo)

e ainda outros que caminham

para a formalizao da PSN.

Palavras-chave:

vericao formal, clculos de substituies explcitas, clculo

vi

ex

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

-structural

-calculus

SN ex .

We extended the speci-

by B. Aydemir et al, using nominal logic

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

-Reduction)

ex

and we conclude

The FC (Full Composition),

and others that go in the direction of the

formalization of the PSN.

Keywords:

formal verication, explicit substitutions calculi,

vii

ex-calculus

Sumrio

1 Introduo
2 Fundamentos

1
6

2.1

O sistema Coq

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

2.2

Lgica formal

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

10

2.3

Sistemas de reescrita

2.4

Lgica nominal

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

13

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

16

3 O Clculo

25
-equivalncia (/= )

3.1

Classes de

3.2

Recurso e induo

3.3

A operao de meta-substituio denida sobre

3.4

O conjunto

-estrutural

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

27

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

30

/=

32

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

SN

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

33

4 Clculos de substituies explcitas

36

4.1

Clculos em notao de de Bruijn ( ,

4.2

Clculos com nomes (x,

4.3

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

36

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

39

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

45

ex, es)

5 Propriedades do ex

48

5.1

Composio completa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.2

Simulao de um passo da

5.3

Perpetualidade

-reduo

49

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

51

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

52

6 Concluso e trabalhos futuros


Referncias

56
58
viii

Lista de Figuras
1.1

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

2.1

Clculo

2.2

Demonstrao de

simplesmente tipado.

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

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

2.3

Denio indutiva do tipo nat. . . . . . . . . . . . . . . . . . . . . . . . . .

2.4

Tipo indutivo

. .

2.5

Exemplo de rvore binria de nmeros naturais. . . . . . . . . . . . . . . .

2.6

Exemplo de representao em rvore do termo

2.7

Fecho transitivo de uma relao binria.

2.8

Fecho reexivo-transitivo de uma relao binria.

2.9

Forma normal.

2.10 tomos.

all_perm

tree,

funo recursiva

e lema

n_leaf_gt_zero. .

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

. . . . . . . . .

13

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

14

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

14

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

15

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

18

2.11 Assinatura nominal do clculo


2.12

n_leaf

-equivalncia.

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

19

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

19

2.13 Funes recursivas: Conjunto de tomos e Substituio.

. . . . . . . . . .

20

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

21

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

21

2.16 Conjunto Suporte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

2.17 Predicado Fresh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

2.14 Transposies ou Swaps.


2.15 Aes de permutaes.

3.1

Denio da regra

3.2

-equivalncia

3.3

Incluso progressiva dos conjuntos

3.4

Conjunto

3.5

Termos bem formados e construtores do clculo

3.6

Teorema de

3.7

Teorema de induo

Phi.

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

no clculo

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

Phi n.

27
28

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

29

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

29

-equivalncia

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

29

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

30

-estrutural

para o Clculo

ix

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

30

3.8

Funes indexadas pelos construturas do Clculo

3.9

Condio FCB para o construtor abstrao.

4.1

Regras de reescrita do Clculo

4.2

Conjunto

4.3

Teorema de

4.4

Regras de reescrita do Clculo

4.5

Equao

4.6

Regras de reescrita do clculo

4.7

Conjunto de regras do

4.8

Sistema de reescrita

4.9

Sistema de reescrita

Phi

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

31

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

31

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

37

acrescido do construtor da substituio explcita. . . . . . . .

39

-equivalncia

C. .

para a abstrao e a substituio explcita. . . .

x.

39

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

40

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

41

4.10 Relao de reduo

ex. .

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

41

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

42

ex.

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

43

Bex.

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

43

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

43

ex

ex.

no Coq.

4.11 Sistema de regras do clculo

es.

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

44

4.12 Tabela comparativa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

4.13 Teorema de induo


4.14

ex

ex'. .

4.15 Bijeo entre

-Estrutural

para o clculo

ex.

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

45

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

46

Phi

47

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

4.16 Meta-substituio no

ex,

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

47

5.1

Propriedades bsicas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

5.2

Compatibiliade da estratgia perptua com a relao

. . . . . . . . .

53

5.3

Propriedade IE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

5.4

Teorema da perpetualidade. . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

5.5

Caracterizao indutiva do conjunto

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

55

5.6

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

55

SN ex .

lex+.

Captulo 1
Introduo
O clculo

ex

representa uma soluo importante dentro da classe de clculos de subs-

tituies explcitas [1] que lidam com nomes , em oposio aqueles que codicam suas
variveis por ndices.

Ao mesmo tempo, uma abordagem formal de suas propriedades

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 per-

tinente, retirada do livro de Thomas Hobbes ; Leviat ou Matria, Forma e Poder de um

Estado Eclesistico e Civil:


(...) Os gregos tm uma s palavra,

logos,

para

linguagem e razo;

no que eles

pensassem que no havia linguagem sem razo, mas sim que no havia raciocnio sem
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

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.

Por esse motivo, essa nova abordagem da lgica foi

denominada ento: Lgica Formal.


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.

Mais alm, essa nova rea de trabalho

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].

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
( )

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

possui uma nica regra de rescrita, chamada

dada por:

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,

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

que o conjunto
de parada.

De forma que muita ateno tem sido dada classicao das estratgias de reduo
no clculo

[11, 12, 13, 14, 15, 16, 17]. E assim, uma estratgia de reduo do clculo

pode ser classicada como perptua

[18], se ela computa para um termo, um caminho

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

nN

at uma forma normal.

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

ex

que

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


para o prprio

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

-converso,

ex que no levava em conta

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

Essa

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

(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

a;

= ,

onde

(y.a) = (z.a )

para todo

igual ao renomeamento de todas as ocorrncias livres de

que no ocorra livre

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.

, a qual foi desenvolvida em um trabalho de


-induo e -recurso

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

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

Aux_Lex

Lsigma

Rel_Lex

sur_les_relations

Lex

Nominal_Logic
Axioms

ExtFset

AuxLib

Atoms

Permutations

Psets

Support

Freshness

Figura 1.1: Organizao do cdigo fonte.

(i)

(ii)

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;

(iii)

T_Lex

(iv)

Meta_subst

(v)

a denio de translao entre as gramtica

ex

ex';

dene a funo recursiva de meta-substituio para o

ex;

sur_les_relations trata de uma biblioteca de propriedades sobre relaes binrias,


encontrada em [25];

(vi)
(vii)

LSigma

uma especicao adicional, do clculo

Rel_Lex

dene as relaes de reduo do clculo

[1];

ex;

(viii)

NF_Lex

fornece uma denio indutiva para as formas normais do

ex;

(ix)

SN_Lex

exibe o predicado fortemente normalizvel no contexto do

ex;

(x)

Perp_Lex contm, for m, as formalizaes obtidas sobre as propriedades do clculo


ex.

Disponibilizamos nosso cdigo fonte, no endereo

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

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

[8] e

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

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 es-

tabelecido 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

e1 : A B

e1 e2 : B

Figura 2.1: Clculo

Na regra

LAM

da Figura acima,

ocorrncias livres de

Exemplo 2.1.1.

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

e2 : A

simplesmente tipado.

(v : A), B

equivalente

A B,

se

no possui

v.

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),

pode ser obtida

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

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

Lam

App

App

Lam

A,

Var (H : ab :: abR: a b)Ra b)


(H
A,

Var (b : A) A)
(b :

Var (a : A) :A)
(a

(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)

Lam

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

Respostas do Coq
Variable A declared
Variable R declared

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).

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

Proof.

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

intros H a b.

apply H.
Qed.

Proof Completed

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

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

tree

tree,

(rvore) que pode ser uma

ideia fundamental dessa denio a de que todo

naturais, conforme o exemplo da Figura 2.5.


1

Figura 2.5: Exemplo de rvore binria de nmeros naturais.

No nal da Figura 2.4, demostramos o Lema

n_leaf_gt_zero

que arma que, toda

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

t do tipo tree, fazendo uso dos teoremas da biblioteca


comando auto with arith, que proporciona uma aplicao automtica

dada por induo na estrutura de

Arith atravs do

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

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

uma dada relao binria


se construa uma prova
de

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.

Denio 2.2.1
Exemplo 2.2.2.

(Alfabeto)

smbolos.

Um

alfabeto A, denido com um conjunto no vazio de

So exemplos de alfabetos:

1.

A = {0, 1, 2, ..., 9}

2.
3.

A = {a, b, c, ..., z}

A = {, , a, d, x, f, ), (}

4.

A = {c1 , c2 , c3 , ...}

Toda sequncia nita de smbolos de um alfabeto

denominada uma string ou

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.

alfabeto da linguagem de primeira ordem

(denotado por

A)

contm o seguinte conjunto de smbolos:

(i)
(ii)
(iii)
(iv)
(v)
(vi)
(vii)

v0 , v1 , v2 , ...
c0 , c1 , c2 , ...
, , , ,
,

), (
Para

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

n 1:

(1) Smbolos de relaes


(2) Smbolos de funes

n-rias;
n-rias;

As palavras construdas com base em um alfabeto podem, ou no, ter um sentido


(por exemplo a palavra

f c v3 R

no tem nenhum signicado lgico aparente). Logo a

construo de termos e frmulas caracterizada pela seguinte denio indutiva:

Denio 2.2.4. termos

frmulas so denidos indutivamente sobre A

por:

(T1) Toda varivel um termo;


(T2) Toda constante um termo;
(T3) Se

t1 , t2 , ..., tn

so termos e

um smbolo de funo

n-ria,

ento

f (t1 , ..., tn )

tambm um termo.
(F1) Se

t1

t2

so termos, ento

(F2) Se as palavras

R t1 ... tn

t1 , t2 , ..., tn

uma frmula;

so termos e

um smbolo de relao

n-ria,

ento

uma frmula;

(F3) Se

uma frmula, ento

(F3) Se

t1 t2

so frmulas, ento

tambm uma frmula;

( ), ( ), ( )

( )

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 de primeira ordem)

um conjunto nito da forma

distinta e cada ti um termo distinto de


substituio

Denio 2.2.6

(Composio de substituies)

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

substituies. A

Uma

substituio de primeira

{v1 /t1 , ...., vn /tn }, onde cada vi uma varivel


vi . Cada  vi /ti  denominado uma ligao da

composio

do conjunto:
11

= {u1 /s1 , ...., um /sm } e


, de e , a substituio obtida

Sejam

{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

Denio 2.2.7
termo

t,

(i) Se
(ii) Se

(Conjunto de subtermos)

denotadado por

S(t),

uma constante ou varivel, ento

t f t1 .... tn ,

conjunto de subtermos

de um dado

denido recursivamente por:

S(t) = t;

i N:

ento para

S(t) =

{ti } S(ti )

i=1

Observao:

s S(t),

Se

Denio 2.2.8

termo

t,

(i) Se
(ii) Se

t,

ento

O(t),

chamado

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

subtermo prprio de t.
O conjunto de

posies vlidas de um

denido recursivamente por:

uma constante ou varivel, ento

t f t1 .... tn ,

conjunto de subtermos prprios

denido por:

(Posies vlidas dos termos)

denotado por

subtermo de t.

chamado

S (t),

denotado por

s S (t),

Se

Denio 2.2.9

(Conjunto de subtermos prprios) O

de um dado termo

Observao:

ento

ento para

O(t) = {};

i N:

O(t) = {}

{i | O(ti )}

i=1

Exemplo 2.2.10.

Se

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

ento

O(t) = {} {1 }, {1 1 } {1 2 } {2 } = {, 1 , 1 1 , 1 2 , 2 }.

Notao 2.2.11.

Para

O(t),

o subtermo na posio

de

denotado por

t| ,

assim:

(ii) Para todo


(iii)

t, O(t)

t| t;

t|i ti | .

Exemplo 2.2.12.

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

S(t) = {

c.

O n

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


x e y.

tem duas folhas

o n raiz

f,

um n

E nesse caso:

, 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

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

t,

tc

constante, ento fv(t)

(ii) Se

tx

varivel, ento fv(t)

t f t1 .... tn ,

Seja

um termo.

O(s),

fv(t) denota o

que denido recursivamente atravs de:

(i) Se

(iii) Se

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

ento para

= ;

= {x};

i N:
fv(t)

fv(ti )

i=1

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

M . (M, )

(Sistema de reescrita)

um

Seja

sistema de reescrita.

um conjunto e

ou relao de reescrita correspondente ao sistema.


Considere um sistema de reescrita
(i)
(ii)

denota a relao inversa de

(M, )

=
13

uma relao binria

denominada a relao de reduo

(iii)

denida indutivamente como segue:


0

u v

(1)

(v)

uv
n

u v sse w, u w v

+
n

= n1 o fecho transitivo de

n
= n0 o fecho reexivo-transitivo

(2)

(iv)

sse

n+1

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

regra l r

varivel e fv(r)

um conjunto de termos:

um par ordenado de termos


fv(l);

14

l, r M ,

sendo que

no uma

sistema de reescrita de termos, abreviado por TRS (Term Rewriting Sys-

(ii) Um

tem) um conjunto

de termos com um conjunto de regras

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

(iii) Dado um TRS, o conjunto de regras

R;

de reduo de termos,

denota por
Para todo
(1)

l r R,

(2)

O(t1 )

t1 | l

uma substituio com:

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
das denies de forma normal e fortemente normalizvel em Coq.

Denio 2.3.3.

(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

Denio 2.3.4

u, v, w M
v w).
todo

Denio 2.3.5
R ,

Se

(Conuncia)

com

v u w,

(Forma Normal)

se para todo

existe algum

Um elemento

no ocorre que u R v.

Em Coq denimos

NF

(M, ) conuente sse, para

r M com v r w (ou simplesmente


Um sistema de reescrita

dito forma normal com respeito a

Denota-se

v N F R.

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.

Denio 2.3.6
u
iN
Denio 2.3.7

(Caminho de Reduo)

termos,

i , com

. De forma que:

Um Caminho de Reduo uma sequncia de

ui ui+1 .

(Comprimento de um Caminho de Reduo)

tem um nmero nitamente contvel de termos


Caso contrrio seu comprimento

Denio 2.3.8

zvel

(Normalizao fraca)

n N,

Um elemento

Se um caminho de reduo

ento seu comprimento

uM

se existe pelo menos um caminho de reduo a partir de

diferente de

Denota-se:

u WN R .
15

n 1;

fracamente normaliu

que tem comprimento

Denio 2.3.9
zvel

(Normalizao forte)

Um elemento

se qualquer caminho de reduo a partir de

Denota-se:

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)

u SN R ,
de u, o qual

Se

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 }

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.

Uma armao comumente

realizada a de que, a coleo de termos pode ser representada atravs de um conjunto

-equivalncia conveniente.
classes de -equivalncia?

quociente, mdulo uma relao de


colhas de representantes dessas

Mas como fazer boas es-

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.

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

Quando realizamos uma prova de uma dada propriedade

-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 :

simples induo sobre a estrutura de


para toda varivel

y fv(t) t{y/u} t.
/
16

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 jus-

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

-equivalncia,

porm no varremos todos os detalhes dessa teoria.

Essa seo busca

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.

Ne-

cessitamos 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.

Portanto, essa classe de objetos chamada de tomo, em uma

assinatura nominal.

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

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

tipo

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

17

aridades

obtido pela seguinte denio

(i) Todo sort de tomo


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

a A

a A
s D
1

uma aridade;
uma aridade;

uma aridade;

so aridades, ento

1 2

uma aridade, ento

uma aridade;

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.

O conjunto de

spectivas aridades, onde


(i) Se
(ii) Se

a Aa

pertence a

:1

(iii) O termo

t1 : 1

(v) Se

a,

a Aa

t:

em uma assinatura nominal


tem aridade

ento

t:

a:a

com suas re-

denido por:

um termo;

um termo, ento

Kt : s

tambm um termo;

o nico termo de aridade unitria;

t2 : 2

indica que

um tomo de sort

K:s

(iv) Se

t:

termos

t1 , t2 : 1 2
a

um termo, ento

t: a

tambm um termo;
tambm um termo.

, 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

Ar()

so termos, ento

o conjunto de todas as aridades sobre a assinatura

conjunto de todos os termos sobre

Exemplo 2.4.4.
do clculo

O exemplo clssico de uma assinatura nominal a denio da gramtica

Exemplicando:

A constante

A varivel

X (a b)

reresentada por

representada por

represntado por

X x.(x y)

A a, b

representado por

D;
V x;

A V x, V y
18

sorts de tomos sorts de dados construtores


V

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

Figura 2.11: Assinatura nominal do clculo

X xz.((x y) z))

representado por

Os termos sobre a assinatura

(L

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

so justamente as rvores de sintaxe abstrata deter-

minadas sobre a assinatura ordinria (considerada na totalidade dos termos, e no nas


classes 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,

tores so aqueles de

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.

a t devem ser identicados


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

Ainda no foi considerado o fato de que, termos do tipo


a menos de renomeamentos do tomo

-equivalncia, t = t :

(onde

indutivamente denida pelas seguintes regras.

Denio 2.4.5

(Denio de

assinatura nominal

(= .1)

a relao

a A
a Aa
a = a : a

(= .3)
(= .5)

a A

(= .4)

:1

a, a , a Aa

(= .2)

(= .5), atm(t)

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

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

-equivalncia.

indica o conjunto nito de tomos que ocorre em

t; e t{a :=
a em t por

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
atravs de recurso ordinria estrutural.

Denio 2.4.6
seguintes funes

Em uma

a atm( a, t, a , t ) t{a := a } = t {a := a } :
/
a t = a t : a

Figura 2.12:
Na regra

-equivalncia em uma assinatura nominal)


de -equivalncia entre termos denida por:

(Funes: Conjunto de tomos e Substituio)

conjunto de tomos e substituio

denidas

Dado um termo, as

(sem preveno de captura de

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)

=
=
=
=
=

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

a {a := a } =

(i)

(ii)
(Kt){a := a }
(iii)
{a := a }
(iv)
t1 , t2 {a := a }
(v) ( 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

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:

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);

(i) Seja

(ii) A operao de composio de permutaes


por :
(iii)

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

(P erm, ) um grupo de permutaes,


1 representa o inverso de ;

(iv) Dentre os elementos de

P erm

(P erm P erm P erm) denida

onde

denota a permutao identidade e

destacam-se as transposies (ou swapps)

nada mais so que um mapeamento de

para

e de

para

a,

(a a ),

que

xando os todos os

demais tomos;
(v) um fato bsico de teoria de grupos, que qualquer

P erm

igual a composio

de nmero nito de transposies, assim uma permutao pode ser representada


por uma lista nita de transposies.

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

um elemento de

Por exemplo:

P erm.

20

se

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

ento

Denio 2.4.7
pertencente a

.x,

(Ao de Permutaes)

(P erm X X),

onde so observadas as seguintes propriedades,

(i)
(ii)

P erm no conjunto X um funo


(, x) P erm X denotado por
para todo x X e , P erm:

Uma ao de

cujo efeito sobre

.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,

(Suporte e Conjunto Nominal)

e um elemento

x X:

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

(i) Sendo
e

(ii) Se
de
(iii)

Set

suporte de

x,

denida atravs do

Dada uma ao de

ento se para todo


ento

Record SwapT.

P erm,

a, a A
/

denominado um

um conjunto

de mesmo sort

suporte de x;

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

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

x possui suporte nito,


suppX (x), onde X pode ser

(iv) Se

menor suporte nito

ento o

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

o nico suporte nito de

ele ser o menor suporte nito de

x.

Mas se

ento, por denio,

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 )
digamos

A1

a uma composio de transposies tal que ela xa

(dado que para cada um

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


esto em

A2 ),

logo

(a a )

tambm xa

A1

ou no

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

f resh

suporte. Em [23] o predicado

Denio 2.4.9

(Fresh)

suppX (x) suppY (y) = ,


x # y.

Se

denido conforme exibe a Figura 2.17.

x X

y Y so elementos de conjuntos nominais e


x fresh (novo) para y , o que denotado por

ento dito que

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

freshP em Coq mais restrito.

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

22

Enunciaremos o seguinte lema sem demonstr-lo, para maiores detalhes recomendamos


a leitura de [24].

Lema 2.4.10

(Freshness)

X, y Y, f Y f s Z, P erm
(i)
(ii)
(iii)
Se

X, Y

Sejam

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

so conjuntos nominais, ento possvel obter uma ao de permutaes

X Y,

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:

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


Infelizmente, mesmo no caso de

(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
que toda

seu suporte seja tambm nito.


Todavia, se

tem um suporte nito

A,

ento

.f

suportada por

{(a) | a A}

(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

para

nito

Y,

A, A

suporte de

f}

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 X,

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

-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:

Essas classes de
devido a prpria
mais prxima da

(i) tomos : Se

a A

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


a;

caso, escreve-se somente

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

( );

(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 );

tal que existe

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 .

(v) Ligaes de tomos : Se

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

ex.

24

-estrutural,

para as respectivas

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

surgiu

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


a notao

x.2x + 1,

para denotar uma funo de

cujo corpo era

2x + 1.

No entanto os

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

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

(3.1)

poder ser uma varivel; uma

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


clculo

baseada portanto em duas operaes: aplicao

qual representa a funo de varivel


gramtica do clculo

e corpo

a.

ento notacionado que

Se a um
a .

(a b);

e abstrao

(x.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

Inductive

so sempre injetivos por denio, no entanto no caso do construtor abstrao (lam) isso
no deveria ser verdade, se quisermos incluir a relao de
igualdade (=) pr-construda no Coq, pois:

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

x.a = y.b
via uma

por [23], justamente a especicao do clculo

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

-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
O abstrator

no termo.

Denio 3.0.11

(Conjunto de variveis livres de um termo

a )

Denimos o

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


(i) fv(x)

:= {x}

(ii) fv(a b)

:=

(iii) fv(x.a)

fv(a) fv(b)

:=

fv(a) \ {x}

Denio 3.0.12
termo

a ,

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

(Comprimento de um termo

a x,

ento

a (a0 a1 ),
a x.a0 ,

A funo comprimento

de um

L(a) = 0;

ento

ento

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

L(a) = L(a0 ) + 1.

e dada por:

Denio 3.0.13
a{x/b}

a )

denida recursivamente por:

O sistema de reescrita do clculo


chamada

con-

(Regra

composto de uma nica regra de reescrita, que

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

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

cias livres de

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

26

em Coq, conforme a Figura 3.1. Essa

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-

declarao indutiva arma que


tipo
por

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

b})

:= (a ! b)),

abstraes (x.a

:= & x, a)

e que acreditamos facilitar o entendimento das declaraes. Para a

criamos a notao:

:= {x :=
prpria regra

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

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

Denio 3.0.14
distintas, a

(Meta-substituio para

-termos)

Sendo

a, b

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

(i)

y{x/b} := y ,

x, y

variveis

x{x/b} := b

(ii)

se

x=y

(iii)

(t v){x/b} := (t{x/b}) (v{x/b})

(iv)

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

A restrio  x

se

= y e y fv(b)
/

x=y

no item

y
/

fv(b)

(iv) busca evitar um problema chamado coliso

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

Exemplo 3.0.15.

O termo

y.x

representa uma funo constante onde o corpo

tem nenhuma relao com o parmetro

y;

aplicando a substituio

de forma ingnua (sem observar as restries) obtm-se

y.y ,

{x/y}

no

a este termo

que a representao da

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

y.x,

o que seria

uma inconsistncia do sistema.

3.1 Classes de -equivalncia (/= )


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

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,
do item

(iv)

t ,

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

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

isto , o conjunto

-equivalncia.

Consideram-

mas nas classes de equivalncia formadas pela

/= .

Deve-se lembrar que como

(x.a)

representa uma funo, cuja varivel

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

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
o conjunto quociente

por:

(= .D)

(= .L)

(= .V )

D = D
a, a , a AV

a AV
V a = V a

(= .A)

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

a {a} fv(t) {a } fv(t ) (a a )u = (a a )u : t


/
L a u = L a u : t

Figura 3.2:

-equivalncia

Em [23] a denio da gramtica do clculo

no 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

Phi

cria uma classe de termos atravs da qual ser derivado um

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).

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

Assim, deni-se o conjunto de termos bem formados (tm) como sendo

Phi 0,

o que

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

Phi

que tem tipo

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

Phi 0.

Alguns exemplos de termos denidos em

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

Phi,

so dados por:

(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

n, resultando em um termo de tipo (n + 1). A


abs. E ela aparece no construtor lam realizando

funo que realiza essa tarefa chamada

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

-equivalncia, podem ser obtidos em alguns casos, somente fazendo


Phi, automaticamente gerada pelo Coq. Esse o caso, por

uso estrutura indutiva de

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

29

Phi, e a denio da funo


-equivalncia entre termos.

comprimento de um termo. O princpio induo ordinria de

abs,

permitem que se demonstre o teorema da

A declarao da Figura 3.6 exibe um teorema de

-equivalncia,

para o nico con-

, a abstrao. Em notao matemtica


ab AV , s : t, b fv(s) a.s = b.(a b)s.
/

strutor que tem varivel ligada no clculo


enunciado do teorema se resume a:

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)

T ()t , para provar que

-estrutural para o clculo ) Dado


S = T ()t , suciente mostrar que:

(Teorema de Induo

um subcon-

D S;
a AV , V a S ;

(iii)

e1 e2 S, A (e1 , e2 ) S ;

(iv)

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,

F;

e alm

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

a AV ,

isto , indexadas pelos construtores, todas das quais com um suporte nito

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

/= .

(Teorema de Recurso

so dados um conjunto nominal

-estrutural

para o clculo

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

F.

E alm disso a seguinte condio

satisfeita:

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

F (f /= f s X )

satisfazendo:
(i)
(ii)

f (D) = fD ;

f (V a) = fV a;

(iii)

f (A (e1 , e2 )) = fA (f e1 , f e2 );

(iv)

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').

possvel ento concluir que a funo

meta_subst

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

demonstrado ser tambm o suporte de

F.

E por m o

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

SN ,

algo

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


A demonstrao da PSN para o clculo
para o conjunto

ex,

utiliza tambm uma caracterizao indutiva

SN ex .

Iniciamos com alguns exemplos de redues no clculo

que so dadas seguir.

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

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

no terminante, dado que

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

podem seguir uma lgica, ou podem vir de maneira aleatria.

Quando adotado um

procedimento de escolha para qual parte o termo dever ser primeiramente reduzida, esse
processo chamado de Estratgia de Reduo [18].
Uma estratgia de reduo do clculo

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 .

Lema 3.4.3
que

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

 (n

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

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

34

Corolrio 3.4.4.

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.

Lema 3.4.5
(i)
(ii)
(iii)

(Caracterizao Indutiva de

SN )

Seja

denido indutivamente por:

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 ;

Ento

SN = X .

Demonstrao. necessrio demonstrar a dupla incluso

SN X

X SN .

(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.

Para
1.
2.
3.

derivaes de

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 .

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.

Existem diversas formas de se denir um

clculo de substituies explcitas, todavia algumas restries so bastante relevantes.


Por exemplo, a denio da regra

em 3.0.13 e da substituio em 3.0.14, so limites

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

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

Bruijn (, )

Um primeiro exemplo de clculo de substituies explcitas o

[1], o qual utiliza ndices

de de Bruijn [36] para designao de variveis. Essa notao considera qualquer varivel
como um ndice natural
A gramtica do

n.
um pouco mais complexa do que a do clculo

pois ela tem

duas classes de objetos : termos e substituies. A notao com ndices de de Bruijin tem

-converso, j que um termo do tipo 1 reptodos os termos x.x, onde x pode ser renomeado

vantagens, por exemplo ela dispensa o uso de


resenta uma classe de equivalncia, de

 Termos fechados so aqueles que no possuem

metavariveis,

e abertos so os que possuem. Meta-

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

(Beta)

(M N )

M [N.id]

(App)

(M N )[S]

(M [S] N [S])

(Abs)

(M )[S]

M [1.(S )]

(Clos)

M [S][T ]

M [S T ]

(Varcons)

1 [M.S]

(Id)

M [id]

(Assoc)

(S1 S2 ) T S1 (S2 T )

(Map)

(M.S) T

M [T ](S T )

(IdL)

id S

(IdR)

S id

(4.1)

(ShiftCons) (M.S)

(VarShift)

1.

id

(Scons)

1 [S].( S)

(Eta )

(M 1)

N,

se

M = N []

Figura 4.1: Regras de reescrita do Clculo

Exemplo 4.1.1.

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 .
0

O conjunto de regras do

pretende simular a regra , sendo que o precesso estartado

(Beta),

e a operao de substituio executada pela aplicao das

pela regra

do

demais regras.

Exemplo 4.1.2.

Segue um exemplo de simulao da regra

(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

no clculo

(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

dos termos.

Denio 4.1.3
a funo

(i)
(ii)

(iii)

Onde

(Meta-substituio no clculo

Para todo termo

meta-substituio denida recursivamente por:

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:

(a)

(M N )+i := (M +i N +i )

(b)

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

(c)

Observao:

A elevao de um termo

Exemplo 4.1.4.
e no clculo

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

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

Quando avanamos,

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
na especicao do clculo

em [23].

38

4.2 Clculos com nomes (x, ex, es)


Uma maneira natural de especicar o clculo

com substituies explcitas, a codi-

cao explcita da denio 3.0.14, tal que ela continue funcionando, mdulo
o que resumidamente, resulta no clculo

-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

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.
Se

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

Phi,

, os princpios de recurso ordinria,

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)

O conjunto das variveis livres

notacionados por fv(t), denido indutivamente por:

39

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

fv(x)

Denio 4.2.2

(Comprimento de

tT)

denida recursivamente por:


(i) Se

t x,

ento

A funo comprimento

L de um termo t T ,

L(t) = 0;

(ii) Se

t (s v),

ento

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

(iii) Se

t x.s,

ento

L(t) = L(s) + 1;

(iv) Se

t s[x/v],

ento

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

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]

(4.3)

Diferentes solues so adotadas com intuito de fechar este diagrama. Uma soluo
a adio da regra de reescrita:

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

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):
A restrio

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

no con-

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

&x
/

fv(v), adiciona, ao mesmo

tempo, composio completa e conuncia em meta-termos ao

x, e anexada ao sistema

A equao

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

se

y
/

fv(u)

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


reescrita do

ex.

Muitos clculos de substituies explcitas tal como o

, ,

tem

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

t[y/v][x/u]

Equao:

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

Regras:

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

B
Var
Gc
App
Lamb
Comp

C.

se

y fv(u) & x fv(v)


/
/

se

x fv(t)
/

se

y fv(u)

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

Figura 4.6: Regras de reescrita do clculo


A relao de reduo

ex.

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

Bx para a
= =C . De

argumento de uma substituio explcita. Denota-se

=e gerada pela unio


ex e ex so respectivamente

relao de equivalncia
reduo (mdulo

=e )

t ex t
t ex t

sse
sse

s, s
s, s

tal que
tal que
41

relao dada por

B x.

forma que, as relaes de

denidas por:

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

na raiz de um

no Coq.

sistema_ex que representa a aplicao de qualquer


termo, excetuando-se a regra B.

No Coq, denimos primeiramente o


uma das regras do

ex

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).

sistema_Bex ento denido para representar


regras do sistema_ex adicionando-se a regra B, a raiz

N
M N
M N.

ex.

Figura 4.8: Sistema de reescrita

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

As relaes de reduo
dos sistemas

ex

Bex,

rel_ex

rel_lex,

Bex.

so dadas respetivamente pela aplicao

em qualquer posio de um termo.

incio da denio indutiva da relao

Na Figura 4.10 exibimos o

rel_lex.

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

43

ex.

Como exemplo de extenso do clculo


gramtica do

ex,

ex, exibimos o clculo es.

Ele utiliza a mesma

mas possui um maior nmero de regras reescrita, buscando exercer

um maior controle na propagao das substituies explcitas.

Esse controle diminui o

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]

Regras:

(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]

y fv(u) & x fv(v)


/
/

=C

t[y/v][x/u]

B
V ar
Gc
App1
App2
App3
Lamb
Comp1
Comp2

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)
/

se

Figura 4.11: Sistema de regras do clculo

es.

Realizando agora uma rpida comparao entre os clculos de substituies explcitas


apresentados, com respeito as caractersticas desejadas para uma extenso do clculo
consideramos

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

A relao de reduo denida por


A relao de denida por

conuente;

conuente nos termos abertos.

A conuncia em

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

PSN
SIM
FC

generalizaes nas demonstraes;


A relao de reduo

normalizveis no clculo

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

Um passo de
ento

preserva a

-normalizao-forte,
z ;

isto , termos fortemente

tambm o so no

no clculo

pode ser simulado por

A substituio explcita denida em


meta-substituio do clculo

z .

Ou seja, se

t t

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

x [38, 39, 40, 41], s


ex, es [10]
[1]
[37], se [43]

PSN

SIM

FC

Sim

No

Sim

Sim

No

Sim

Sim

Sim

Sim

Sim

Sim

No

No

Sim

Sim

Sim

[43]

MC

Sim

No

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

-estrutural

ex,

no tivemos

(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

fv(s) fv(t), ns

temos possivelmente

dado que

ocorrer livre em

t.

[(x, y)], com y


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

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 .

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

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

(Meta-substituio no Clculo

ex)

Sendo

u, b T

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


45

x, y

variveis

(i)

x{x/b} = b

(ii)

y{x/b} = y

(iii)

(t v){x/b} = (t{x/b}) (v{x/b})

(iv)

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

(v)

se

y
/

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

fv(b)

y
/

se

fv(b)

Observamos que processo de recurso em:


ocorre no

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

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

muito semelhante ao que

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 argu-

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

mento, por exemplo


transladamos

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


do

ex.
ex
ex'
(x | (a a) | x.a | a[x/a]) (x | (a a) | x.a | a[x])
Figura 4.14:

Criamos ento uma funo recursiva

ex

ex'.

que leva cada termo da gramtica do

gramtica auxiliar, mantendo a maioria termos xos, exceto quando


aplicao de

s[x]

por

t,

(s[x/t])

ex

levada na

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

na

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

Phi',

onde se dene uma funo

prova de que

Phi

de

em

Phi'.

Dado que obtivemos uma

injetiva, trabalhamos na construo de uma bijeo entre

Phi

e f(Phi),

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

Phi

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

Exemplo 4.3.2.
termo

f(Phi)

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

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)}:


f

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

:=
:=

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


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

f 1

Construmos uma funo

y[y/(z z)]

: Phi' Phi,

a qual provamos ser o inverso de

, no

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

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 con-

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

Isso feito

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

Por

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


que:

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

(Propriedades bsicas)

t R t ,

ento fv(t

Seja

R {ex, ex},

t, t , u

termos.

) fv(t);

t R t , ento u{x/t} R u{x/t }

t{x/u} SNR implica t SNR .

(ii) Se

e sejam

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

Ento em particular

R, e
induo -

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

u,

e a denio da meta-substituio, pois:

Se

u = x,

Se

u = y = x,

ento segue trivialmente que:


ento

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

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

e portanto

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

Se

u = (u v ),

por hiptese de

Se

u = x.u ,

Se

y=x

(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

por hiptese de

(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 };

ento

u = y.u ,

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

z.u {x/t } = (z.u ){x/t }.

ento

por hiptese de induo e

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 };

Se

Se

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 }.

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

Demonstrao. Segue diretamente por aplicao do Teorema

t,

juntamente com a equao

Se

t = x,

Se

t = y = x,

Se

Se

t = x.u ,

Se

y=x

ento

estrutural sobre

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

ento

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

(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 = (u v ),

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};


e

ento

t = x.u ,

Se

t = u [x/v ],

(y.u )[x/u] Lamb y.u [x/u],


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

ento

ento

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

semelhantes ao prximo item;

-induo

C.

mas hiptese de induo

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

Se

y=x

t = u [y/v ],

temos dois casos:

49

com

y = x

e os demais passos so

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.

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}).

Sejam
ento

varivel,

uT,

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

Proof.

intros x t u. pattern t.
apply tm_induction'.

induo

(* dot *)

-estrutural

sobre

x = fv()
/

autorewrite with lex.


assert ( In x (fvar dot)).
rewrite fvar_dot. apply empty_neg_intro.
auto with lex.

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

(* var *)

intro a. case (atom_eqdec _ a x).

(* a = x *)

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

intro H. autorewrite with lex.


rewrite H. auto with lex.

(* a <> x *)

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.

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

(* app *)

(u v )[x/u] App (u [x/u] v [x/u])

intros s Hs t' Ht'.


autorewrite with lex.

u [x/u] ex u {x/u} (H.I.)

apply Rplus_transitive with


(y := s  { x := u} ! (t'  [x | u])).

v [x/u] ex v {x/u} (H.I.)

apply Rplus_transitive with


(y := s  [ x | u] ! (t'  [x | u])).

(u [x/u] v [x/u]) ex (u {x/u} v {x/u})

auto with lex. auto with lex.


auto with lex.

y {x} fv(u)
/

(* lam *)

exists (add x (fvar u)).


intros a H s Hs.
destruct_neg_add H H1 H1.

(y.u )[x/u] Lamb y.u [x/u]


+

u [x/u] ex u {x/u} (H.I.)

autorewrite with lex.


apply Rplus_transitive with

(y.u )[x/u] ex (y.u ){x/u}

(y := (& a, s  [x | u])).
auto with lex. auto with lex.

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)
/

x fv(v )

(* In x (fvar t') *)

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

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

auto with lex.


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

(* In x (fvar t') *)
intro H3.

rewrite equation_C; trivial.

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.)

rewrite meta_subst_not_fv with (M := t');


trivial.
auto with lex.

u {x/u}[y/v ] = u {x/u}[y/v {x/u}] = u [y/v ]{x/u}

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 .

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

ento

Sejam

t ex t .

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
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

Deniu-se uma estratgia perptua para o


se o

ti

mais a esquerda que redutvel. Se

reescreve-se a cabea do redex. Se

redex utilizando-se composio completa. Formalmente:

Denio 5.3.1

perptua .

(Estratgia

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

t
x.t

t
(p-abs)
x.t

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

(x.t)uun

t[x/u]un

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

A estratgia determinstica, tal que se

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.

(p-subst1)

Na sequncia, os primeiros

resultados obtidos so:

Lema 5.3.2.

Se

t,

ento

t ex t .

Demonstrao. O lema provado por induo na estratgia

e aplicao

dos lemas 5.0.3 e 5.1.1:


(i)

(ii)

(iii)

(iv)

(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 ;

(p-subst1) t[x/u]vn

t{x/u}vn .

que

(p-subst2) t[x/u]vn
Ento pelo Lema 5.0.3

t ex t

t ex t

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

t[x/u] ex t{x/u},

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

Temos que

pela aplicao do Lema 5.1.1. Portanto


(v)

de induo

de induo

(p-B) (x.t)uun
t[x/u]un . Temos
+

e portanto (x.t)uun ex t[x/u]un ;

(p-B)

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

Reduct_Lex, como o Lema mult_app_plus,


(t un ); alm do Lema 5.1.1.

demostrados no arquivo

t ex t (t un ) ex

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.
Figura 5.2: Compatibiliade da estratgia perptua com a relao

Lema 5.3.3

(Propriedade

IE . u SN
)

ex

t{x/u} SN ex

ento

lex+.

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.

A diculdade da formalizao de tal

propriedade reside no fato de que, a prova em papel e lpis considera uma extenso da
gramtica do

ex

(com diferentes tipos de substituies explcitas), o que a rigor tem

que ser construdo em Coq.

IE

Pretendemos concluir primeiramente os demais resultados

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

ento

(Teorema da Perpetualidade)

t SN ex .

Demonstrao. Lembrando que lR (s)


se induo sobre
(i)

Sejam

t, t T
n

tal que,

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

t.

Se

Ento, efetuando-

, temos:

(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 ,

Mas por hiptese de


(iii)

(iv)

(v)

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

ento

(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 ;

u SN ex .

conclui-se que

Ento pelo Lema 5.3.3

s[x/u], vn SN ex

(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-

SN
SN ex .

zao do Teorema 5.3.4. Adaptamos a denio do predicado

realizada na biblioteca

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

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

SN ex

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

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

ex.

Denio 5.3.5

(Denio indutiva do conjunto

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

ISN )

u[x/v]t1 ...tn ISN n 0


(app)
(x.u)vt1 ...tn ISN

u{x/u}t1 ...tn ISN v ISN n 0


(subs)
u[x/v]t1 ...tn ISN

Proposio 5.3.6. SN

ex

.
u ISN
(abs)
x.u ISN

= ISN .

Demonstrao. A demonstrao realizada com base na induo do par


e no Teorema 5.3.4:

54

<lex (t), L(t)>

X t SN ex t ISN

demonstrado por induo sobre

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

X t ISN t SN ex

demonstrado por induo sobre

e aplicao

do Teorema 5.3.4.

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
trabalho como pertencente a um escopo futuro de realizao.

Teorema 5.3.7 PSN


(

para o

ex)

Se

t SN ,

ento

t SN ex .

Demonstrao. A prova realizada por induo na denio do conjunto

t SN

(Lema

3.4.5), utilizando-se a proposio 5.3.6.

Se

t = xtn

aplicao da

Se

t = x.s

aplicao da

ti SN , ento ti SN ex por hiptese de induo,


regra (var) conclui-se que xtn ISN = SN ex ;

com

s SN , ento s SN ex por hiptese de


regra (abs), possvel concluir que x.s SN ex

com

e ento por

induo. Logo por

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 .
Se

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

ex,

Nosso trabalho,

e suas propriedades de

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.

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

ex,

assim

como qualquer outra elaborada em um ambiente construtivo, possa ser tambm utilizada
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

-equivalncia entre
a /= .

representa uma classe de equivalncia

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

-estrutural

[24] do

Nominal_Logic ),

e formaliza

Essa formalizao fornece os princpios de recurso e induo

Estendemos a especicao de [23] incluindo a substituio explcita (s[x/t]) na gramtica


denida, e formalizamos o princpio de induo

-estrutural

para a gramtica do

ex.

ex', e nessa sintaxe


-estrutural. Ao criar

Construmos assim uma gramtica auxiliar, a qual chamamos de


conseguimos formalizar ambos os teoremas de induo e recurso

ex e ex',
para o ex.

uma bijeo entre as gramticas do


operao de meta-substituio

obtivemos como resultado a denio da

ex, os fechos transitivo / reexivo-transitivo das


sur_les_relations [25]. Formalizamos resultados com

Denimos as relaes de reduo do


relaes, utilizando a biblioteca

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

ex .

-reduo

e a compatibilidade entre a estratgia de reduo perptua e a

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.

-calculi

with types.

Handbook of Logic in Computer Science, II,

1992. 6

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.

Principia Mathematica.

Cambridge University

Three volumes. The rst edition was published

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

http://arthur.chargueraud.org/research/2009/ln/.

Acessado

representation.
em

21/06/10,

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

s-calculus:

its typed and its extended versions.

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


45

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

Você também pode gostar