Braslia 2010
Universidade de Braslia UnB Instituto de Cincias Exatas Departamento de Cincia da Computao Mestrado em Informtica
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
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
iv
Agradecimentos
algo bastante comum, que um aluno agradea em primeiro lugar seu mestre. De fato, no h como no reconhecer, de primeira mo, a fantstica dedicao, pacincia e companheirismo empenhado pelo meu orientador, o professor Dr. Flvio de Moura. Dedico tambm meus agradecimentos as contribuies e sugestes efetuadas pelos professores Dr. Maurcio Ayala e Dr. Mario Benevides, na realizao da verso nal desse documento. Ademais, devo agradecer meus amigos colegas, em especial Andria Avelar e
Flvio Barros, pela parceria na luta de cada dia. A minha rosa, linda Iraciara, agradeo a pacincia prestada, todas a vezes que meu humor no ia bem, aps um dia cheio. Aos meus tios daqui, Manoel e Cristina, no sei como expressar a gratido pelo suporte que me foi dado, desde os primeiros dias de residncia nessa capital. Ao meu tio Ricardo e minha av Derly, agradeo o amor incondicional e a fora dada a todo momento. Aos meus pais, Washington e Denise, agradeo minha existncia, minha educao e tudo que pode haver de bom em mim. A Deus, a concincia regente de todas as coisas, agradeo o fascinante e grande universo, com sua riqueza de detalhes e mistrios, que nos foi legado.
Resumo
O clculo
ex representa uma soluo importante dentro da classe de clculos de substituiDelia Kesner obteve, atravs de um conjunto de provas construtivas, de-
es explcitas que lidam com nomes , em oposio aqueles que codicam suas variveis
por ndices. mostraes das importantes propriedades do
ex.
, 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-
-estrutural. ex,
e
Dessa forma nossa especicao inclui a substituio explcita (s[x/t]) na gramtica de termos. Avanamos denindo os sistemas de reescrita e as relaes de reduo do Completa), a SIM (Simulao de um passo da para a formalizao da PSN. conclumos por formalizar alguns resultados para o clculo, a saber: a FC (Composio
-reduo)
Palavras-chave:
ex
vi
Abstract
The
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.
Preservation of Strong Normalization, whose proof uses a perpetual reduction strategy which allowed an inductive characterization of the set cation already done in Coq for the to build principles of
SN ex .
-calculus
-structural
includes the explicit substitution (s[x/t]) in the grammar of the terms. We go foward by dening the rewriting systems and the reduction relations for the by formalizing some results for this calculus, as follows: SIM (Simulation of One Step of formalization of the PSN.
ex
and we conclude
-Reduction)
Keywords:
ex-calculus
vii
Sumrio
1 Introduo 2 Fundamentos
2.1 2.2 2.3 2.4 O sistema Coq Lgica formal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sistemas de reescrita Lgica nominal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 6
6 10 13 16
3 O Clculo
3.1 3.2 3.3 3.4 Classes de
25
-equivalncia (/= ) -estrutural
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 30 32 33
Recurso e induo
/=
. . . . . . . . . . . .
SN
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
)
. . . . . . . . . . . . . . . . . 36 39 45 . . . . . . . . . . . . . . . . . . . . . .
ex, es)
5 Propriedades do ex
5.1 5.2 5.3 Composio completa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simulao de um passo da Perpetualidade
48
49 51 52
-reduo
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56 58
Lista de Figuras
1.1
simplesmente tipado.
. . . . . . . . . . . . . . . . . . . . . . . .
7 8 8 9 9 13 14 14 15 18 19 19 20 21 21 22 22
Demonstrao de
all_perm
no Coq. . . . . . . . . . . . . . . . . . . . . . .
tree,
funo recursiva
n_leaf
e lema
n_leaf_gt_zero. .
. .
Exemplo de rvore binria de nmeros naturais. . . . . . . . . . . . . . . . Exemplo de representao em rvore do termo Fecho transitivo de uma relao binria.
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.10 tomos.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
-equivalncia.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.13 Funes recursivas: Conjunto de tomos e Substituio. 2.14 Transposies ou Swaps. 2.15 Aes de permutaes.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Denio da regra
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27 28 29 29 29 30 30
-equivalncia
no clculo
. . . . . . . . . . . . . . . . . . . . . . . . . .
Phi n.
. . . . . . . . . . . . . . . . . .
Phi.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .
. . . . . . . . . . . . . .
-equivalncia
Teorema de induo
-estrutural
ix
3.8 3.9
Funes indexadas pelos construturas do Clculo Condio FCB para o construtor abstrao. Regras de reescrita do Clculo Conjunto
. . . . . . . . . . . . .
31 31
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
37 39 39 40 41 41 42 43 43 43 44 45 45 46 47 47
Phi
Teorema de
-equivalncia
x.
. . . . . . . . . . . . . . . . . . . . . . .
C. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ex. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ex
no Coq.
ex. Bex.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ex.
es.
. . . . . . . . . . . . . . . . . . . . . . .
-Estrutural
para o clculo
ex.
. . . . . . . . . . . .
ex
ex'. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Phi
e f(Phi). . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.16 Meta-substituio no
ex,
48 53 53 53 55 55
lex+.
. . . . . . . . .
SN ex .
. . . . . . . . . . . . . . . . .
Captulo 1 Introduo
O clculo
ex
representa uma soluo importante dentro da classe de clculos de subsAo mesmo tempo, uma abordagem formal de suas propriedades
tituies explcitas [1] que lidam com nomes , em oposio aqueles que codicam suas
variveis por ndices. passa pela denio e demostrao de princpios de induo e recurso sobre classes de equivalncias, isso , aquelas denidas pela relao de
Opta-
mos por realizar esse trabalho no sistema Coq [2], e a apresentao de tal soluo dada nesse documento, juntamente com a vericao formal de algumas das propriedades do
ex.
Como motivao preliminar, gostaramos de inserir uma breve citao, bastante pertinente, retirada do livro de Thomas Hobbes ; Leviat ou Matria, Forma e Poder de um
logos,
para
linguagem e razo;
no que eles
pensassem que no havia linguagem sem razo, mas sim que no havia raciocnio sem
computacionais, o que mais tarde ir resultar na construo de provas matemticas e algoritmos computacionais. Mas o que uma prova matemtica? Como provas podem
ser justicadas? Existem limitaes para o que possvel provar? Mquinas podem fornecer provas matemticas? Ao nal sculo XIX surgiram diversos avanos na obteno de respostas para essas questes. Os pensadores que se ocuparam com esses tpicos: Boole, Frege, Russel e Hilbert estudaram muito do que j aparecia na lgica tradicional, como os trabalhos de Aristteles e Leibniz. Todavia, enquanto a lgica tradicional era considerada parte da losoa, a lgica moderna foi retirada do domnio losco e passou a desempenhar um papel central na matemtica. Ela evoluiu para um conceito mais restrito, cuja abordagem
Thomas Hobbes recebeu notoriedade por escrever textos de losoa voltados para poltica, em defesa
do absolutismo, porm sua formao original foi matemtica.
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
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].
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 ( )
dada por:
(x.a) b a{x/b},
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
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].
substituies explcitas
ex
e no entanto satisfaz simultaneamente importantes propriedades como a conuncia em termos fechados e abertos, a composio completa, a preservao da normalizao forte e a simulao de um passo de
-reduo.
A investigao de quais termos de um clculo so fortemente normalizveis desempenha um papel particularmente importante, pois tais objetos no possuem caminhos de reduo de comprimento innito. Alm disso, pode-se realizar um paralelo entre termos e
programas; os termos fortemente normalizveis correspondem exatamente aqueles programas que no consomem um nmero innito de passos de execuo. Um exemplo simples, de um programa que consome um nmero innitamente enumervel de passos, pode ser dado por aquele realiza sequencialmente a impresso de todos os nmeros naturais em uma lista (1, de parada. De forma que muita ateno tem sido dada classicao das estratgias de reduo no clculo que o conjunto
2, 3, 4, ...). Em cada passo, ele imprime o nmero seguinte da lista, e dado N enumervel e innito, o programa segue indenidamente sem um ponto
[11, 12, 13, 14, 15, 16, 17]. E assim, uma estratgia de reduo do clculo [18], se ela computa para um termo, um caminho
de reduo de comprimento innito, caso ele exista; seno ela retorna algum caminho de
nN
Em [19], Delia Kesner apresenta uma caracterizao indutiva dos termos do para o prprio
ex
que
ex.
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,
Essa operao especialmente necessria para se evitar a captura de variveis livres, na construo de funes recursivas sobre termos. O principal exemplo de ocorrncia dessa questo a denio recursiva da operao de substituio, que gerada na regra que temos de executar
Essa
funo deveria ser denida para a totalidade dos termos da gramtica, porm no caso em
(y.a){x/b},
(i) (ii)
x = y; y
no pode ocorrer livre em
b.
Isso coloca restries sobre a aplicao da funo, e assim a soluo comumente dada considerar a recursividade no na totalidade dos termos, mas sim nas classes de equivalncia geradas pela relao em
= ,
onde
(y.a) = (z.a )
para todo
a;
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.
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.
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,
em [25]. E mais alm, zemos uso tambm da biblioteca CoLoR [26, 27] para se denir
-Reduo;
e um primeiro
ex.
A organizao do cdigo fonte e a disposio lgica de todos os arquivos dada pela Figura 1.1 :
Perp_Lex
SN_Lex
Meta_subst NF_Lex
T_Lex
Rel_Lex
Lsigma
Aux_Lex
Lex
sur_les_relations
Nominal_Logic
Axioms AuxLib ExtFset Atoms Permutations Psets Support Freshness
(i)
Nominal_logic composto de todas as estruturas relativas a lgica nominal, o que um resultado do agrupamento dos blocos lgicos Axioms, AuxLib, ExtFset, Atoms, Permutations, Psets, Support e Freshness, encontrados na especicao [23]; Lex e Aux_Lex, so respectivamente a especicao da gramtica do clculo ex [10]
e uma gramtica auxiliar ao clculo;
(ii)
T_Lex
ex
ex'; ex;
Meta_subst
[1];
Rel_Lex
fornece uma denio indutiva para as formas normais do exibe o predicado fortemente normalizvel no contexto do
Perp_Lex contm, for m, as formalizaes obtidas sobre as propriedades do clculo ex.
http://www.cic.unb.br/ flavio/msc/lex.tar.gz
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.
[8] e
atende a um pblico de matemticos que busca formalizar teorias que envolvam provas longas. Suas demostraes so efetuadas de uma maneira interativa e, quando possvel, com o auxlio de ferramentas de aplicao automtica. Existe bastante trabalho j estabelecido em Coq sobre um grande nmero de teorias, o qual pode ser encontrado em suas bibliotecas padro ou em contribuies diversas, como no site de Contribuies de
O processo de realizao de uma prova ou especicao de um programa baseado em um restrito conjunto de regras de deduo. Cada enunciado ou programa equivalente a um termo do CCI, o qual possui um tipo, e a realizao da prova ou especicao, corresponde ao problema de habitao desse tipo, ou seja, a construo de um termo que possui o tipo dado, tipo dado partir do conjunto de regras de inferncia de tipos do CCI. Seguem trs das mais bsicas delas, que correspondem subteoria do clculo simplesmente tipado:
Var (x : A) :A x App
Lam
:: (x : A) t : B ((x:A) . t) : (x : A), B e2 : A
e1 : A B e1 e2 : B
simplesmente tipado.
Na regra
LAM
da Figura acima,
(v : A), B
equivalente
A B,
se
no possui
ocorrncias livres de
Exemplo 2.1.1.
v.
pode ser obtida
atravs da aplicao desse pequeno conjunto de regras, e esse trabalho exibido a seguir:
Lam
App
App
Lam
Lam
Var (a : A) :A) (a
A aplicao de regras de inferncia pode se tornar uma tarefa bastante complexa. Por esse e outros motivos, a linguagem de comandos do Coq agrega um tipo de conceito que chamado de ttica. Comandos dessa linguagem permitem aplicar um conjunto de regras, no qual o casamento, entre regra e objetivo, encontrado de maneira quase que automtica. Isso facilita muito o trabalho do usurio, basta ver que na prtica, a prova do lema do exemplo 2.1.1 pode ser efetuada conforme exibe a Figura 2.2, e essa tem somente duas linhas de cdigo: intros
H a b.
e apply
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
Comandos
Variable A : Set. Variable R : A->A->Prop. Lemma all_perm: (forall (a b:A), R a b)-> (forall (a b:A), R b a). Proof.
Respostas do Coq
Variable A declared Variable R declared
intros H a b.
apply H. Qed.
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
zero) e
um natural;
S O
um natural;
S S O
tambm a notao:
Um outro exemplo de denio indutiva construo de rvores binrias, cujas folhas e ns so marcados com nmeros naturais. Denimos esse tipo de objeto, juntamente
com uma funo recursiva que conta o nmero de folhas da rvore dada como argumento, e um lema que arma que o nmero de folhas em uma rvore estritamente maior que zero, como mostrado na Figura 2.4.
Require Import Arith. Inductive tree : Set := | leaf : nat -> tree | node : nat -> tree -> tree -> tree. Fixpoint n_leaf (t:tree) : nat := match t with | leaf a => 1 | node a t1 t2 => (n_leaf t1) + (n_leaf t2) end. Lemma n_leaf_gt_zero: forall (t:tree), (n_leaf t) > 0. Proof. induction t. (* t = leaf n *) simpl; auto with arith. (* t = node n t1 t2 *) simpl; auto with arith. Qed.
Figura 2.4: Tipo indutivo
tree,
funo recursiva
n_leaf
e lema
n_leaf_gt_zero.
leaf (folha) ou um node (n). A leaf n, sendo n N, uma tree; e alm disso todo (node n t1 t2) tambm o (com n N e t1, t2 do tipo tree). A semntica pretendida a de que o tipo indutivo tree represente uma rvore binria de nmeros
Declaramos o tipo (rvore) que pode ser uma ideia fundamental dessa denio a de que todo naturais, conforme o exemplo da Figura 2.5.
1
tree
n_leaf_gt_zero
rvore tem um nmero de folhas maior que zero. A demostrao bastante simples, e
Arith atravs do
t do tipo tree, fazendo uso dos teoremas da biblioteca comando auto with arith, que proporciona uma aplicao automtica
9
As demonstraes realizadas em Coq so muitas vezes prximas das provas de papel e lpis, e a vizualizao desse tipo de conexo depende do grau de familiaridade que o usurio tem com a ferramenta. No entanto, em algumas situaes uma prova em papl no pode ser transcrita de maneira literal para uma prova construtiva, o qual tipo de demonstrao exigida no assistente Coq. Por exemplo, os casos de decidibilidade de uma relao so assumidos de graa quando se lida com lgica clssica, mas aqui provar que uma dada relao binria se construa uma prova de
R satisfaz que R a b ou R a b, para quais quer a e b, exige que de R a b ou uma prova de R a b, para todos os casos particulares
b.
smbolos.
(Alfabeto)
Um
So exemplos de alfabetos:
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 existe ) e
(para no ),
(para o e ),
(para
10
Denio 2.2.3.
(i) (ii) (iii) (iv) (v) (vi) (vii)
(denotado por
A)
v0 , v1 , v2 , ... c0 , c1 , c2 , ... , , , , , ), (
Para
n 1: 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
e
por:
(T1) Toda varivel um termo; (T2) Toda constante um termo; (T3) Se so termos e
um smbolo de funo
n-ria,
ento
f (t1 , ..., tn )
t2
so termos, ento
t1 t2
uma frmula;
(F2) Se as palavras
t1 , t2 , ..., tn
so termos e
um smbolo de relao
n-ria,
ento
R t1 ... tn
(F3) Se (F3) Se
uma frmula;
so frmulas, ento
( ), ( ), ( ) x
e
( )
tambm so
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
{v1 /t1 , ...., vn /tn }, onde cada vi uma varivel vi . Cada vi /ti denominado uma ligao da
Uma
substituio de primeira
Denio 2.2.6
do conjunto:
(Composio de substituies)
substituies. A
composio
11
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
(Conjunto de subtermos)
Denio 2.2.7
termo
t,
denotadado por
S(t),
conjunto de subtermos
de um dado
(i) Se (ii) Se
S(t) = t;
t f t1 .... tn ,
i N: S(t) =
n i=1
{ti } S(ti )
Observao:
Denio 2.2.8
Observao:
t,
Se
s S(t), t,
ento
chamado
subtermo de t.
de um dado termo
S (t),
denido por:
termo
Denio 2.2.9
(i) Se (ii) Se
Se
s S (t), O(t),
chamado
denotado por
subtermo prprio de t.
O conjunto de
posies vlidas de um
O(t) = {};
t f t1 .... tn ,
i N:
n i=1
O(t) = {}
{i | O(ti )}
Se
ento
O(t) = {} {1 }, {1 1 } {1 2 } {2 } = {, 1 , 1 1 , 1 2 , 2 }.
Para o subtermo na posio
de
denotado por
t| ,
t, O(t)
t| t;
Exemplo 2.2.12.
t|i ti | .
12
g,
e direita a folha
c. ,
O n
o n raiz
f,
um n
E nesse caso:
S(t) = {
t,
Seja
um termo.
fv(t) denota o
tc tx
= ;
= {x};
t f t1 .... tn ,
i N:
fv(t)
n i=1
fv(ti )
Denio 2.3.1
sobre (i) (ii)
(Sistema de reescrita)
M . (M, )
um
sistema de reescrita.
(M, )
Seja
um conjunto e
=
13
(iii)
(1) (2)
u v
n+1
sse
uv
n
(iv) (v)
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
Denio 2.3.2.
(i) Uma
Seja
um conjunto de termos:
regra l r
l, r M ,
sendo que
no uma
varivel e fv(r)
14
(ii) Um
tem) um conjunto
R;
(iii) Dado um TRS, o conjunto de regras denota por Para todo (1) (2)
de reduo de termos,
l r R, O(t1 )
e uma substituio com: e
t2 t1 [ r]
Dado um Sistema de Reescrita, alguns conceitos importantes podem ser denidos. Se um elemento de um sistema de reescrita no possui nenhum caminho innito de reduo ele chamado fortemente normalizvel; quando ao nal de uma sequncia de aplicaes de regras obtemos um termo
t,
uma
forma normal.
E se para qualquer termo, a ordem de aplicao das regras do sistema no relevante, pois a forma normal resultante, caso exista nica, este sistema ser denominado conu-
ente. Seguem portanto as denies formais desses conceitos, juntamente com exemplos
Denio 2.3.3.
u, v, w M v w).
todo
Denio 2.3.4
R ,
(M, ) uma sistema de reescrita, u, v M so denominados juntveis se existe um w M tal que u w v. Para denotar que dois termos u, v so juntveis usar-se- a seguinte notao: u v
Se com
(Conuncia)
v u w,
Denio 2.3.5
(Forma Normal)
se para todo
no ocorre que u R v.
NF
Um elemento
Denota-se
v N F R.
Em Coq denimos
termos,
(Caminho de Reduo)
. De forma que:
ui ui+1 . n N,
Se um caminho de reduo
zvel
Denio 2.3.8
.
n 1;
(Normalizao fraca)
Um elemento
uM
fracamente normaliu
que tem comprimento
diferente de
u WN R .
15
Denio 2.3.9
zvel
Denota-se:
(Normalizao forte)
Um elemento
uM
fortemente normali.
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
possvel denir o comprimento mximo de um caminho de reduo partir n denotado por: lR (u) = max{n | u N F R : u R u }
Se
u SN R , de u, o qual
[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.
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
Exemplo 2.4.1.
-termos, devemos provar que: x e todo -termo a. Nesse caso, no possvel colocar restries sobre o conjunto ao qual x pertence. Um caso concreto desse problema ocorre quando tentamos demostrar, por exempo, que para todo t, y, u : y fv(t) t{y/u} t. /
16
De fato, se realizarmos induo estrural ordinria, isso , aquela que no considera classes de
-equivalncia,
t x.s:
y fv(s) s{y/u} s, /
{y/u}
em
(x.s)
e fazer uso da
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
tamente obter uma formalizao dos princpios de induo e recurso sobre classes de
-equivalncia,
fornecer um resumo dos principais conceitos que resultam nos teoremas de induo e recurso aplicados a gramtica do clculo
ex.
Os princpios usuais de induo e recurso estrutural so parametrizados por uma assinatura algbrica que especica quais so os possveis construtores dos termos. Necessitamos ento xar uma noo de assinatura que tambm especique as ligaes de variveis que ocorram nos termos, aqui utilizaremos a noo de assinatura nominal [24]. Do ponto de vista formal as ligaes de variveis precisam ser atmicas, no sentido de que suas estruturas so imateriais, se comparadas por um critrio de distino entre dois nomes de mesmo tipo. assinatura nominal. Portanto, essa classe de objetos chamada de tomo, em uma
A de todos os tomos e AS de todos os sorts sort A AS, que designa sorts para tomos e determina que os conjuntos AS e Aa := {a A | sort(a) = a} sejam enumerveis. Uma assinatura nominal consiste ento de um subconjunto de sorts de tomos, A AS, um conjunto D de sorts de dados e um conjunto C de construtores. Cada construtor K C tem uma aridade e um sort de resultado s D , o que notacionado por K : s.
Sero denidos dois conjuntos: o conjunto
Na especicao de [23] a denio de tomo utiliza um recurso de denio indutiva chamado de tipo
Record, o qual permite uma maleabilidade maior nas declaraes sobre o tipo
ExtFset, que modela o comportamento de conjuntos extencionais nitos. Os tipos aset e AtomT so construdos sobre a denio de ExtFset, para que o primeiro represente
um conjunto nito de tomos e o segundo, um conjunto innito de objetos dessa mesma classe.
Denio 2.4.2
indutiva:
(Aridade)
O Conjunto de
aridades
17
(i) Todo sort de tomo (ii) Todo sort de dados (iii) A aridade unitria (iv) Se (v) Se
a A s D 1
uma aridade;
so aridades, ento e
1 2
uma aridade;
a A
uma aridade.
Record AtomT : Type := mkAtom { atom : Set; asetR : ExtFset atom; aset := extFset asetR; atom_eqdec : forall (a b : atom), {a = b} + {a <> b}; atom_infinite : forall (S : aset), { a : atom | In a S } } .
Figura 2.10: tomos.
Denio 2.4.3.
(i) Se (ii) Se
O conjunto de
termos
t
t:
indica que
denido por:
a Aa
a,
ento
a:a
um termo;
K:s
t:
um termo, ento
Kt : s
tambm um termo;
:1
e e
t1 : 1 a Aa
t2 : 2 t:
t1 , t2 : 1 2 a t: a
um termo, ento
, T() o ar T() Ar() a funo de designao de um termo t para uma nica aridade . Para cada Ar(), denota-se T() o subconjunto {t T() | ar(t) = }, de termos de aridade .
Denotam-se o conjunto de todas as aridades sobre a assinatura conjunto de todos os termos sobre
Ar()
Exemplo 2.4.4.
do clculo
Exemplicando:
X X
A constante A varivel
reresentada por
D; V x;
representada por
X (a b)
represntado por
A a, b L
X x.(x y)
representado por
A V x, V y
18
X xz.((x y) z))
representado por
(L
A A V x, V y , V z ).
minadas sobre a assinatura ordinria (considerada na totalidade dos termos, e no nas tores so aqueles de
-equivalncia) associada a , os quais os sorts so as aridades de , os constru, somados a construtores para a unidade, pares e ligaes de tomos,
alm dos prprios tomos considerados como constantes particulares. Consequentemente pode-se utilizar recurso ordinria estrutural para se denir funes do conjunto T() para
propriedades sobre esse termos. Ainda no foi considerado o fato de que, termos do tipo a menos de renomeamentos do tomo
-equivalncia, t = t :
(onde
a t devem ser identicados a. Dada uma assinatura nominal , a relao de Ar() e t, t T() ) faz tais identicaes, e
Denio 2.4.5
(Denio de
assinatura nominal
a relao
Em uma
(= .1)
a A a Aa a = a : a = :1
(= .2) (= .4)
(K : s C ) t = t : Kt = Kt : s
(= .3) (= .5) a A
t1 = t1 : 1 t2 = t2 : 2 t1 , t2 = t1 , t2 : 1 2
a, a , a Aa
a } indica o termo resultante aps a substituio de todas as ocorrncias de a (assumindo que ambos so do mesmo sort). Essas duas operaes podem ser
(= .5), atm(t)
Denio 2.4.6
seguintes funes
Dado um termo, as
19
= = = = =
(i)
a {a := a } =
a se a = a a se a = a = K(t{a := a }) = = t1 {a := a }, t2 {a := a } = a {a := a } t{a := a }
O ingrediente crucial na formulao da induo e recurso estrutural, para sobre uma assinatura nominal, conceito de suporte nito.
-termos a
fresh (novo) para um objeto matemtico. Isso permite caracterizar no somente tomos novos para termos, o que coincide com a denio do conjunto de variveis que no ocorrem livres no termo, mas tambm denir o signicado de tomo novo para objetos de tipo funcional. Ento, consideremos o seguinte conjunto de armaes:
(i) Seja
P erm o conjunto de todas as permutaes (nitas) de tomos, cujos elementos so, por denio, bijees : A A tais, que o conjunto {a A | (a) = a} nito e sort((a)) = sort(a);
por :
( )(a) := ( (a));
(iii)
onde
(a a ),
que
para
e de
para
a,
xando os todos os
(v) um fato bsico de teoria de grupos, que qualquer por uma lista nita de transposies.
P erm
se
de nmero nito de transposies, assim uma permutao pode ser representada Por exemplo:
a, a , b, b , c, c A
[(a a ), (b b ), (c c )]
um elemento de
P erm.
20
Denio 2.4.7
pertencente a
(Ao de Permutaes)
(P erm X X),
Uma ao de
.x,
(i) (ii)
.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
so denidos primeiro para tomos, como uma funo que recebe um par ordenado de elementos e um terceiro elemento a ser trocado. Se o terceiro elemento for igual a qualquer um dos outros dois, no par, ento ele ser trocado, caso contrrio nada realizado. A ao de um swap sobre um objeto qualquer do tipo
Denio 2.4.8
X,
(i) Sendo e (ii) Se de (iii)
Set
e um elemento
x X:
denida atravs do
Record SwapT.
um conjunto
Dada uma ao de
P erm,
a, a A /
denominado um
suporte de x;
de mesmo sort
x,
(iv) Se
ento o
de
denotado por
Demonstrao. No item (iv) dessa denio, consideramos a existncia do um mnimo nmero de elementos para o conjunto suporte, e de fato necessitamos provar a existncia desse mnimo. Se digamos
x.
Mas se
A2 , podemos vericar que A1 A2 tambm um suporte nito de x. Suponhamos a, a tomos de mesmo sort no pertencentes a A1 A2 ; ento devemos provar que (a a ).x = x. O caso trivial ocorre quando a = a (pois (a a ) = ); No caso em que a = a , consideremos um outro tomo a de mesmo sort de a e a , no pertencente ao conjunto nito A1 A2 {a, a }, ento (a a ) = (a a ) (a a ) (a a ) A1
e a uma composio de transposies tal que ela xa esto em
A1
ou no
A2 ),
logo
(a a )
tambm xa
xX
Variable A : AtomT. Variable X : Set. Variable P : PsetT A X. Definition supports (F : aset A) (x : X) := forall a b, In a F -> In b F -> perm P [(a, b)] x = x.
Figura 2.16: Conjunto Suporte.
Dado um elemento de um conjunto nominal, na maioria do tempo o interesse no saber qual o seu suporte, mas qual conjunto (innito) de tomos que no contm seu suporte. Em [23] o predicado
Denio 2.4.9
(Fresh)
f resh
Se
x X
A Denio 2.4.9 bastante abrangente, pois dados quaisquer dois elementos de conjuntos nominais, possvel conceber se um ou no novo para o outro. Basta vericar ser interseo de seus menores suportes vazia. O Predicado de um conjunto nominal.
Ele permite caracterizar somente o fato de um tomo ser novo ou no para um elemento
22
Enunciaremos o seguinte lema sem demonstr-lo, para maiores detalhes recomendamos a leitura de [24].
Lema 2.4.10
(i) (ii) (iii)
Se
(Freshness)
X, y Y, f Y f s Z, P erm
Sejam
X, Y
e
Para todo
Y , de modo que se f X Y , ento .f igual o mapeamento de cada x X para .(f ( 1 .x)) Y . Essa
de tomos sobre o conjunto de todas as funes de para denio equivalente a ao fato da aplicao de funes ser respeitada por permutaes de tomos:
X Y,
(2.1)
f X Y possua um suporte nito. Por exemplo, se X = N e Y = A, ento dado que o conjunto A de tomos contvel, h funes sobrejetivas de N em A; ms no difcil de ver que, nesse caso toda f N A dever ter uma imagem nita para que
seu suporte seja tambm nito. Todavia, se
A,
ento
.f
suportada por
{(a) | a A} f}
(tal
X f s Y := {f X Y | A
de funes com suporte nito de
nito
A, A
suporte de
para
Y,
X,
X/ de classes de equivalncia possui .[x] = [.x]. Mais adiante, uma classe de equivalncia possuir o suporte igual a qualquer representante da classe. Ento X/ ser um conjunto nominal. O conjunto nominal T () de -termos (de aridade sobre uma assinatura nominal ) do conjunto nominal T() , um exemplo dessa construo.
subconjunto nominal de o usual conjunto uma ao de permutao tomos, dada por Essas classes de devido a prpria mais prxima da
X X,
-equivalncia [t] de termos t : , tm propriedades elementares, denio relao = (2.4.5), e assim possvel introduzir uma notao notao informal para as classes de -equivalncia, conforme segue: a A
e
(i) tomos : Se
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
[ ] , a qual denotada
( );
tal que existe
(iv) Pares : Se
i = 1, 2,
escreve-se
1 , 2 Ar() e e T ()1 2 , ento h um nico ei T ()i , para ti com ei = [ti ] (i = 1, 2) e e = [ t1 , t2 ] . Nesse caso, somente (e1 , e2 );
a A , Ar() e e T () a , ento para cada a Aa com a # e h um nico e T () tal que existe t com e = [t ] e e = [ a t ] . Nesse caso escreve-se a.e .
Nesse ponto, temos a descrio dos principais fundamentos da abordagem nominal, com a construo de um conjunto quociente, mdulo uma relao de
-equivalncia,
alcanando uma denio precisa para os termos com ocorrncias de variveis ligadas. Mais alm, nas Seces 3 e 4.2, forneceremos exemplos de aplicaes de tais conceitos, no estabelecimento dos princpios de induo e recurso gramticas dos clculos
-estrutural,
para as respectivas
ex.
24
Captulo 3 O Clculo
O Clculo
Alonzo Church [9] na dcada de 30. Inicialmente Church trabalhava em uma teoria que envolvia funes e lgica, objetivando uma fundamentao terica para tais conceitos, mas na totalidade o sistema desenvolvido continha inconsistncias, tal como foi demonstrado por Kleene e Rosser em [31]. Assim o subsistema formado somente pela parte da teoria de funes, cuja a consistncia foi demonstrada por Church [32], se tornou um modelo eciente. O curioso que, de acordo com Russell [33], a nomenclatura Clculo a notao
surgiu
x.2x + 1,
2x + 1.
recursos tipogrcos da poca induziram o posicionamento do smbolo no em cima da letra x, mas a sua esquerda, o que resultou em x.2x + 1. Depois em uma outra publicao apareceu
No entanto os
x.2x + 1,
a ::= x | (a a) | (x.a)
A denio acima que representar que, um termo clculo
(3.1)
(a b);
e abstrao
(x.a),
e corpo
a.
Se a um a .
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
denio tem um problema bem conhecido. Os construtores de uma declarao no deveria ser verdade, se quisermos incluir a relao de igualdade (=) pr-construda no Coq, pois: por [23], justamente a especicao do clculo
so sempre injetivos por denio, no entanto no caso do construtor abstrao (lam) isso
Inductive
de um termo podem ser obtidas atravs dos princpios de recurso ordinria (que no
necessitam considerar a relao de O abstrator
-equivalncia
entre termos).
x do termo (x.a) liga todas as ocorrncias da varivel x em a, e qualquer outra varivel que no est ligada por nenhum outro abstrator em a, denominada varivel livre do termo (x.a). Ento, por exemplo y ocorre livre em x.(y x), e x ocorre ligado
no termo.
Denio 3.0.11
(i) fv(x)
a )
Denimos o
con-
(ii) fv(a b)
Denio 3.0.12
termo
(iii) fv(x.a)
:=
a ,
a )
A funo comprimento
de um
a x,
a (a0 a1 ), a x.a0 ,
ento
ento
L(a) = L(a0 ) + 1.
composto de uma nica regra de reescrita, que
Denio 3.0.13
a{x/b}
cias livres de
chamada
) (x.a)b a{x/b}
em
por
b.
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
rule_beta uma relao binria entre termos, pois tem tm -> tm -> Prop, e alm disso ela relaciona um a aplicao de uma abstrao um termo ((& x, s) ! t)) a uma meta-substituio (s{x := t}). Estamos uti:= (a ! b)),
abstraes (x.a
lizando aqui uma notao criada nos arquivos da especicao, para denotar aplicaes ((a b)
b})
:= & x, a)
e a meta-substituio (a{x/b}
:= {x := prpria regra
criamos a notao:
a ->_Beta b := rule_beta a b.
Inductive rule_beta : tm -> tm -> Prop := reg_rule_beta : forall (s t : tm)(x : tmvar), rule_beta ((& x, s) ! t) (s{x := t}).
Figura 3.1: Denio da regra
. a, b
e
Denio 3.0.14
distintas, a (i) (ii) (iii) (iv)
(Meta-substituio para
-termos)
Sendo
x, y
variveis
x=y
y /
fv(b)
A restrio x
= y e y fv(b) /
O termo
no item
Exemplo 3.0.15.
y.x
y;
aplicando a substituio
{x/y}
y.y ,
que a representao da
y.x,
t ,
pois as condies
(y.t). A -equivalncia, onde qualquer termo (z.t ) -equivalente a (y.t) (fato denotado por z.t = y.t) desde que z j no ocorra livre em t e t seja igual a termo t, com o renomeamento de todas as ocorrncias livres de y por z . Ento por exemplo: x.x(z x) = y.y(z y). Barendregt [8] abordou essa questo,
restringem tambm a propagao da recurso dentro do termo soluo dada, primeiramente denir uma relao propondo uma condio de higiene para os termos: Os nomes utilizados para variveis
(iv)
livres devero ser sempre distintos dos nomes dados para variveis ligadas em um termo .
27
No entanto essa condio no dispensa o uso da relao de se ento funes recursivas no sobre relao
-equivalncia.
Consideram-
isto , o conjunto
/= . (x.a)
representa uma funo, cuja varivel
x,
logo seu
Exemplo 3.1.1.
f :RR f (x) = x
f :RR f (y) = y
A abordagem nominal da seo 2.4, pode ser aplicada ao clculo o conjunto quociente
comforme exibido
/= . O construtor D dessa assinatura representa uma constante, a qual ser chamada dot (). J V , A e L so os respectivos construtores de varivel, aplicao e abstrao. Nesse contexto, a relao de -equivalncia entre os termos dada
por:
(= .D)
D = D a, a , a AV
(= .V )
a AV V a = V a
(= .A)
u = u : t & v = v : t A u, v = A u , v : t
(= .L)
Figura 3.2:
de um termo devero ser designadas por ndices e as variveis livres por nomes. Esse tipo de formalizao conhecida como locally nameless representation [34, 35], e originalmente surge em implementaes para o assistente de prova Isabelle/HOL [4]. Nomes so denidos pela estrutura atmica conforme mostrado na Figura 2.10. A denio indutiva
subconjunto de termos bem formados. De um modo geral, dado um termo t, seu tipo
Phi n se o maior ndice de uma varivel pendurada que ocorre nele, menor que n. Entende-se por varivel pendurada de ndice n, uma varivel do tipo pbound n que ocorre em um posio livre no termo. No difcil de se vericar que (n : nat), Phi n Phi (n + 1).
Assim, deni-se o conjunto de termos bem formados (tm) como sendo
Phi
Phi 0,
o que
Exemplo 3.1.2.
(i) (ii) (iii)
Phi
Phi 0. Phi,
so dados por:
(iv) (v)
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,
pelo ndice
n, resultando em um termo de tipo (n + 1). A abs. E ela aparece no construtor lam realizando
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).
.
Os princpios de induo e recurso ordinria estrutural sobre termos, isto , no considerando as classes uso estrutura indutiva de
-equivalncia, podem ser obtidos em alguns casos, somente fazendo Phi, automaticamente gerada pelo Coq. Esse o caso, por
exemplo, das construes de funes recursivas para conjunto de variveis livres e para o
29
abs,
A declarao da Figura 3.6 exibe um teorema de 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
Teorema 3.2.1
junto (i) (ii) (iii) (iv)
(Teorema de Induo
um subcon-
D S; a AV , V a S ; e1 e2 S, A (e1 , e2 ) S ; F
nito
AV , a e, a F L a.e S . /
Theorem tm_induction : forall (P : tm -> Type) (F : aset tmvar), (P dot) -> (forall a, P (var a)) -> (forall s, P s -> forall t, P t -> P (s ! t)) -> (forall a, In a F -> forall s, P s -> P (& a, s)) -> forall x : tm, P x.
Figura 3.7: Teorema de induo
-estrutural
para o Clculo
No Teorema 3.2.2 as condies so: primeiro o fornecimento de funes particulares, isto , indexadas pelos construtores, todas das quais com um suporte nito
F;
e alm
disso uma condio nita para ligaes (FCB), a qual exige que sempre exista um
a AV ,
30
tal que
aF /
x, a # fL (a, x).
de funes (mdulo equivalncia extencional), tal que essa famlia tem comportamento de uma funo recursiva sobre
Teorema 3.2.2
/= . -estrutural
para o clculo
(Teorema de Recurso
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
F.
Ento existe uma nica famlia de funes, de suporte nito satisfazendo: (i) (ii) (iii) (iv)
F (f /= f s X )
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
substituio, utilizando o Teorema 3.2.2. Esse trabalho foi desenvolvido em Coq, tambm por Aydemir et al em [23].
Section Meta_substitution. Variable y : tmvar. Variable s : tm. Definition meta_subst : tm -> tm := tm_rec tm dot (fun x => if atom_eqdec tmvar x y then s else (var x)) (fun s s' t t' => s' ! t') (fun x t t' => & x, t') (add y (fvar s)). Lemma meta_subst_supp_dot : supports tmP (add y (fvar s)) dot. Lemma meta_subst_supp_var : supports (tmvarP > tmP) (add y (fvar s)) (fun x : tmvar => if atom_eqdec tmvar x y then s else var x). Lemma meta_subst_supp_app : supports (tmP > tmP > tmP > tmP > tmP) (add y (fvar s)) (fun _ s' _ t' : tm => s' ! t'). Lemma meta_subst_supp_lam : supports (tmvarP > tmP > tmP > tmP) (add y (fvar s)) (fun (x : tmvar) (_ t' : tm) => & x, t'). meta_subst
desejado, ou seja, verica-se a sequncia de armaes abaixo, quem descrevem que para
32
cada construtor haver a propagao da funo de forma recursiva, sendo que no caso do construtor abstrao a varivel ligada no poder pertencer a conjunto conjunto
F.
E por m o
meta_subst.
Theorem meta_subst_dot : meta_subst dot = dot. Theorem meta_subst_var_eq : meta_subst (var y) = s. Theorem meta_subst_var_neq : forall x, x <> y -> meta_subst (var x) = (var x). Theorem meta_subst_app : forall q r, meta_subst (q ! r) = (meta_subst q) ! (meta_subst r). Theorem meta_subst_lam : forall x t, x <> y -> In x (fvar s) -> meta_subst (& x, t) = & x, (meta_subst t). Theorem supports_meta_subst : supports (tmP > tmP) (add y (fvar s)) meta_subst. -
3.4 O conjunto SN
A obteno de um conjunto de regras indutivas para denio do conjunto A demonstrao da PSN para o clculo para o conjunto
SN ,
algo
ex,
SN ex . ,
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))
O processo de reduo de um termo no nico, no Exemplo 3.4.1 havia duas possibilidades para aplicao da regra
podem seguir uma lgica, ou podem vir de maneira aleatria. processo chamado de Estratgia de Reduo [18]. Uma estratgia de reduo do clculo
procedimento de escolha para qual parte o termo dever ser primeiramente reduzida, esse
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
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
SN .
que
Lema 3.4.3
x /
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:
a0 {x/a1 } a2 ...an SN .
(n
34
Se
a1 SN ,
n 1:
(Caracterizao Indutiva de
SN )
Seja
(a SN a X) pode ser demonstrada no somente pelas possveis em SN , mas atravs da induo lexicogrca no par l (a), L(a) :
1. 2. 3.
a x b1 ...bn . Ento b1 , ..., bn SN . E por hiptese de induo b1 , ..., bn X , logo a X. a x.b. Demonstrao anloga ao caso anterior. a (x.b0 ) b1 ...bn . Ento b1 SN , b0 {x/b1 } b2 ...bn SN , logo por hiptese de induo, b1 X e b0 {x/b1 } b2 ...bn X , ento a X . (a X a SN ) a demostrao realizada de induo na estrutura de X : a x b1 ...bn . Ento b1 , ..., bn X . E por hiptese de induo b1 , ..., bn SN , logo a SN . a x.b. Demonstrao anloga ao caso anterior. a (x.b0 ) b1 ...bn . Ento b1 X , b0 {x/b1 } b2 ...bn X , logo por hiptese de induo, b1 SN e b0 {x/b1 } b2 ...bn SN , ento a SN .
Para 1. 2. 3.
35
-reduo
e a troca de parmetros
formais, por seus correspondentes argumentos modelada pela substituio. Enquanto que a substituio no clculo
gramtica do clculo, em clculos de substituies explcitas este processo internalizado e manipulado por smbolos e regras de reduo, dentro da prpria sintaxe do sistema, objetivando fornecer um formalismo adequado e mais prximo das implementaes reais. Clculos de substituies explcitas, tem aplicaes em diferentes reas da computao, tal como programao lgica e funcional, teoria da prova, formalizao de teoremas, linguagens orientadas a objeto, dentre outras. Por exemplo, a denio da regra bem claros nesse contexto. H de se vericar que os novos formalismos, que implementam substituies explcitas, atendem simultaneamente a determinadas propriedades, como a simulao de um passo Existem diversas formas de se denir um clculo de substituies explcitas, todavia algumas restries so bastante relevantes.
da
Bruijn (, )
[1], o qual utiliza ndices ,
pois ela tem
de de Bruijn [36] para designao de variveis. Essa notao considera qualquer varivel
n.
um pouco mais complexa do que a do clculo
duas classes de objetos : termos e substituies. A notao com ndices de de Bruijin tem vantagens, por exemplo ela dispensa o uso de resenta uma classe de equivalncia, de
-converso, j que um termo do tipo 1 reptodos os termos x.x, onde x pode ser renomeado
metavariveis,
e abertos so os que possuem. Meta-
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
:= :=
(4.1)
(Beta) (App) (Abs) (Clos) (Varcons) (Id) (Assoc) (Map) (IdL) (IdR) (VarShift) (Scons) (Eta )
(S1 S2 ) T S1 (S2 T )
(ShiftCons) (M.S)
M = N [] .
Exemplo 4.1.1.
0
pela regra
O construtor denido de forma que, para um natural n N, temos n[] := n e n + 1 := 1[]n . Assim, por exemplo o termo z.x.(x x) z representado por (1 1) 1[] e w.z.x.(x z) w representado por (1 1[]) 1[]2 .
O conjunto de regras do
(Beta),
do
Exemplo 4.1.2.
demais regras.
no clculo
(x.(x x) z ((1 1)) 1[]2 (1 1)[1[]2 .id] ((1[1[]2 .id]) (1[1[]2 .id]))
No clculo
a meta-substituio, isso , aquela equivalente a que gerada na regra do , denida para a gramtica do novo clculo atravs de recurso sobre a estrutura
(Meta-substituio no clculo
dos termos.
Denio 4.1.3
a funo (i) (ii)
do clculo
(iii)
Onde
Observao:
Exemplo 4.1.4.
e no clculo
A elevao de um termo
sua
0-potncia
denotada por
M +.
(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
[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
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
indutivas do Coq a realizam de forma plena, gerando automaticamente os princpios de induo e recurso estrutural. Dado que o
-equivalncia
que estudar os conceitos desenvolvidos nas seces 2.4 e 3.2, os quais aparecem aplicados
em [23].
38
cao explcita da denio 3.0.14, tal que ela continue funcionando, mdulo
-equivalncia,
(4.2)
Inductive Phi : nat -> Set := | pdot : forall (n : nat), Phi n | pfree : forall (n : nat), tmvar -> Phi n | pbound : forall (n i : nat), i < n -> Phi n | papp : forall (n : nat), Phi n -> Phi n -> Phi n | plam : forall (n : nat), Phi (S n) -> Phi n | psubst : forall (n : nat), Phi (S n) -> Phi n -> Phi n.
Figura 4.2: Conjunto Se
Phi
s construdo a partir da denio indutiva (4.2), ento esse fato notacionado por s T . Adaptamos a especicao de [23] para esse nova gramtica, incluindo nela o construtor da substituio explcita (a[x/a]). O primeiro passo foi adicionar um novo construtor na denio indutiva de Phi, da especicao. A -equivalncia estendida para o caso do construtor da substituio explcita, onde por exemplo: (y.x)[x/y] = (z.x)[z/y]. O que representado atravs dos teoremas da Figura 4.3.
Theorem eq_lam : forall a b s, In b (fvar s) -> & a, s = & b, (perm tmP [(a, b)] s). Theorem eq_subst : forall a b s t, In b (fvar s) -> s [a | t] = (perm tmP [(a, b)] s) [b | t] .
Figura 4.3: Teorema de
-equivalncia
Phi,
Denio 4.2.1
de um dado termo
tT,
tT)
39
fv(x)
Denio 4.2.2
(i) Se (ii) Se (iii) Se (iv) Se
:= {x} fv(x.u) := fv(u) \ {x} fv(u v) := fv(u) fv(V ) fv(u[x/v]) := (fv(u) \ {x}) fv(v)
(Comprimento de
tT)
A funo comprimento
L de um termo t T ,
t x,
ento
t (s v), t x.s,
ento ento
t s[x/v],
ento
x.t e t[x/u] ligam as ocorrncias livres de x em t. usada a notao tn para a lista de n (n 0) termos t1 , ...., tn e utn para ut1 ...tn , o que uma abreviao de (...((ut1 ) t2 )... tn ).
Portanto,
se
x fv(t) /
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
(4.3)
Diferentes solues so adotadas com intuito de fechar este diagrama. Uma soluo
se
y fv(u)
(4.4)
y fv(u) em (4.4) feita, justamente porque nesse caso especco, a regra: t[x/u][y/v] Comp t[y/v][x/u[y/v]] fundamentalmente necessria para garantia da conuncia. Alm disso, tomando-se somente o sistema x (sistema formado por todas as regras do clculo, exceto a regra B ) e no se inserindo a restrio y fv(u) aplicao / / da regra (4.4), pode-se ter um caso de no terminncia, quando y fv(u) e x fv(v):
40
para estabelecer a conuncia em termos abertos [10, 37]. Infelizmente o sistema. A equao
no con-
uente em termos abertos (termos com meta-variveis), o que uma decincia desse
t[x/u][y/v] =C t[y/v][x/u]
se
y /
fv(u)
&x /
x, e anexada ao sistema , ,
tem
ex.
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
Axiom equation_C : forall (t u v:tm) (x y:tmvar), In y (fvar u) -> In x (fvar v) -> t [x | u] [y | v] = t [y | v] [x | u].
Figura 4.5: Equao
C.
Equao: Regras:
t[y/v][x/u]
se
se
se
B,
lado esquerdo ou direito de uma aplicao, no corpo de uma abstrao e no corpo ou no argumento de uma substituio explcita. Denota-se
=e )
Bx para a = =C . De
B x.
denidas por:
t ex t t ex t
s, s s, s
t =e s x s =e t t =e s Bx s =e t
Inductive rule_b: tm -> tm -> Prop := reg_rule_b : forall (s t : tm)(x : tmvar), rule_b ((& x, s) ! t) (s[x | t]). Notation "M ->_B N":= (rule_b M N) (at level 59, left associativity). Inductive rule_var: tm -> tm -> Prop := reg_rule_var : forall (s t : tm)(x : tmvar), rule_var (x[x | t]) t. Notation "M ->_Var N":= (rule_var M N) (at level 59, left associativity). Inductive rule_gc : tm -> tm -> Prop := reg_rule_gc : forall (s t : tm) (x : tmvar), In x (fvar s) -> rule_gc (s [x | t]) s. Notation "M ->_Gc N":= (rule_gc M N) (at level 59, left associativity). Inductive rule_app : tm -> tm -> Prop := reg_rule_app : forall (s t u: tm) (x : tmvar), rule_app ((s ! t) [x | u]) ((s [x | u]) ! (t [x | u])). Notation "M ->_App N":= (rule_app M N) (at level 59, left associativity). Inductive rule_lamb : tm -> tm -> Prop := reg_rule_lamb : forall (s t : tm) (x y : tmvar), x <> y -> In x (fvar t) -> rule_lamb ((& x, s) [y | t]) (& x, (s [y | t])). Notation "M ->_Lamb N":= (rule_lamb M N) (at level 59, left associativity). Inductive rule_comp : tm -> tm -> Prop := reg_rule_comp : forall (s t u : tm) (x y : tmvar), x <> y -> In x (fvar u) -> In y (fvar t) -> rule_comp ((s [x | t]) [y | u]) ((s [y | u]) [x | (t [y | u])]). Notation "M ->_Comp N":= (rule_comp M N) (at level 59, left associativity).
Figura 4.7: Conjunto de regras do
ex
no Coq.
ex
na raiz de um
42
Inductive sistema_ex : tm -> tm -> Prop := | rule_var_ex : forall M N: tm, (M ->_Var N) -> sistema_ex M | rule_gc_ex : forall M N: tm, (M ->_Gc N) -> sistema_ex M N | rule_app_ex : forall M N: tm, (M ->_App N) -> sistema_ex M | rule_lamb_ex : forall M N: tm, (M ->_Lamb N) -> sistema_ex | rule_comp_ex : forall M N: tm, (M ->_Comp N) -> sistema_ex Notation "M ->_[ex] N":= (sistema_ex M N) (at level 59, left associativity).
Figura 4.8: Sistema de reescrita
N N M N M N.
ex.
sistema_Bex ento denido para representar regras do sistema_ex adicionando-se a regra B, a raiz
O
Inductive sistema_Bex : tm -> tm -> Prop := | rel_rule_b_Bex : forall M N: tm, (M ->_B N) -> sistema_Bex M N | rel_sistema_ex : forall M N: tm, (M ->_[ex] N) -> sistema_Bex M N. Notation "M ->_[Bex] N":= (sistema_Bex M N) (at level 59, left associativity).
Figura 4.9: Sistema de reescrita
Bex.
ex
Bex,
rel_ex
rel_lex, 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
ex.
43
ex,
mas possui um maior nmero de regras reescrita, buscando exercer 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] (x.t)u x[x/u] t[x/u] (tu)[x/v] (tu)[x/v] (tu)[x/v] (y.t)[x/v] t[x/v][y/v] t[x/v][y/v]
Regras:
t[y/v][x/u]
se
t[x/u] u t se x fv(t) / (t[x/v] u[x/v]) x fv(t) & x fv(u) (t u[x/v]) x fv(t) & x fv(u) / t[x/v] u x fv(t) & x fv(u) / y.t[x/v] t[y/v][x/u[y/v]] se y fv(u) & y fv(t) t[x/u[y/v]] se y fv(u) & y fv(t) / es.
Realizando agora uma rpida comparao entre os clculos de substituies explcitas apresentados, com respeito as caractersticas desejadas para uma extenso do clculo consideramos
; z
e a funo (f ) da sintaxe
para a sintaxe
C MC PSN SIM FC
conuente; A conuncia em
meta-termos desejvel, dado que muitas vezes se quer elaborar provas com lacu-
preserva a
tambm o so no
-normalizao-forte, z ;
-reduo f (t) z f (t );
no clculo
z .
Ou seja, se
t t
Adaptamos aqui uma tabela realizada em [10] que aponta, para alguns clculos de substituies explcitas, a presena ou no, das propriedades acima mencionadas:
44
Clculo
C
[43]
MC No Sim No Sim
ex
es,
regras, tem as importantes propriedades desejadas para uma extenso do clculo alm disso eles cumprem a tarefa de implementar as substituies explcitas.
ex,
no tivemos
-estrutural
adaptao possui um grau de complexidade relativamente baixo. Contudo, quando buscamos realizar o mesmo trabalho com o Teorema de recurso
com uma barreira na demonstrao de um dos lemas nais da seo de recurso. O problema aparece quando temos que permutar a varivel ligada da substituio explcita, pois quando aplicamos a permutao temos possivelmente ocorrer livre em
t.
pode
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.
ex, o que muito semelhante ao que ocorre na Denio 3.0.14 para clculo . t[y/u]{x/v}. ex)
Mas
necessrio levar em considerao um novo caso, para a situao onde o termo uma substituio explcita, isto , a recurso em
Denio 4.3.1
distintas, a
(Meta-substituio no Clculo
Sendo
u, b T
x, y
variveis
y /
fv(b)
t[y/u]{x/b} = t{x/b}[y/u{x/b}],
se
y /
fv(b)
t[y/u]{x/v};
de um gramtica auxiliar (ex'), onde a substituio explcita fosse substituda por uma espcie de segunda abstrao, ou seja, uma substituio que no carrega o seu argumento, por exemplo transladamos do
s[x]. Para aplicar a funo de meta-substituio a um termo u T , u para gramtica auxiliar, onde foram realizadas as chamadas recursivas da
ex
ex'. ex
na
(s[x/t])
levada na
s[x]
por
t,
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
Phi',
prova de que
de
Phi
em
Phi'.
Phi
e f(Phi),
f(Phi)
x (s t) x.s (s[x] t)
Exemplo 4.3.2.
termo
Phi
e f(Phi).
domnio f(Phi) Phi'. Esse fato demostrado atravs de induo sobre Phi. De posse 1 dessas duas funes ( e ), denimos a meta-substituio no clculo ex como sendo: 1 u{x/b} := f (f(u){x/f(b)} ).
f f
y[y/(z z)]
1
: Phi' Phi,
, no
Definition meta_subst (y : tmvar) (s : tm) (t : tm) : tm := f_inv (meta_subst' y (f_Phi s) (f_Phi t)).
Figura 4.16: Meta-substituio no
ex,
ex
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:
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,
Lemma basic_prop_1_rel_lex : forall (s t :tm), (s ->_lex t) -> Subset (fvar t) (fvar s). Lemma basic_prop_2_lex : forall x s t u, (s ->_lex t) -> ((u {x := s}) ->_lex* (u {x := t})). Lemma basic_prop_3_rel_lex : forall x s t u, (s ->_lex t) -> ((s {x := u}) ->_lex (t {x := u})). Lemma basic_prop_4_rel_lex : forall x t u, SN rel_lex (t {x := u}) -> SN rel_lex t.
Figura 5.1: Propriedades bsicas.
Lema 5.0.3
(i) Se (ii) Se
(Propriedades bsicas)
Seja
R {ex, ex},
e sejam
t, t , u
termos.
t R t ,
ento fv(t
) fv(t);
t{x/u} R t {x/u}.
Ento em particular
R, e induo -
u,
X X
Se Se
u = x,
u{x/t} = t R t = u{x/t };
e portanto
u = y = x,
y{x/t} = y = y{x/t }
48
y{x/t} R y{x/t };
X X X X
Se
u = (u v ), u = x.u , y=x
e
ento
por hiptese de Se
(u v ){x/t} = (u {x/t} v {x/t}) R (u {x/t } v {x/t }), induo e (u {x/t } v {x/t }) = (u v ){x/t }; (x.u ){x/t} = (z.u ){x/t} = z.u {x/t} R z.u {x/t }, induo. Mas z.u {x/t } = (z.u ){x/t } = (x.u ){x/t };
ento
ento
por hiptese de Se
u = y.u ,
(y.u ){x/t} = y.u {x/t} R y.u {x/t }, z.u {x/t } = (z.u ){x/t }.
u = u [x/v ], ento u [x/v ]{x/t} = u [z/v ]{x/t} = u {x/t}[z/v {x/t}] R u {x/t }[z/v {x/t }], por hiptese de induo. Mas u {x/t }[z/v {x/t }] = u [z/v ]{x/t } = u [x/v ]{x/t }; y = x e u = u [y/v ], ento u [y/v ]{x/t} = u {x/t}[y/v {x/t}] R u {x/t }[y/v {x/t }], por hiptese de induo. Mas u {x/t }[y/v {x/t }] = u [y/v ]{x/t }.
Se
y = x e t = (y.s) v B s[y/v] = t , ento: t{x/u} = ((y.s) v){x/u} = ((y.s){x/u} v{x/u}) = ((y.s{x/u}) v{x/u}) t{x/u} = ((y.s) v){x/u} B s{x/u}[y/v{x/u}] = s[y/v]{x/u} = t {x/u}.
E se, por exemplo
Sejam
uT.
Ento
t[x/u] ex t{x/u}.
estrutural sobre
-induo
t,
C.
X X X
Se Se Se
t = x,
ento
t = y = x, t = (u v ),
ento ento
(u v )[x/u] App (u [x/u] v [x/u]), + mas por hiptese de induo (u [x/u] v [x/u]) ex (u {x/u} v {x/u}) e (u {x/u} v {x/u}) = (u v ){x/u}; t = x.u ,
ento
(x.u )[x/u] = (z.u )[x/u] Lamb z.u [x/u], + mas hiptese de induo z.u [x/u] ex z.u {x/u} = (z.u ){x/u} e (z.u ){x/u} = (x.u ){x/u};
Se Se
X X X
y=x
t = x.u ,
ento
(y.u )[x/u] Lamb y.u [x/u], + y.u [x/u] ex y.u {x/u} = (y.u ){x/u};
com
t = u [x/v ], y=x
e
ento
u [x/v ] = u [y/v ],
temos dois casos:
y = x
e os demais passos so
t = u [y/v ],
49
x fv(v ) u [y/v ][x/u] Comp u [x/u][y/v [x/u]] ex u {x/u}[y/v {x/u}], por hiptese de induo e u {x/u}[y/v {x/u}] = u [y/v ]{x/u}; x fv(v ) u [y/v ][x/u] = u [z/v ][x/u], onde z fv(u) e portanto / / + u [z/v ][x/u] =c u [x/u][z/v ] ex u {x/u}[z/v ], por hiptese de induo. Mas u {x/u}[z/v ] = u {x/u}[z/v {x/u}] = u [z/v ]{x/u} = u [y/v ]{x/u}.
Exemplo 5.1.2.
Proof.
Sejam ento
varivel,
uT,
t[x/u] ex t{x/u}.
-estrutural
sobre
induo
(* var *)
(* a = x *)
intro H. autorewrite with lex. rewrite H. auto with lex. intro H. autorewrite with lex. assert ( In x (fvar (var a))). rewrite fvar_var. apply singleton_neg_intro. intro H'. apply sym_eq in H'. contradiction. auto with lex.
(* a <> x *)
(* app *)
intros s Hs t' Ht'. autorewrite with lex. apply Rplus_transitive with (y := s { x := u} ! (t' [x | u])). apply Rplus_transitive with (y := s [ x | u] ! (t' [x | u])). auto with lex. auto with lex. auto with lex. exists (add x (fvar u)). intros a H s Hs. destruct_neg_add H H1 H1. autorewrite with lex. apply Rplus_transitive with (y := (& a, s [x | u])). auto with lex. auto with lex.
(u v )[x/u] App (u [x/u] v [x/u]) u [x/u] ex u {x/u} (H.I.) v [x/u] ex v {x/u} (H.I.) (u [x/u] v [x/u]) ex (u {x/u} v {x/u}) y {x} fv(u) / (y.u )[x/u] Lamb y.u [x/u] u [x/u] ex u {x/u} (H.I.) (y.u )[x/u] ex (y.u ){x/u}
+ + + + +
(* lam *)
50
(* subst *)
exists (add x (fvar u)). intros a H s Hs t' Ht'. destruct_neg_add H H1 H1. autorewrite with lex. case (In_dec x (fvar t')).
y {x} fv(u) /
(* In x (fvar t') *)
intro H3. apply Rplus_transitive with (y := s [x | u] [ a | (t' [x | u])]); auto with lex. apply Rplus_transitive with (y := s {x := u} [ a | (t' [x | u])]). auto with lex. auto with lex.
x fv(v ) u [y/v ][x/u] Comp u [x/u][y/v [x/u]] u [x/u][y/v [x/u]] ex u {x/u}[y/v {x/u}] (H.I.) u {x/u}[y/v {x/u}] = u [y/v ]{x/u} x fv(v ) / u [y/v ][x/u] =c u [x/u][y/v ] + u [x/u][y/v ] ex u {x/u}[y/v ] (H.I.) u {x/u}[y/v ] = u {x/u}[y/v {x/u}] = u [y/v ]{x/u}
+
Qed.
A especicao do clculo
ex
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,
t ex t .
Sejam
t .
Se
t t ,
Demonstrao. t = (y.s) v s[y/v] = t , mas t = (y.s) v B s[y/v] + + e s[y/v] ex s{y/v} = t , pelo Lema da seo anterior. Portanto t ex + + ex ex ex , ento t ex t
t,
e como
Lemma beta_one_step: forall (t s: tm), (t ->_L s) -> (t ->_lex* s). Proof. intros. elim H. elim H0. intros. assert ((& x, s0) ! t0 ->_lex* (s0 [ x | t0 ])). auto with lex. assert ((s0 [ x | t0]) ->_lex+ (s0 { x := t0})). apply red_ex_lex_plus. apply full_comp. apply Rplus_Rstar in H2. apply star_trans with (y := (s0 [ x | t0])); trivial. Qed.
51
A demonstrao do Lema 5.2.1 em Coq , de fato, bastante curta, por que ela feita por induo na relao de reduo
(notacionada por
->_L),
somente atravs da
aplicao de alguns resultados j formalizados, como o Lema 5.1.1 e lemas de incluses e transitividade das relaes de reduo, que so importados dos arquivos
sur_les_realations.
Reduct_Lex
5.3 Perpetualidade
Deniu-se uma estratgia perptua para o se o
ti
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
)
Denio 5.3.1
(Estratgia
perptua .
t x.t
t (p-abs) x.t
(x.t)uun
t[x/u]un
(p-B)
v,
ento
u = v.
E alm disso,
ela no necessariamente leftmost-outermost ou left-to-right, pois a regra permite a propagao da substituio em qualquer ordem. resultados obtidos so:
(p-subst1)
Na sequncia, os primeiros
Lema 5.3.2.
(i)
Se
t,
ento
t ex t .
e aplicao
(p-var) xun tvm xun t vm , por hiptese + e portanto xun tvm ex xun t vm ; (p-abs) x.t x.t , por hiptese + e portanto x.t ex x.t ;
de induo
t ex t
(ii)
de induo
t ex t
(iii)
(p-B) (x.t)uun t[x/u]un . Temos + e portanto (x.t)uun ex t[x/u]un ; (p-subst1) t[x/u]vn (p-subst2) t[x/u]vn
Ento pelo Lema 5.0.3
que
(x.t)u B t[x/u]
+
(iv)
t{x/u}vn .
Temos que
t[x/u ]vn , por hiptese de induo u ex u . + + t[x/u] ex t[x/u ] e logo t[x/u]vn ex t[x/u ]vn .
52
Assim como no Lema 5.2.1, a formalizao de 5.3.2 utiliza resultados previamente demostrados no arquivo
t ex t (t un ) ex
Lemma perp_1 : forall a b, (a ->_$ b) -> (a ->_lex+ b). Proof. intros a b H; elim H; intros a b H; elim H; intros; try apply mult_app_plus; auto with lex. apply red_ex_lex_plus. apply full_comp. Qed.
Lema 5.3.3
IE . u SN
)
lex+.
ex
t{x/u} SN ex
ento
t[x/u] SN ex .
Axiom ie_property : forall x t u, (SN rel_lex u) -> (SN rel_lex (t {x := u})) -> (SN rel_lex (t [x | u])).
Figura 5.3: Propriedade IE. Por hora, admitiremos o Lema 5.3.3 sem demostrao. O artigo [19] fornece, atravs de uma tcnica sosticada de colorao das substituies explcitas, um captulo completo a parte, para demonstrao de tal propriedade. gramtica do A diculdade da formalizao de tal propriedade reside no fato de que, a prova em papel e lpis considera uma extenso da
ex
(com diferentes tipos de substituies explcitas), o que a rigor tem Pretendemos concluir primeiramente os demais resultados
IE
Theorem perpetuality : forall t t', (t ->_$ t') -> (SN rel_lex t') -> (SN rel_lex t).
Figura 5.4: Teorema da perpetualidade.
Teorema 5.3.4
t SN ex
se induo sobre (i)
(Teorema da Perpetualidade)
ento
t SN ex .
Sejam
t, t T
n
tal que,
t.
Se
= max{n | s N F R : s R s }.
Ento, efetuando-
(p-var) t = xun svm xun s vm = t , un N F ex e s s. Se un s vm SN ex , ento vm , s SN ex . Portanto por hiptese de induo s SN ex e logo xun svm SN ex ;
53
(ii)
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 ;
e
(iv)
u SN ex .
conclui-se que
s[x/u], vn SN ex
(v)
(p-subst2) t = s[x/u]vn s[x/u ]vn = t , u SN ex e u / u. Se s[x/u ]vn SN ex , ento em particular u SN ex , e assim u SN ex , por hiptese de induo. Dado que u SN ex e u SN ex , / pode-se concluir qualquer proposio construtiva, em especial t SN ex
SN ex
SN SN ex .
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
perptua denida. Esse tipo de caracterizao usualmente til no desenvolvimento de provas de normalizao, como realizado na denio indutiva de
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
onde necessrio somente uma regra para cada objeto da sintaxe do clculo
ex.
Denio 5.3.5
ISN )
.
u ISN (abs) x.u ISN
Proposio 5.3.6. SN
e no Teorema 5.3.4:
54
X t SN ex t ISN X t ISN t SN ex
do Teorema 5.3.4.
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
em papel e lpis de 5.3.6. Como ainda no obtivemos tais resultados, consideramos esse
ex)
Se
t SN ,
ento
t SN ex . t SN
(Lema
X X X
Se
t = xtn
com
aplicao da Se
ti SN , ento ti SN ex por hiptese de induo, regra (var) conclui-se que xtn ISN = SN ex ; s SN , ento s SN ex por hiptese de regra (abs), possvel concluir que x.s SN ex
e ento por
t = x.s
com
aplicao da Se
t = (x.u)vtn com u{x/v}tn , v SN . Ento ambos os termos pertencem a SN ex por hiptese de induo. Portanto ao se aplicar a regra (subs) obtm-se que u[x/v]tn SN ex , e logo ao se aplicar a regra (app) se chega a concluso de que (x.u)vtn SN ex .
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
ex,
e suas propriedades de
ex,
assim
como qualquer outra elaborada em um ambiente construtivo, possa ser tambm utilizada
-equivalncia entre a /= .
utilizam notao de de Bruijn. E quando realizamos o projeto de formalizao de um clculo com nomes, o
ex,
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
=.
tomamos como base, adotou a segunda opo. Essa questo, de formalizao de sintaxes abstratas com nomes e variveis ligadas, surge primeiramente em um contexto em que se fazia uso do assistente de prova Isabelle
/ HOL [4]. Tal trabalho apresentado por Christian Urban [34] e ele gerou motivaes
para que formalizaes de sintaxes com ligaes fossem estendidas a outros assistentes de prova, como o Coq. O artigo [23], de B. Aydemir et al, apresenta uma biblioteca de Lgica Nominal [20, 21, 22] (que se encontra no arquivo a gramtica do clculo
Nominal_Logic ),
e formaliza
-estrutural
[24] do
. -estrutural
para a gramtica do
Estendemos a especicao de [23] incluindo a substituio explcita (s[x/t]) na gramtica denida, e formalizamos o princpio de induo
ex.
Construmos assim uma gramtica auxiliar, a qual chamamos de conseguimos formalizar ambos os teoremas de induo e recurso uma bijeo entre as gramticas do operao de meta-substituio
ex, os fechos transitivo / reexivo-transitivo das sur_les_relations [25]. Formalizamos resultados com
respeito a compatibilidade entre as relaes reduo e a operao de meta-substituio. Conclumos com a demostrao dos Lemas da Composio Completa, da Simulao de um passo da relao
-reduo
ex .
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 funo de meta-substituio no
ex,
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
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
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
[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
-calculi
with types.
59
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.
Principia Mathematica.
Cambridge University
http://arthur.chargueraud.org/research/2009/ln/.
2010. 28 [36] N. G. de Bruijn.
France-Japan
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
calculi with explicit substitution and garbage collection. In Computer Science in the
-calculi
In
s-calculus:
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.
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