UNIVERSIDADE da MADEIRA
Departamento de Matemática e Engenharias
FUNDAMENTOS LÓGICOS E ALGÉBRICOS DA PROGRAMAÇÃO
Licenciaturas em Engenharia Informática, Ensino de Informática e Matemática
2º Semestre 2005/2006
Folha de exercı́cios nº 8
Especificações Algébricas. LOTOS - Álgebra de Dados
Definição (Assinatura): Uma assinatura é um par < S, Σ >, onde:
• S é um conjunto finito, não vazio, de sı́mbolos de espécie, designados por géneros.
• Σ : Ω → S∗ × S
Ω = C ∪ OP , em que C, OP são conjuntos disjuntos:
– C é um conjunto de constantes, ou construtores, que verificam a condição f irstΣ(c) =<>,
em que f irst indica a primeira componente de um par ordenado.
– OP é um conjunto de operações, que verificam a condição f irstΣ(op) 6=<>.
1. Considere a assinatura dos números naturais, definida da seguinte forma no LOTOS:
sorts
opns
N at
0 : → N at
succ : N at → N at
+ , ∗ : N at, N at → N at
Determine os conjuntos S, C, OP e Σ desta assinatura.
Definição (Álgebra): Dada uma assinatura < S, Σ >, uma Σ-álgebra A é um par < AS , AΩ >,
em que:
• A cada espécie s ∈ S corresponde um comjunto portador AS (s).
• A cada operação σ : S1 × S2 × · · · × Sn →
| Sσ está associada uma função com entradas e
saı́das nos conjuntos portadores correspondentes
AΩ (σ) : AS (S1 ) × AS (S2 ) × · · · × AS (Sn ) →
| AS (Sσ ).
1
2. Considere a assinatura definida da seguinte forma no LOTOS:
sorts
opns
Bool
true, f alse : → Bool
not : Bool → Bool
and , or : Bool, Bool → Bool
(a) Determine os os conjuntos S, C, OP e Σ desta assinatura.
(b) Apresente duas interpretações distintas para esta assinatura, i.e., indique duas
Σ-álgebras diferentes correspondentes a esta assinatura.
3. Considere a assinatura seguinte, onde se incluem as operações de igualdade e desigualdade
de números naturais:
sorts
opns
N at, Bool
0 : → N at
succ : N at → N at
+ , ∗ : N at, N at → N at
true, f alse : → Bool
not : Bool → Bool
and , or : Bool, Bool → Bool
eq , ne : N at, N at → Bool
Sendo x, y e 0, respectivamente duas variáveis e uma constante de espécie N at e definindo
ΞS = {x, y} dê exemplos de:
(a) Σ-termos da espécie N at.
(b) Ξ-termos de cada uma das espécies N at e Bool.
(c) Termos TΣ∪Ξ de cada uma das espécies N at e Bool.
Equações: Dada uma assinatura < S, Σ > e um conjunto de variáveis Ξ, as equações possuem
a forma (∀Ξ)t1 = t2 , onde t1 e t2 são dois termos da mesma espécie (i.e., t1 , t2 ∈ (TΣ∪Ξ )s ).
Portanto, uma equação é uma fórmula da lógica de predicados de primeira ordem com um único
predicado, a igualdade.
4. Escreva as equações para cada uma das espécies (Bool e N at) da assinatura do exercı́cio
anterior.
Definição (Equação condicional): Dada uma assinatura < S, Σ > e um conjunto de variáveis
ΞS , uma equação condicional é um triplo de termos TΣ∪Ξ . Um dos termos é obrigatoriamente
de espécie Bool e os outros dois termos devem ser da mesma espécie.
2
5. Escreva as equações condicionais para a assinatura especificada abaixo:
sorts
opns
Set, Element, Bool
{} : → Set
Insert, Remove : Element, Set → Set
eq , ne : Element, Element → Bool
eqns
f orall x, y : Element, s : Set
of sort Set
Insert(x, Insert(x, s)) = Insert(x, s);
Insert(x, Insert(y, s)) = Insert(y, Insert(x, s));
Remove(x, {}) = {};
6. Defina o isomorfismo entre as duas álgebras iniciais que apresentou no exercı́cio 2 − (b).
7. (Substituição de um termo) Considerando os conjuntos X = {x, w} e Y = {y}, o termo
2 ∗ x ∗ w + 1 e a função h = {w 7→ 3 + y}, indique a que é igual a fórmula (2 ∗ x ∗ w + 1)X
h .
Definição (Derivação): Dados dois termos t0 , t1 ∈ TΣ∪Ξ da mesma espécie s, t1 deriva t0 ,
t0 ⊢ t1 se for aplicada uma das seguintes regras de cálculo equacional:
(1) Reflexividade: ⊢ (∀X)t = t
(2) Simetria: (∀X)t = t′ ⊢ (∀X)t′ = t
(3) Transitividade: (∀X)t = t′ , (∀X)t′ = t′′ ⊢ (∀X)t = t′′
′
X
(4) Congruência: (∀X)t = t′ ⊢ (∀XY )tX
h = th em que h : X → TΣ∪X∪Y .
Substituição de variáveis por outros termos podem ser efectuadas em simultâneo nos dois
lados da equação.
′
X
(5) Eliminação de quantificadores: (∀X)t = t′ ⊢ (∀Y )tX
h = th em que h : X → TΣ∪Y e
Y ⊆ X.
Variáveis podem ser eliminadas em simultâneo nos dois lados da equação.
8. Considerando as equações da espécie N at que apresentou no exercı́cio 4. e a equação de
comutatividade da soma (∀m, n)m + n = n + m, prove que 0 + Succ(0) ∗ 0 = 0.
Tipos de dados: No LOTOS, um tipo de dados é identificado pelas espécies e pelas equações.
Os tipos de dados são definidos segundo as seguintes regras sintácticas:
Tipo dados
::=
Lista typ
Par formais
::=
::=
type Id typ is Lista typ
Par formais Espécies Equações
endtype
ǫ | Id typ {Id typ}*
ǫ
3
A lista de espécies Lista typ, indicada após a palavra chave is, importa as definições de
espécies e de equações de outros tipos de dados.
Um novo tipo de dados pode ser criado pela simples alteração dos identificadores de um tipo
de dados já existente.
Tipo dados
::=
Actualização
::=
type Id typ is Lista typ Actualização
sortnames {Id esp for Id esp}+
opnnames {Id oper for Id oper}+
endtype
renamedby
9. Defina o tipo de dados F lag a partir da alteração dos identificadores do tipo de dados
Bool (alterar true para set, f alse para clear, not para toggle).
Parametrização de tipos: Quando existem tipos de dados que contêm operações com as
mesmas propriedades, diferindo apenas nas espécies (por exemplo as listas de inteiros e de
booleanos), é útil definir um tipo de dados parametrizado, da seguinte forma:
Par formais
::=
formalsorts {Id esp for Id esp }+
formalopns {Id oper for Id oper}+
As espécies e operações formais devem ser actualizados com espécies e operações concretas:
Actualização
::=
actualizedby Id typ using
10. Consideremos o caso particular de uma lista, designada por pilha, em que o último elemento
é inserido no topo da pilha.
type Queue is
f ormalsorts Element
f ormalopns e0 : → Element
sorts Queue
opns
create : → Queue
add : Element, Queue → Queue
top : Queue → Element
eqns
f orall x, y : Element, q : Queue
of sort Element
top(create) = e0;
top(add(x, q)) = x;
top(add(y, add(x, q))) = top(add(y, q));
endtype
A partir deste tipo de dados, defina o tipo de dados N atQueue que representa uma pilha
de naturais (a espécie formal Element e a operação e0 devem ser actualizados, respectivamente, pela espécie N at e pelo construtor 0).
4
Download

Especificações Algébricas. LOTOS