• Nenhum resultado encontrado

A Linguagem de Especificação algébrica CASL e o Tipo de Dados Intervalos

N/A
N/A
Protected

Academic year: 2017

Share "A Linguagem de Especificação algébrica CASL e o Tipo de Dados Intervalos"

Copied!
138
0
0

Texto

(1)

Katiane Ribeiro Lopes

TRABALHO SUBMETIDO AO COLEGIADO DA P ´OS-GRADUAC¸ ˜AO EM SISTEMAS E COMPUTAC¸ ˜AO COMO REQUISISTO PARCIAL PARA A OBTENC¸ ˜AO DO T´ITULO DE

MESTRE EM SISTEMAS E COMPUTAC¸ ˜AO

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE

ORIENTADOR: PROF. DR. REGIVAN HUGO NUNES SANTIAGO

NATAL, BRASIL ABRIL,2004

c

(2)
(3)

A disserta¸c˜ao entitulada “A Linguagem de Especifica¸c˜ao Alg´ebrica CASL e o Tipo de Dados Intervalos” de autoria de Katiane Ribeiro Lopes foi submetida ao programa de P´os-Gradua¸c˜ao em Sistemas e Computa¸c˜ao como requisito parcial para a obten¸c˜ao do grau de Mestre em Sistemas e Computa¸c˜ao sendo avaliada e aprovada pela banca examinadora abaixo:

Data: Abril,2004

Orientador:

Prof. Dr. Regivan Hugo Nunes Santiago

Examinadores:

Prof. Dr. Marc´ılia Andrade Campos

Prof. Dr. Anamaria Martins Moreira

(4)

Data: Abril,2004

Autor: Katiane Ribeiro Lopes

Titulo: A Linguagem de Especifica¸c˜ao Alg´ebrica CASL e o Tipo de Dados Intervalos

Depto: Departamento de Inform´atica e Matem´atica Aplicada Grau: M.Sc. Convoca¸c˜ao: Abril Ano: 2004

Assinatura do Autor

(5)

e exatos possível, porém a imprecisão dos dados de entrada desse tipo de computação pode estar associada às medidas obtidas por equipamentos que fornecem dados truncados ou arredondados, fazendo com que os cálculos com esses dados produzam resultados imprecisos. Os erros mais comuns durante a computação científica são: erros de truncamentos, que surgem em dados infinitos e que muitas vezes são “truncados", ou interrompidos; erros de arredondamento que são responsáveis pela imprecisão de cálculos em seqüências finitas de operações aritméticas. Diante desse tipo de problema Moore, na década de 60, introduziu a matemática intervalar, onde foi definido um tipo de dado que permitiu trabalhar dados contínuos, possibilitando, inclusive prever o tamanho máximo do erro.

A matemática intervalar é uma saída para essa questão, já que permite um controle e análise de erros de maneira automática. Porém, as propriedades algébricas dos intervalos não são as mesmas dos números reais, apesar dos números reais serem vistos como intervalos degenerados, e as propriedades algébricas dos intervalos degenerados serem exatamente as dos números reais. Partindo disso, e pensando nas técnicas de especificação algébrica, precisa-se de uma linguagem capaz de implementar uma noção auxiliar de equivalência introduzida por Santiago [6] que ``simule" as propriedades algébricas dos números reais nos intervalos.

A linguagem de especificação CASL, Common Algebraic Specification Language, [1] é uma linguagem de especificação algébrica para a descrição de requisitos funcionais e projetos modulares de software, que vem sendo desenvolvida pelo CoFI, The Common Framework Initiative [2] a partir do ano de 1996. O desenvolvimento de CASL se encontra em andamento e representa um esforço conjunto de grandes expoentes da área de especificações algébricas no sentido de criar um padrão para a área.

A dissertação proposta apresenta uma especificação em CASL do tipo intervalo, munido da aritmética de Moore, afim de que ele venha a estender os sistemas que

manipulem dados contínuos, sendo possível não só o controle e a análise dos erros de aproximação, como também a verificação algébrica de propriedades do tipo de sistema aqui mencionado. A especificação de intervalos apresentada aqui foi feita apartir das especificações dos números racionais proposta por Mossakowaski em 2001 [3] e introduz a noção de igualdade local proposta por Santiago [6, 5, 4].

Palavra-chave: matemática intevalar, CASL, igualdade local

Referências:

[1] CASL, Common Algebraic Specification Language, www.brics.dk/Projects/CoFI, 2001.

(6)

Arithmetic and Validated Numerics – SCAN 2000, International Conference on Interval Methods in Science and Engeneering, Karlsruhe – Germany, 2000.

(7)

Sum´ario iv

Lista de Tabelas vi

Lista de Figuras vii

Agradecimentos viii

1 Introdu¸c˜ao 1

2 Matem´atica Intervalar 4

2.1 Defini¸c˜oes B´asicas . . . 4

2.2 Matrizes e vetores Intervalares . . . 16

2.3 Rela¸c˜oes de Ordem sobre Intervalos . . . 26

2.4 Considera¸c˜oes Finais . . . 27

3 CASL 29 3.1 Introdu¸c˜ao . . . 29

3.2 CASL . . . 31

3.3 Especifica¸c˜oes B´asicas . . . 32

3.3.1 Aspectos Pragm´aticos . . . 33

3.3.2 Conceitos Semˆanticos . . . 37

3.3.3 Constructos da Linguagem . . . 42

3.3.4 Exemplo de uma Especifica¸c˜ao B´asica . . . 49

3.4 Especifica¸c˜oes Estruturadas . . . 51

3.4.1 Aspectos Pragm´aticos . . . 52

3.4.2 Conceitos Semˆanticos . . . 55

3.4.3 Constructos da Linguagem . . . 56

3.4.4 Exemplo . . . 63

(8)

3.5.3 Constructo da Linguagem . . . 67

3.5.4 Exemplo . . . 70

3.6 Especifica¸c˜oes de Bibliotecas . . . 70

3.6.1 Aspectos Pragm´aticos . . . 71

3.6.2 Conceitos Semˆanticos . . . 72

3.6.3 Constructos da Linguagem . . . 72

3.7 Considera¸c˜oes Finais . . . 73

4 Igualdade Local Intervalar e CASL 75 4.1 Igualdade e Existˆencia . . . 76

4.2 Uma L´ogica para Elementos Parciais . . . 77

4.2.1 Identidade e Existˆencia . . . 82

4.2.2 Reflexividade e Existˆencia . . . 83

4.3 Ω-conjuntos . . . 87

4.4 CASL e a Igualdade de Scott . . . 91

4.4.1 Igualdade Local e Intervalos . . . 91

4.5 Aplicando a no¸c˜ao de Igualdade Local em Intervalos . . . 99

4.6 Considera¸c˜oes Finais . . . 100

5 Congruˆencia e Indicernibilidade 102 5.1 Congruˆencias e Princ´ıpios da Substitui¸c˜ao de Iguais por Iguais para a Igual-dade Local . . . 106

5.2 Considera¸c˜oes finais . . . 116

6 Conclus˜oes e trabalhos futuros 117 6.1 Conclus˜ao . . . 117

6.2 Trabalhos Futuros . . . 118

A Especifica¸c˜ao CASL dos Intervalos de Moore 120

Bibliografia 126

(9)

2.1 Opera¸c˜ao de multiplica¸c˜ao . . . 10 2.2 Opera¸c˜ao de Divis˜ao . . . 10

(10)

3.1 Diagrama da Sobrecarga . . . 36

3.2 Diagrama da Sobrecarga . . . 38

3.3 Assinatura Senten¸cas e Classe de Modelos . . . 39

3.4 Assinatura e Conjunto de Senten¸cas . . . 39

3.5 Diagrama de Institui¸c˜ao . . . 40

3.6 Diagrama do Morfismo . . . 52

3.7 Diagrama Comutativo . . . 65

(11)

• A Deus por toda a capacidade para realizar esse trabalho.

• A meus pais e irm˜aos que mesmo de t˜ao longe me deram o apoio necess´ario para cumprir essa etapa t˜ao importante e d´ıficil.

• Ao meu orientador Prof. Regivan pela confian¸ca, aprendizado e paciˆencia.

• A minha colega de mestrado Samara pela amizade e for¸ca nas horas que precisei.

• Ao Prof. Benjam´ın pela colabora¸c˜ao e contribui¸c˜ao.

• A D. Wilma e fam´ılia pelo acolhimento em sua casa.

• E `a todos que conheci no DIMAp que contribuiram para que esse tempo longe de casa fosse uma ´epoca de conquista e de amizades que ser˜ao para sempre carregadas.

Katiane Ribeiro Lopes

(12)

Introdu¸

ao

Na computa¸c˜ao cient´ıfica ´e necess´ario que os dados sejam o mais precisos e exatos poss´ıvel, por´em a imprecis˜ao dos dados de entrada desse tipo de computa¸c˜ao pode estar associada `as medidas obtidas por equipamentos que fornecem dados truncados ou arredondados, fazendo com que os c´alculos com esses dados produzam resultados imprecisos. Os erros mais comuns durante a computa¸c˜ao cient´ıfica s˜ao: erros de truncamentos, que surgem em dados infinitos e que muitas vezes s˜ao “truncados”, ou interrompidos; erros de arredondamento que s˜ao respons´aveis pela imprecis˜ao de c´alculos em seq¨uˆencias finitas de opera¸c˜oes aritm´eticas.

O controle desses erros pode ser monitorado por um meta-algoritmo, que geralmente ´e dispendioso. Com o objetivo de eliminar os meta-algoritmos, no final dos anos 50, Moore e Sunaga propuseram a Matem´atica Intervalar. Com isso, o intervalo [a,b], cont´em o n´umero a ser computado bem como o erro cometido por essa representa¸c˜ao que ser´a no m´aximo b−2 .a Como os resultados dos c´alculos ser˜ao sempre um intervalo [a,b], contendo a resposta ideal, ent˜ao se ter´a o controle dos erros durante o processo computacional.

A computa¸c˜ao cient´ıfica, do ponto de vista de implementa¸c˜ao j´a est´a bastante avan¸cada. Entretanto, quando se leva em considera¸c˜ao o processo de desenvolvimento de software para

(13)

esse tipo de sistemas em algum ponto do processo de especifica¸c˜ao 1, tem-se que pensar na

quest˜ao dos erros de aproxima¸c˜ao e como control´a-los durante as opera¸c˜oes do sistema. A matem´atica intervalar ´e uma sa´ıda para essa quest˜ao, j´a que permite um controle e an´alise de erros de maneira autom´atica. Por´em, as propriedades alg´ebricas dos intervalos n˜ao s˜ao as mesmas dos n´umeros reais, apesar dos n´umeros reais serem vistos como intervalos de-generados, e as propriedades alg´ebricas dos intervalos degenerados serem exatamente as dos n´umeros reais. Partindo disso, e pensando nas t´ecnicas de especifica¸c˜ao alg´ebrica, precisa-se de uma linguagem capaz de implementar uma no¸c˜ao auxiliar de equivalˆencia introduzida por Santiago [12] que “simule”as propriedades alg´ebricas dos n´umeros reais nos intervalos.

A linguagem de especifica¸c˜ao CASL, Common Algebraic Specification Language, [9] ´e uma linguagem de especifica¸c˜ao alg´ebrica para a descri¸c˜ao de requisitos funcionais e projetos modulares de software, que vem sendo desenvolvida pelo CoFI, The Common Framework Initiative[3] a partir do ano de 1996. O desenvolvimento de CASL se encontra em andamento e representa um esfor¸co conjunto de grandes expoentes da ´area de especifica¸c˜oes alg´ebricas no sentido de criar um padr˜ao para a ´area.

Essa disserta¸c˜ao introduz princ´ıpios da congruˆencia e da indicernibilidade para a igual-dade local [12] de maneira que a mesma possa ser descrita numa biblioteca CASL e assim possa-se escrever especifica¸c˜oes CASL utilizando intervalos de extremos racionais. Com isso pretense fornecer um ambiente munido da aritm´etica de Moore, para que se possa de-screver algebricamente sistemas que manipulem dados cont´ınuos, sendo poss´ıvel n˜ao s´o o controle e a an´alise dos erros de aproxima¸c˜ao, atrav´es da utiliza¸c˜ao de intervalos, como tamb´em a verifica¸c˜ao de propriedades do tipo de sistema aqui mencionado. A especifica¸c˜ao de intervalos apresentada no apˆendice A foi feita a partir das especifica¸c˜oes dos n´umeros

1

(14)

racionais proposta por Mossakowski em 2001 [4] e introduz a no¸c˜ao de igualdade local de-senvolvida no cap´ıtulo 4 e proposta por Santiago em [12, 14, 13] al´em dos princ´ıpios de congruˆencia e substitui¸c˜ao de iguais por iguais desenvolvidos no Cap´ıtulo 5.

Para ser auto-contido, esse documento introduz nos primeiros dois cap´ıtulos a matem´atica intervalar e a linguagem CASL. As contribui¸c˜oes dessa disserta¸c˜ao encontram-se a partir do Cap´ıtulo 4.

O cap´ıtulo 2 ´e portanto uma breve introdu¸c˜ao a aritm´etica de Moore e sua extens˜ao para a vers˜ao matricial. O cap´ıtulo 3 ´e uma tentativa de reescrita de ”Uma Introdu¸c˜ao a linguagem CASL”escrita por Mosses em [9], e visa introduzir o leitor na linguagem CASL, bem como tornar o texto auto-contido.

(15)

Matem´

atica Intervalar

Esse cap´ıtulo introduz a matem´atica intervalar, que ´e utilizada na computa¸c˜ao cient´ıfica como uma ferramenta para o tratamento de erros existentes em algumas computa¸c˜oes. Esta surgiu nos anos 60, como alternativa para os meta-algoritmos que eram usados para controle e an´alise de erros. Moore e Sunaga [7, 17] desenvolveram paralelamente uma aritm´etica para intervalos utilizando a estrutura dos n´umeros reais. Por´em, existem leis que s˜ao satisfeitas pelos n´umeros reais, que n˜ao s˜ao v´alidas para todos os intervalos. Esse cap´ıtulo foi baseado em [15, 5, 16].

2.1

Defini¸

oes B´

asicas

Defini¸c˜ao 2.1.1 (Intervalo de reais e I ).

Seja o conjunto dos n´umeros reais e x1 , x2 ∈ , tal quex1 ≤ x2. Ent˜ao, o conjunto

{x :x1 ≤x≤x2}´e umintervalo de extremos reaisou simplesmente umintervalo, e

ser´a denotado porX = [x1, x2]. Os elementos do conjunto dos intervalos ser˜ao denotados por

letras latinas mai´usculas, e denota-se por I o conjunto de todos os intervalos de reais, i.e., I = {[x1, x2]/x1, x2∈ , x1 ≤x2}.Os intervalos da forma [x, x] s˜ao chamados degenerados,

(16)

Exemplos 2.1.1.

[1,3],[2,2],[5,2], e[2,2] s˜ao alguns exemplos de intervalos. Sendo que [2,2] corre-sponde ao pr´oprio n´umero real 2.

Considerando cada intervalo da reta como um conjunto, a no¸c˜ao de igualdade entre dois intervalos´e dada pela no¸c˜ao de igualdade entre conjuntos; ou seja:

A = B⇔ ∀x∈A,∀x∈B,x∈A⇔x∈B1. Assim:

Defini¸c˜ao 2.1.2 (Igualdade entre Intervalos).

Sejam A = [a1, a2] e B = [b1, b2] dois intervalos em I . Diz-se que A = B se, e somente

se a1 =b1 ea2 =b2.

Logo, dois intervalos s˜ao considerados iguais se eles forem iguais enquanto conjuntos.

Defini¸c˜ao 2.1.3 (Opera¸c˜oes aritm´eticas em I ).

Sejam A, B I , dois intervalos reais. As opera¸c˜oes de soma, subtra¸c˜ao, multiplica¸c˜ao e divis˜ao em I s˜ao definidas por A B = {ab:aAbB} onde ∗ ∈ {+,,×, /}

´e uma das quatro opera¸c˜oes aritm´eticas. Para a opera¸c˜ao de divis˜ao, 0 / B. Se α ´e uma opera¸c˜ao un´aria e X ∈ I , ent˜ao αX ´e definida por αX = α(X) = {α(x)/x∈X} ⊆

[min{α(x)/x ∈X}, max{α(x)/x∈X}].

Defini¸c˜ao 2.1.4 (Soma Intervalar).

Sejam ent˜ao A, B I dois intervalos reais, com A = [a1, a2] e B = [b1, b2]. Ent˜ao A +

B = [(a1+b1),(a2+b2)].

1

(17)

Exemplos 2.1.2.

Sejam A = [5,10] e B = [3,6]. Tem-se:

A + B = [5,10] + [3,6] = [(5 + 3),(10 + 6)] = [8,16]

Teorema 2.1.1. (Propriedades da Soma) Santos [15]

Sejam A, B, C I intervalos de extremos racionais. Ent˜ao, valem as seguintes pro-priedades:

1. Fechamento: Se A, B ∈ I ent˜ao A + B∈ I ;

2. Associatividade: A + (B + C) = (A + B) + C;

3. Comutatividade: A + B = B + A;

4. Elemento Neutro: ∃! 0 = [0;0]∈ I tal que A + 0 = 0 + A = A.

Defini¸c˜ao 2.1.5 (Pseudo Inverso Aditivo). Santos [15]

Seja A ∈I um intervalo de reais, com A =[a1, a2]. Ent˜ao -A = [−a2,−a1].

Exemplos 2.1.3.

Seja A = [5,6]. Ent˜ao -A = [5,6] = [6,5].

Pode-se observar que o conjunto I n˜ao possui inverso aditivo, i.e., nem sempre ´e poss´ıvel achar um intervalo “-A”tal que A + (-A) = 0. Por exemplo, tomando A = [5,10], tem-se: A + (- A) = [5,10] + (-[5,10]) = [5,10] + [-10,-5] = [-5,5]= [0,0], mas 0[-5,5], como mostra o teorema abaixo.

(18)

Seja A um intervalo de extremos reais. Ent˜ao, 0(A -A).

Demonstra¸c˜ao: Dado A = [a1, a2], como A∈I , segue quea1 ≤a2. Mas A - A = [a1, a2]

- [a1, a2] = [a1, a2] + [−a2,−a1] = [a1−a2, a2−a1]. Comoa1 ≤a2, segue quea1−a2 ≤0 e

a2−a1 ≥0, ou seja 0 ∈ A - A.

Defini¸c˜ao 2.1.6 (Subtra¸c˜ao Intervalar).

Sejam A, B I dois intervalos reais, com A = [a1, a2] e B = [b1, b2]. Ent˜ao A - B = A

+ (-B) = [a1, a2] + [−b2,−b1] = [(a1−b2) , (a2−b1)].

Exemplos 2.1.4.

Sejam A = [4,5] e B = [6,7]. Ent˜ao,

A - B = [4,5][6,7] = [4,5] + ([6,7]) = [4,5] + [7,6] = [47,56] = [3,1]

Defini¸c˜ao 2.1.7 (Multiplica¸c˜ao Intervalar).

Sejam A, B ∈ I dois intervalos reais, com A = [a1, a2] e B = [b1, b2]. Ent˜ao, A · B =

[min {a1.b1, a1.b2, a2.b1, a2.b2}, max {a1.b1, a1.b2, a2.b1, a2.b2}].

Exemplos 2.1.5.

Sejam A = [−4,6] e B = [−5,7]. Ent˜ao,

A · B = [−4,6]·[−5,7] = [min{(−4).(−5),(−4).7,6.(−5),6.7}, max{(−4).(−5),(−4).7,6.(−5),6.7}] = [min{20,−28,−30,42}, max{20,28,30,42}] = [30,42].

(19)

Sejam A, B, C I intervalos de reais. Ent˜ao, valem as seguintes propriedades:

1. Fechamento: Se A, B ∈ I , ent˜ao A . B ∈I ;

2. Associatividade: A . (B . C) = (A . B) . C;

3. Comutatividade: A . B = B . A;

4. Elemento Neutro: ! 1 = [1;1] I tal que A.1 = 1.A =A

5. Sub-distributividade: A.(B + C) ⊆(A . B) + (A .C).

Defini¸c˜ao 2.1.8 (Pseudo Inverso Multiplicativo). Santos [15]

Seja A ∈I um intervalo real, com A = [a1, a2] e 0 ∈/ A.

Ent˜ao A−1

= 1A = a12,a11. Exemplos 2.1.6.

a) Seja A =[4,5]. Ent˜ao A−1

= 1A = [41,5] = 15,14

b) Seja A = [−5,−4]. Ent˜ao A−1 = 1

A = [−51,−4] =

−14,−15

Observa-se mais uma vez que o conjunto I n˜ao possui inverso multiplicativo, i.e., nem sempre ´e poss´ıvel achar A × (A−1) = 1 . Por exemplo, se A = [5,6], ent˜ao o inverso

multiplicativo ´e:

A . (A−1

) = [5,6] .([5,6]−1

) = [5,6] / [5,6] =56,65 = [1,1] = 1.

Mas 1 56,65, como mostra o teorema abaixo.

(20)

Seja A um intervalo, tal que0 / A. Ent˜ao, 1 A/A.

Demonstra¸c˜ao: Dado A = [a1, a2], como A ∈I segue que a1 ≤ a2. Mas A/A = [a1, a2]

/ [a1, a2] = [a1, a2] . [1/a2,1/a1] = [a1/a2, a2/a1]. Comoa1 ≤a2 segue quea1/a2 ≤1 ea2/a1

≥ 1, logo, 1∈ A/A.

Defini¸c˜ao 2.1.9 (Divis˜ao Intervalar).

Sejam A, B I dois intervalos reais, com A = [a1, a2] e B = [b1, b2] e 0 ∈/ B. Ent˜ao, BA

= A . B−1 = mina1

b2, a 1

b1, a 2

b2, a 2

b1

, maxa1

b2, a 1

b1, a 2

b2, a 2

b1

com 0/ [b1, b2].

Exemplos 2.1.7.

Sejam A = [6,7] e B =[8,9]. Ent˜ao,

A / B = [6,7]/[8,9] = [min{6/9,6/8,7/9,7/8}, max{6/9,6/8,7/9,7/8}] =69,78. Teorema 2.1.5.

Se A, B ∈I e A· B = 0, ent˜ao A = 0 ou B = 0.

Demonstra¸c˜ao: Sejam A = [a1, a2] e B = [b1, b2]. Como, por hip´otese, A .B = 0, segue que

A . B = [min{a1.b1,a1.b2,a2.b1,a2.b2}, max{a1.b1,a1.b2,a2.b1,a2.b2}] = [0,0]⇔min{a1.b1,a1.b2,

a2.b1,a2.b2} = 0 e max{a1.b1,a1.b2,a2.b1,a2.b2}= 0. Logo, pode-se concluir que A = [0,0] ou

b = [0,0].

Analisando os sinais dos extremos dos intervalos, pode-se implementar de maneira mais otimizada, as opera¸c˜oes de multiplica¸c˜ao e divis˜ao sobre os intervalos, veja as tabelas 2.1 e 2.2 respectivamente.

(21)

Dados os intervalos A = [a1, a2] e B = [b1, b2], tem-se:

Ordem Intervalos Multiplica¸c˜ao

1 a1 ≥0 e b1 ≥0 ⇒ A.B=[a1.b1, a2.b2]

2 a1≥0 eb1 <0≤b2 ⇒ A.B=[a2.b1, a2.b2]

3 a1 ≥0 e b1 <0 ⇒ A.B=[a2.b1, a1.b2]

4 a1 <0≤a2 eb1 ≥0 ⇒ A.B=[a1.b2, a2.b2]

5 a1 <0≤a2 eb1≤0≤b2 ⇒ A.B=[min{a1.b2, a2.b2},max{a1.b2, a2.b2}]

6 a1 <0≤a2 eb2<0 ⇒ A.B=[a2.b2, a1.b2]

7 a2 <0 e b1 ≥0 ⇒ A.B=[a1.b2, a2.b2]

8 a2 <0 eb1 <0≤b2 ⇒ A.B=[a1.b2, a1.b1]

9 a2 <0 e b2 <0 ⇒ A.B=[a2.b2, a1.b1]

Tabela 2.1: Opera¸c˜ao de multiplica¸c˜ao

Dados os intervalos A = [a1, a2] e B = [b1, b2], tem-se:

Ordem Intervalos Divis˜ao

1 a1 >0 eb1> 0 ⇒ A/B=[a1/b2, a2/b1]

2 a1 >0 e 0∈[b1, b2] ⇒ A/B= N˜ao definida

3 a1 >0 eb2< 0 ⇒ A/B=[a2/b2, a1/b1]

4 a1< 0< a2 eb1 >0 ⇒ A/B=[a1/b1, a2/b1]

5 a1 <0< a2 e 0∈[b1, b2] ⇒ A/B=N˜ao definida

6 a1< 0< a2 eb2 <0 ⇒ A/B=[a2/b2, a1/b2]

7 a2 <0 eb1> 0 ⇒ A/B=[a1/b1, a2/b2]

8 a2 <0 e 0∈[b1, b2] ⇒ A/B=[a1/b2, a1/b1]

9 a2 <0 eb2< 0 ⇒ A/B=[a2/b1, a1/b2]

(22)

Teorema 2.1.6. (Inclus˜ao monotˆonica) Santos [8]

Sejam A, B, C, D ∈ I intervalos de extremos reais, tais que A ⊆ C e B ⊆ D. Ent˜ao, valem as seguintes propriedades:

1. A + B ⊆C + D;

2. -A ⊆-C;

3. A - B C - D;

4. A . B C . D;

5. 1/A⊆ 1/C, sempre que 0∈/ A e 0 ∈/ C;

6. A/B ⊆C/D, sempre que 0 ∈/ B e 0∈/ D.

Teorema 2.1.7. (Propriedades da inclus˜ao) Santos [15]

Sejam A, B, C I intervalos reais. Ent˜ao, valem as seguintes propriedades:

1. A + B = A + C B = C;

2. B - A = C - A B = C;

3. A + B ⊆A + C ⇒ B ⊆C

4. A . [0,0] = [0,0] . A = [0,0];

5. α, β vale que (α.β) . A = α. (β .A);

6. α, β vale que (α+β) . A (α . A) + (β .A);

(23)

Defini¸c˜ao 2.1.10 (Intervalo Sim´etrico).

Um intervalo A ∈ I ´e um intervalo sim´etrico se - A = A. Isto ocorre quando os extremos s˜ao equidistantes em rela¸c˜ao a zero.

Exemplos 2.1.8.

[5,5],[0,0],[π, π]s˜ao exemplos de intervalos sim´etricos.

Teorema 2.1.8. Santos [15]

Todo intervalo sim´etrico ´e da forma [-a,a], com a0.

Corol´ario 2.1.1. Santos [15]

Se A∈I ´e um intervalo sim´etrico, ent˜ao A = |A|. [-1,1].

Teorema 2.1.9. (Propriedades dos Intervalos Sim´etricos) Santos [15]

Sejam A, X, YI intervalos de reais, com X e Y sim´etricos. Ent˜ao, valem as seguintes propriedades:

1. A + X = A - X;

2. A . X = |A|. X;

3. A . X = |A|. X . [-1,1];

4. A . (X ±Y) = (A . X) ±(A . Y).

A seguir, ser˜ao definidas as opera¸c˜oes de intersec¸c˜ao, uni˜ao e uni˜ao convexa de intervalos.

(24)

Sejam A = [a1,a2] e B = [b1,b2] dois intervalos. A intersec¸c˜ao dos intervalos A e B

´e dada pelo intervalo A B = [max{a1,b1},min{a2,b2}]. Caso max {a1,b1} > min {a2,b2}

ent˜ao A B = , que n˜ao ´e um intervalo.

Exemplos 2.1.9.

[3,6][4,9] = [max{3,4}, min{6,9}] = [4,6]; [4,9]∩[−2,12] = [max{4,−2}, min{9,12}] = [4,9]; [−2,1]∩[1,5] = [max{−2,1}, min{1,5}] = [1,1]; [−3,4]∩[3,8] = [max{−3,3}, min{4,8}] = [3,4] [2,3]∩[4,5] = ∅

Teorema 2.1.10. (Propriedades)

Sejam A, B, C, D I . Se AC e BD, ent˜ao AB CD. Ou seja, a intersec¸c˜ao entre intervalos ´e uma opera¸c˜ao monotˆonica.

Exemplos 2.1.10.

Sejam A = [4,6], B = [2,5], C =[3,9] e D = [2,7].

Assim, se ACeB D, ent˜ao, AB = [4,5], CD= [3,7] e [4,5][3,7].

Defini¸c˜ao 2.1.12 (Uni˜ao de dois Intervalos).

Sejam A = [a1;a2] e B = [b1;b2] dois intervalos tais que A ∩ B = ∅ . A uni˜ao dos

(25)

Exemplos 2.1.11.

[3,6][4,9] = [min{3,4}, max{6,9}] = [3,9];

[4,9]∪[−2,12] = [min{4,−2}, max{9,12}] = [−2,12]; [−2,1]∪[1,5] = [min{−2,1}, max{1,5}] = [−2,5]; [−3,2]∪[3,8] = [min{−3,3}, max{2,8}] = [−3,8]

Defini¸c˜ao 2.1.13 (Uni˜ao convexa de dois Intervalos).

Sejam A = [a1,a2] e B = [b1,b2] dois intervalos quaisquer. Auni˜ao convexados intervalos

A e B ´e dada pelo intervalo A ⋒ B= [min{a1, b1},max{a2, b2}].

Obs: Note que nessa uni˜ao, a intersec¸c˜ao entre os dois intervalos pode ser vazia, man-tendo o fato que a uni˜ao de dois intervalos ´e o intervalo que possui o menor diˆametro e que cont´em os intervalos operados.

Exemplos 2.1.12.

[3,6]⋒[4,9] = [min{3,4}, max{6,9}] = [3,9];

[4,9]⋒[−2,12] = [min{4,−2}, max{9,12}] = [−2,12];

[2,1]⋒[1,5] = [min{−2,1}, max{1,5}] = [−2,5];

[−3,2]⋒[3,8] = [min{−3,3}, max{2,8}] = [3,8]

Existem fun¸c˜oes que mapeiam intervalos em n´umeros reais, i.e. s˜ao fun¸c˜oes da forma f : I . A seguir algumas dessas fun¸c˜oes s˜ao introduzidas:

(26)

A amplitude de um intervalo A = [a1,a2] ´e definida por:

w(A) =a2−a1.

A amplitude serve como uma medida de qualidade do intervalo enquanto representa¸c˜ao dos n´umeros reais que ele cont´em, i.e. quanto maior a amplitude, pior ser´a a qualidade do intervalo.

Defini¸c˜ao 2.1.15 (Valor Absoluto).

O valor absoluto de um intervalo A = [a1,a2] ´e definido por:

|A| = max(|a1|,|a2|).

Defini¸c˜ao 2.1.16 (Ponto M´edio).

O ponto m´edio de um intervalo A = [a1,a2] ´e definido por:

m(A) = (a1+a2)/2,

Defini¸c˜ao 2.1.17 (Distˆancia entre intervalos).

A distˆancia entre dois intervalo A = [a1,a2] e B = [b1,b2] ´e dado pela fun¸c˜ao d: I( ) ×

I( ) :

d(A, B) =max(|a1−b1|,|a2−b2|).

(27)

2.2

Matrizes e vetores Intervalares

Defini¸c˜ao 2.2.1 (Matriz Intervalar).

Denota-se uma matriz intervalar por A = (Aij)m×n com ordemm(linhas) porn(colunas),

onde cada elemento (Aij) ´e um intervalo.

Assim, A =

[a, b] [c, d] [e, f] [g.h]

´e uma matriz intervalar com duas linhas e duas colunas.

Defini¸c˜ao 2.2.2 (Vetor Intervalar).

Supondo A = (Aij) uma matriz intervalar de ordem m× n, se m =1, ent˜ao a matriz A ´e chamada matriz linha ou vetor linha e, se n = 1, ent˜ao A ´e chamada matriz coluna ou vetor coluna. Por exemplo:

1. A = ([a,b] [c,d] [e,f]) ´e uma matriz ou vetor linha 1 ×3 .

2. A = ⎛ ⎜ ⎜ ⎝

[a, b] [c, d] [e, f]

⎞ ⎟ ⎟

⎠´e uma matriz ou vetor coluna 3 ×1 .

Considera-se, por conven¸c˜ao, um vetor intervalar como uma matriz coluna.

Defini¸c˜ao 2.2.3 (Igualdade entre matrizes intervalares).

Sejam as matrizes intervalares: A = (Aij)m×n e B = (Bij)r×s. Diz-se que A = B se, e

somente se, m = r, n = s e Aij = Bij, para todos os ´ındices 1 ≤i≤ n e 1≤j ≤ m.

Exemplos 2.2.1. As matrizes intervalares A=

[1,3] [0,1] [1, e] [3,3]

e B =

[√1,√9] [1,1]2

exp[0,1] [3,3]

(28)

Defini¸c˜ao 2.2.4 (Matriz intervalar nula).

Uma matriz intervalar A = (Aij)m×n ´e considerada nula se todos os seus elementos s˜ao

nulos, ou seja, se Aij = [0,0], i,j. Representa-se a matriz nula por 0.

Exemplos 2.2.2. A matriz intervalar A=

[0,0] [0,0] [0,0] [0,0]

´e nula de ordem 2 × 2.

Defini¸c˜ao 2.2.5 (Matriz Intervalar Identidade).

Uma matriz intervalar I = (Iij)m×n ´e considerada identidade, se todos os elementos da

diagonal principal s˜ao intervalos identidade e os demais elementos s˜ao intervalos nulos, ou seja, se Iij = [1,1] para i = j eIij = [0,0] para i= j.

Exemplos 2.2.3. A matriz intervalar I =

[1,1] [0,0] [0,0] [1,1]

´e identidade de ordem 2 ×2.

Apresenta-se a seguir, as principais opera¸c˜oes com matrizes intervalares, como a soma, a diferen¸ca, o produto por um intervalo, a multiplica¸c˜ao entre matrizes intervalar, a intersec¸c˜ao e a uni˜ao, al´em da rela¸c˜ao de inclus˜ao.

Defini¸c˜ao 2.2.6 (Soma de Matrizes Intervalares).

Sejam A = (Aij) e B = (Bij) duas matrizes intervalares de mesma ordem. A matriz soma das matrizes A e B, ´e definida como sendo a matriz S = A + B, com os elementosSij =Aij

+ Bij,∀i,j.

Exemplos 2.2.4. Dado as matrizes

A=

[2,3] [1,3] [2,2] [3,3]

e B =

[−3,3] [−1,3] [−2,1] [−2,−2]

tem-se: S = A + B =

[2,3] + [3,3] [1,3] + [1,3] [2,2] + [2,1] [3,3] + [2,2]

=

[1,6] [0,6] [0,3] [1,1]

(29)

Defini¸c˜ao 2.2.7 (Subtra¸c˜ao de Matrizes Intervalares).

Sejam A = (Aij) e B = (Bij) duas matrizes intervalares de mesma ordem. A diferen¸ca entre A e B, ´e definida por D = A - B, com os elementos Dij = Aij + (- Bij), ∀i,j.

Exemplos 2.2.5. Dado as matrizes

A=

[2,3] [1,3] [2,2] [3,3]

e B =

[−3,3] [−1,3] [2,1] [2,2]

tem-se: S = A - B =

[2,3]−[−3,3] [1,3]−[−1,3] [2,2]−[−2,1] [3,3]−[−2,−2]

=

[−1,6] [−2,4] [1,4] [5,5]

.

Defini¸c˜ao 2.2.8 (Produto de um Intervalo por uma Matriz).

Seja A = (Aij) uma matriz intervalar de ordem m × n e I um intervalo. O produto do

intervalo I pela matriz A ´e a matriz intervalar P = (Pij), onde cada elemento ´e dado porPij

= I . Aij ,ij.

Exemplos 2.2.6. Dado a matriz

A=

[2,3] [1,3] [2,2] [3,3]

e o intervalo I = [-1,2] tem-se:

P =I.A= [1,2].

[2,3] [1,3] [2,2] [3,3]

=

[1,2].[2,3] [1,2].[1,3] [1,2].[2,2] [1,2].[3,3]

=

[3,6] [3,6] [2,4] [3,6]

.

(30)

Sejam A = (Aij)m×pe B = (Bij)p×n. A multiplica¸c˜ao de A por B ´e uma matriz intervalar

M = (Mij)m×n= A . B, cujos os elementos s˜ao dados por (Mij) = Σ

p

k=1 Aik×Bkj.

Exemplos 2.2.7. Dado as matrizes

A=

[2,3] [1,3] [2,2] [3,3]

e B =

[3,3] [1,3] [2,1] [2,2]

tem-se: M = A . B =

[2,3].[3,3] + [1,3].[2,1] [2,3].[1,3] + [1,3].[2,2] [2,2].[3,3] + [3,3].[2,1] [2,2].[1,3] + [3,3].[2,2]

=

[9,9] + [6,3] [3,9] + [6,2] [−6,6] + [−6,3] [−2,6] + [−6,−6]

=

[15,12] [9,7] [12,9] [−8,0]

.

Defini¸c˜ao 2.2.10 (Intersec¸c˜ao de Matrizes Intervalares).

Sejam A = (Aij) e B = (Bij) duas matrizes intervalaresde mesma ordem. A intersec¸c˜ao

de A com B ´e a matriz intervalar Γ = A B, onde cada Γij = Aij ∩ Bij, ∀i,j. Caso n˜ao

exista intersec¸c˜ao entre dois elementos intervalares correspondentes, ou seja Aij Bij = para algum i,j, ent˜ao n˜ao existir´a a intersec¸c˜ao entre A e B. Dessa maneira, assim como a intersec¸c˜ao entre intervalos ´e parcial, ent˜ao a intersec¸c˜ao entre matrizes intervalares tamb´em ser´a parcial.

Exemplos 2.2.8. Dado as matrizes

A=

[1,3] [0,3] [1,2] [3,3]

e B=

[3,2] [4,6] [2,0] [2,2]

tem-se: Γ= A B =

[1,3]∩[−3,2] [0,3]∩[4,6] [1,2][2,0] [3,3][2,2]

=

[1,2] ∅

∅ ∅

=∅,

(31)

Defini¸c˜ao 2.2.11 (Uni˜ao de Matrizes Intervalares).

Sejam A = (Aij) e B = (Bij) duas matrizes intervalaresde mesma ordem. A uni˜ao de A com B ´e a matriz intervalar U = A ∪B, onde cadaUij = Aij ∪ Bij,∀i,j. Caso n˜ao exista uni˜ao entre dois elementos intervalares correspondentes, ou seja Aij ∪Bij = ∅, ent˜ao n˜ao existir´a a uni˜ao entre A e B. Assim, semelhante a intersec¸c˜ao intervalar, a uni˜ao de matrizes ´e tamb´em uma opera¸c˜ao parcial.

Exemplos 2.2.9. 1. Dado as matrizes

A=

[1,3] [0,3] [2,2] [1,2]

eB =

[3,2] [2,6] [1,2] [3,3]

tem-se: U =A∪B=

[1,3]∪[−3,2] [0,3]∪[2,6] [2,2][1,2] [1,2][3,3]

=

[−3,3] [0,6] [2,2] [1,3]

.

2. Dado as matrizes

A=

[1,3] [0,3] [2,0] [1,2]

e B =

[−1,0] [4,6] [1,2] [2,3]

tem-se: U =A∪B=

[1,3]∪[−1,0] [0,3]∪[2,6] [−2,0]∪[1,2] [−1,2]∪[2,3]

=

∅ [0,6]

∅ [−1,3]

= ,

onde ∅, como no caso anterior, indica parcialidade.

Defini¸c˜ao 2.2.12 (Inclus˜ao de Matrizes Intervalares).

Sejam A = (Aij) e B = (Bij) duas matrizes intervalares de mesma ordem. A matriz

(32)

Exemplos 2.2.10. Dado as matrizes

A=

[1,3] [4,6] [1,1] [6,0]

e B=

[1,4] [2,6] [2,2] [6,0]

tem-se que [1,3]⊆[1,4] , [4,6]⊆[2,6], [1,1]⊆[−2,2] e [−6,0]⊆[−6,0]. Logo, B ´e uma inclus˜ao para a matriz A , ou seja A B.

Teorema 2.2.1. (Propriedades das Matrizes Intervalares)

Sejam A, B e C, matrizes intervalaresde mesma ordem. Ent˜ao, s˜ao v´alidas as seguintes propriedades:

1. A + (B + C) = (A + B) + C Associatividade

2. A + 0 = 0 + A = A → Elemento neutro da adi¸c˜ao: matriz nula

3. A + B = B + A Comutatividade

4. A . I = I . A = A Elemento neutro da multiplica¸c˜ao: matriz identidade

5. (A + B) . C ⊆A.C + B.C → Sub-distributividade.

Demonstra¸c˜ao: Considerando as matrizes A = (Aij) e B = (Bij) e C =(Cij) trˆes matrizes intervalares da mesma ordem, tem-se:

1) A + (B + C) Aij + (Bij +Cij) =Aij+Xij. Como

Xij =Bij +Cij, ent˜aoAij+Xij =Aij+Bij+Cij. Logo, A + (B + C) = A + B + C.

⇐ (A + B) + C (Aij +Bij) +Cij Yij +Cij. ComoYij =Aij+Bij, Ent˜ao

(33)

Portanto, A + (B + C) = (A + B) + C, c.q.d.

2) A + 0 Aij + 0 = Aij. Logo, A + 0 = A.

⇐ 0 + A 0 + Aij = Aij. Logo, 0 + A = A. Portanto, A + 0 = 0 + A, c.q.d.

3) A + B Aij+Bij = Bij+Aij. Logo, A + B = B + A

⇐ B + A Bij +Aij = Aij +Bij. Logo, B + A = A + B. Portanto, A + B = B + A, c.q.d.

4) ⇒ A.I⇒pk=1Aik ×Ikj = Aij. Logo, A.I = A

⇐ I.A⇒pk=1Iik ×Akj = Aij. Logo, I.A = A.

Portanto, A.I = I.A = A, c.q.d.

5) ⇒ (A + B).C⇒(A + B).C = S . C, onde S = A+B e cada

Sij=Aij+Bij. S.C =

p

k=1Sik×

Ckj=Pij e considerando que A,B,C e S sejam da mesma ordem e

quadrada, ou seja, n´umero de linhas igual ao n´umero de colunas, ent˜ao P ter´a a mesma ordem de S e C.

⇐ A.C + B.C pk=1Aik×Ckj +

p

k=1Bik×Ckj = Xij + Yij.

(34)

Exemplos 2.2.11. Sejam as matrizes

A

[1,1] [0,1] [1,1] [1,1]

,B

[1,2] [3,4] [2,2] [6,4]

e C

[0,3] [1,4] [1,8] [3,15]

Calcular:

A.B

[1,2] + [0,2] [3,4] + [6,0] [−1,2] + [−2,2] [3,4] + [−6,6]

=

[1,4] [3,4] [−3,4] [−3,10]

B.C

[3,6] + [4,32] [4,8] + [9,60] [0,6] + [48,6] [2,8] + [90,12]

=

[7,38] [5,68] [48,12] [88,4]

(A.B).C

[3,12] + [24,32] [4,16] + [45,60] [9,12] + [24,80] [12,16] + [45,150]

=

[27,44] [49,76] [33,92] [57,166]

A.(B.C)

[7,38] + [48,12] [5,68] + [88,4] [7,38] + [48,48] [5,68] + [88,88]

=

[55,50] [83,76] [55,86] [83,156]

Logo, A.(B.C) = (A.B).C.

As pr´oximas defini¸c˜oes, referem-se a algumas transferˆencias de dados entre matrizes reais e matrizes intervalares. As matrizes reais s˜ao transformadas naturalmente em matrizes intervalares pontuais, bastando para isto considerar cada elemento da matriz real como sendo um intervalo pontual (degenerado) da matriz intervalar correspondente. Por outro lado, a transferˆencia de dados de matrizes intervalares para matrizes reais pode ser realizada de diferentes formas, como pode ser visto a seguir.

Defini¸c˜ao 2.2.13 (Matriz diˆametro).

Seja A = (Aij) uma matriz intervalar. A matriz diˆametro de A, ´e a matriz onde

(35)

Exemplos 2.2.12.

diam

[1,2] [0,2] [2,3] [2,1]

= 1 2 5 3 .

Defini¸c˜ao 2.2.14 (Matriz ponto m´edio).

Seja A = (Aij) uma matriz intervalar. A matriz ponto m´edio de A ´e a matriz onde cada elemento corresponde ao ponto m´edio do respectivo intervalo da matriz intervalar, ou seja med(A) = (med(Aij)).

Exemplos 2.2.13.

med

[1,3] [0,2] [1,3] [2,4]

= 2 1 1 3 .

Defini¸c˜ao 2.2.15 (Matriz m´odulo).

Seja A = (Aij) uma matriz intervalar. A matriz m´odulo de A ´e a matriz onde cada elemento corresponde ao m´odulo do respectivo intervalo da matriz intervalar, ou seja |A|= (|Aij|).

Exemplos 2.2.14.

[1,3] [0,4] [2,6] [−1,2]

= 3 4 6 2 .

Defini¸c˜ao 2.2.16 (´Infimo da matriz intervalar).

Seja A = (Aij) uma matriz intervalar. O´ınfimo de A ´e a matriz cujos elementos s˜ao os

extremos inferiores dos intervalos correspondentes dessa matriz, ou seja inf(A) = (inf(Aij)).

Exemplos 2.2.15.

inf

[1,3] [0,5] [2,2] [1,1]

=

1 0

−2 1

(36)

Defini¸c˜ao 2.2.17 (Supremo da matriz intervalar).

Seja A = (Aij) uma matriz intervalar. O supremo de A, ´e a matriz cujos elementos s˜ao os extremos superiores dos intervalos correspondentes dessa matriz, ou seja sup(A) = (sup(Aij)).

Exemplos 2.2.16.

sup

[1,3] [0,5] [2,2] [1,1]

= 3 5 2 1 .

Defini¸c˜ao 2.2.18 (Matriz Distˆancia).

Sejam A e B duas matrizes intervalaresde mesma ordem. A matriz distˆancia D entre A e B ´e a matriz real cujos elementos correspondem a distˆancia entre os respectivos intervalos das matrizes A e B, ou seja D(A,B) = (d(Aij, Bij)),i,j.

Exemplos 2.2.17. Sejam

A=

[2,2] [0,1] [2,2] [1,1]

e B =

[2,3] [2,3] [3,3] [5,3]

,

ent˜ao D(A,B)

d([2,2],[2,3]) d([0,1],[2,3])

d([2,2],[3,3]) d([1,1],[5,3]) = 4 2 1 4 .

(37)

2.3

Rela¸

oes de Ordem sobre Intervalos

Al´em das opera¸c˜oes intervalares mostradas, destacam-se, ainda, as seguintes rela¸c˜oes de ordem sobre o conjunto dos intervalos:

Defini¸c˜ao 2.3.1 (Rela¸c˜ao de pr´e-ordem).

Sejam X = [a,b] e Y = [c,d] dois intervalos.

X<Y se, e somente se b< c (2.1)

Em outras palavras X < Y se todo o conte´udo de X estiver estritamente a esquerda de Y.

Defini¸c˜ao 2.3.2 (Rela¸c˜ao de ordem de inclus˜ao).

Sejam X = [a,b] e Y = [c,d] dois intervalos de reais.

X⊆Y se, e somente se, c≤ a≤b ≤d (2.2) Defini¸c˜ao 2.3.3 (Ordem de Kulisch-Miranker).

Sejam X = [a,b] e Y = [c,d] dois intervalos de reais.

X≤Y se, e somente se, a≤ c e b ≤d (2.3) Defini¸c˜ao 2.3.4 (Ordem de Informa¸c˜ao).

Sejam X = [a,b] e Y = [c,d] dois intervalos de reais.

XY se, e somente se, ac d b (2.4)

(38)

Defini¸c˜ao 2.3.5 (Rela¸c˜ao de Aproxima¸c˜ao).

Sejam X = [a,b] e Y = [c,d] dois intervalos de reais.

X≪Y se, e somente se, a<c ≤d <b (2.5)

(lˆe-se [a,b] aproxima [c,d]).

2.4

Considera¸

oes Finais

Essas duas ´ultimas rela¸c˜oes sobre os intervalos foram introduzidas por Scott e utilizadas por Aci´oly em [5]. Elas formalizam a no¸c˜ao de “um intervalo enquanto informa¸c˜ao ou aproxima¸c˜ao de um outro intervalo ou de um n´umero real”. No cap´ıtulo 4 ser´a apresentada a proposta de Santiago [13] para uma rela¸c˜ao de equivalˆencia que se baseia nessa formaliza¸c˜ao. Ela ´e mais fraca que a no¸c˜ao usual de equivalˆencia (i.e. uma rela¸c˜ao que ´e reflexiva, sim´etrica e transitiva). Naquele cap´ıtulo ser´a proposta a vers˜ao booleana para a igualdade de Santiago, a qual[3] ser´a constru´ıda a partir da igualdade simples de Scott — uma das no¸c˜oes primitivas de identidade da linguagem CASL. Essa rela¸c˜ao permitir´a que as propriedades alg´ebricas de corpo, tornem-se operacionais em intervalos, fazendo com que do ponto de vista alg´ebrico se possa raciocinar com intervalos como se fossem n´umeros reais. Assim ser´a poss´ıvel enxergar um intervalo como uma esp´ecie de n´umero real difuso que carrega uma estimativa de erro.

Note que propriedades alg´ebricas como a distributividade da multiplica¸c˜ao pela soma

A.(B+C) =A.B+A.C,

(39)

atingir o prop´osito deste trabalho, ou seja tornar poss´ıvel a defini¸c˜ao equacional de sistemas cont´ınuos, atrav´es de intervalos e raciocinar equacionalmente2sobre eles. O pr´oximo cap´ıtulo

apresentar´a alguns detalhes da linguagem de especifica¸c˜ao CASL, que ser´a utilizada para descrever a biblioteca intervalar munida da igualdade local proposta por Santiago.

2

(40)

CASL

3.1

Introdu¸

ao

A abordagem alg´ebrica para especifica¸c˜ao desoftware originou-se em meados dos anos 1970. Desde ent˜ao, d´uzias de linguagens de especifica¸c˜ao alg´ebrica tem sido desenvolvidas - todas elas suportam a id´eia b´asica do uso de axiomas para especificar ´algebras1 mas diferem na

escolha do projeto a respeito da sintaxe e semˆantica. A falta de uma estrutura comum para esse tipo especifica¸c˜oes i.e., um padr˜ao para essa abordagem tem desencorajado, de certa forma, a aceita¸c˜ao do m´etodo alg´ebrico por parte da ind´ustria, impedindo a sua difus˜ao, e limitando a aplicabilidade das respectivas ferramentas.

O grupo COFI: “Common Framework Initiative” para especifica¸c˜oes e desenvolvimento alg´ebrico, re´une grandes expoentes da ´area de especifica¸c˜oes alg´ebricas no sentido de criar esse padr˜ao para a ´area. A vis˜ao do COFI, como o pr´oprio nome diz, ´e fornecer essa estru-tura comum2 atrav´es de um esfor¸co colaborativo para especifica¸c˜ao alg´ebrica e

desenvolvi-mento, que seja atrativo tanto para pesquisadores quanto para uso industrial. Dessa forma, ele prop˜oe uma linguagem de especifica¸c˜ao uniforme, cuja sintaxe seja de uso amig´avel e

1

em outras palavras um software ´e visto como uma ´algebra. 2

A Common Framework.

(41)

semˆantica clara. Al´em disso, essa estrutura de especifica¸c˜ao pretende resumir frameworks anteriores, agregando o que eles tenham de positivo. Por fim, prop˜oe-se que o ambiente seja livre, mas protegido.

O escopo do COFI abrange:

• a especifica¸c˜ao de requisitos funcionais;

• o desenvolvimento formal e verifica¸c˜ao de software;

• a rela¸c˜ao de especifica¸c˜oes para requisitos informais e implementa¸c˜ao de c´odigo;

• prototipagem e provas autom´aticas de teorema;

• bibliotecas, re-uso e evolu¸c˜ao;

• ferramentas de interoperabilidade.

A linguagem de especifica¸c˜ao desenvolvida pelo COFI ´e chamada CASL:Common Alge-braic Specification Language. As suas principais caracter´ısticas s˜ao:

• uma sele¸c˜ao cr´ıtica de construtores conhecidos;

• expressividade, simplicidade e praticidade;

• orienta¸c˜ao para especifica¸c˜ao de requisitos, e projeto, de pacotes de software conven-cional;

• restri¸c˜oes para sub-linguagens;

(42)

O projeto CASL come¸cou em setembro de 1995. Uma vers˜ao inicial foi proposta em maio 1997 e experimentalmente aprovada por IFIP WG1.3. Com exce¸c˜ao de poucos detalhes, o projeto foi finalizado em abril de 1998, com um “draft” completo da linguagem incluindo a sintaxe concreta. Por fim a vers˜ao CASL 1.0 foi liberada em outubro de 1998.

Esse cap´ıtulo foi fortemente baseado no artigo [9] e seu principal objetivo ´e tornar a disserta¸c˜ao auto-contida e servir de referencia inicial para a linguagem CASL. A autora fez algumas altera¸c˜oes no texto original incluindo alguns diagramas e acrescentando algumas interpreta¸c˜oes do texto original.

3.2

CASL

A linguagem CASL ´e dividida em 4 partes independentes (ortogonais) e que podem ser entendidas e usadas separadamente, cada parte contempla um aspecto do processo de es-pecifica¸c˜ao como eses-pecifica¸c˜ao em m´odulos b´asicos, reusabilidade, descri¸c˜ao das unidades que ser˜ao implementadas separadamente e as suas liga¸c˜oes, agrupamento de especifica¸c˜oes em bibliotecas, etc.

• Especifica¸c˜oes B´asicas: s˜ao as unidades b´asicas (o ponto partida) da especifica¸c˜ao. Nelas est˜ao contidas as declara¸c˜oes, defini¸c˜oes e os axiomas.

(43)

• Especifica¸c˜oes Arquiteturais: descrevem as unidades que ser˜ao implementadas sep-aradamente, indicando como elas podem serligadaspara dar o resultado desejado. S˜ao compostas de: implementa¸c˜oes inteiras e composi¸c˜oes.

• Especifica¸c˜oes de Bibliotecas: s˜ao formadas pelo agrupamento de especifica¸c˜oes es-truturadas, vis˜oes, especifica¸c˜oes arquiteturais e especifica¸c˜oes de unidades. Caracterizam-se por bibliotecas locais ou distribu´ıdas.

Como as partes acima s˜ao ortogonais, i.e independentes, pode-se restringir qualquer uma das partes afim de se obter sub-linguagens. Um exemplo de defini¸c˜ao dessas sub-linguagens ´e feito pelo grupo de sistemas reativos (veja [2]).

Al´em disso, o projeto de CASL integra v´arios aspectos diferentes; a saber:

• aspectos pragm´aticos: metodologia, ferramentas e est´etica;

• conceitos semˆanticos: formal (institui¸c˜ao e ambiente), informal (expans˜oes e escopo);

• constructos da linguagem: sintaxe abstrata (estrutura e anota¸c˜oes); sintaxe concreta (formato de entrada e formato display).

No que segue ser´a descrito cada componente ortogonal da linguagem com os respectivos aspectos

3.3

Especifica¸

oes B´

asicas

(44)

No que segue considera-se v´arios aspectos pragm´aticos que afetam o projeto CASL, com rela¸c˜ao as especifica¸c˜oes b´asicas. Em seguida a se¸c˜ao 3.3.2 apresenta os conceitos principais em que se baseia a semˆantica dessas especifica¸c˜oes b´asicas. Finalmente, a subse¸c˜ao 3.3.3 fornece exemplos que ilustram os constructos da linguagem CASL para que o leitor tenha id´eia de como us´a-los nas especifica¸c˜oes b´asicas.

3.3.1

Aspectos Pragm´

aticos

Fun¸c˜oes Totais e Parciais: CASL suporta especifica¸c˜oes parciais e totais. A parcialidade ´e uma particularidade, e uma maneira simples e natural para tratar erros (tais como divis˜oes por zero, etc). A propaga¸c˜ao desses erros torna-se impl´ıcita, de maneira que sempre que o argumento de uma opera¸c˜ao estiver indefinido ent˜ao o resultado tamb´em ser´a indefinido. CASL possui as no¸c˜oes de igualdade forte e existencial que relacionam a parcialidade com o conceito de identidade3

e que ser´a ´util para implementar a igualdade local de Santiago descrita nos cap´ıtulos 4 e 5. CASL tamb´em inclui a no¸c˜ao de supersorts e subsorts, que permitem a especifica¸c˜ao do tratamento de exce¸c˜ao quando for relevante. Totalidade ´e uma importante propriedade, e CASL permite que ela seja declarada juntamente com os tipos de fun¸c˜oes, em vez de deix´a-la para os axiomas. O dom´ınio de uma fun¸c˜ao parcial f: A ? B, pode ser explicitado pela introdu¸c˜ao do dom´ınio de f como um subsort B de A, “B < A”, e declarando que f ´e total em B 4.

Na presen¸ca da parcialidade, equa¸c˜oes podem exigir ou n˜ao definibilidade, e.g. a equa¸c˜ao 3

Isso ser´a melhor descrito no cap´ıtulo 4. 4

(45)

x+(y+z) = (x+y)+z que exprime a associatividade da soma nos naturais exige que os termos x+(y+z) e (x+y)+z estejam definidos para todo x,y e z, enquanto que x(yz)(xy)z n˜ao exigem a definibilidade dos termos para todo x,y e z. Dessa forma, CASL assume dois sentidos para a igualdade e introduz dois tipos de rela¸c˜oes de igualdade; a saber: as equa¸c˜oes “existenciais” que exigem a definibilidade (vide. o primeiro exemplo), e as equa¸c˜oes ditas “fortes”que n˜ao exigem a definibilidade (vide o segundo exemplo)5. Em

geral, ´e apropriado utilizar equa¸c˜oes existenciais em express˜oes que envolvam condi¸c˜ao de existˆencia dos termos, j´a que n˜ao se pode concluir propriedades a partir da indefini¸c˜ao; e.g. n˜ao tem sentido dizer que 1/0 tenha qualquer propriedade. Por outro lado equa¸c˜oes fortes s˜ao adequadas em defini¸c˜oes indutivas de fun¸c˜oes. Dessa forma CASL permite ambos os tipos de equa¸c˜oes.

Na verdade, como ser´a visto no cap´ıtulo 4, existe uma rela¸c˜ao impl´ıcita entre as no¸c˜oes de identidade e definibilidade. Portantoasser¸c˜oes de definibilidade podem, tamb´em, ser expressas diretamente pois CASL permite a declara¸c˜ao expl´ıcita da definibilidade de termos atrav´es da express˜ao “def T”, onde T ´e um termo. De fato a definibilidade de um termo pode ser reescrita em termos da igualdade existencial atrav´es da seguinte equivalˆencia: x=x

↔ def x, demonstrando a rela¸c˜ao impl´ıcita descrita anteriormente. A igualdade existencial ´e equivalente `a conjun¸c˜ao da igualdade forte com as declara¸c˜oes de definibilidade de seus termos; a saber: x = e =y⇔ x = y ∧ def x ∧ def y, j´a a igualdade forte ´e equivalente `a conjun¸c˜ao de dois condicionais envolvendo somente a igualdade existencial: x = y ↔[def x

→ x = e = y] ∧[def y → x = e= y], ou equivalentemente x = y↔ [def x∨def y → x = e = y].

5

(46)

L´ogica e Predicados: CASL ´e baseada na l´ogica de primeira ordem bi-valorada cl´assica6,

com a interpreta¸c˜ao usual dos conectivos. Ela suporta predicados declarados pelo usu´ario, o que produz algumas vantagens sobre as fun¸c˜oes totais booleanas que eram usadas na maioria das linguagens anteriores. Quando um argumento de um predicado ´e indefinido, a aplica¸c˜ao do predicado n˜ao ´e v´alida. CASL fornece os quantificadores universal e existencial padr˜oes, al´em dos conectivos l´ogicos. A motiva¸c˜ao para isto ´e a expressividade: restri¸c˜oes `a equa¸c˜oes condicionais `as vezes requerem que especifica¸c˜oes completas sejam realizadas. Por exemplo: ´e um exerc´ıcio direto especificar quando uma string ´e uma permuta¸c˜ao de outra usando quan-tificadores, a nega¸c˜ao fornece a propriedade complementar, mas ´e completamente desajeitada para ser especificada utilizando equa¸c˜oes condicionais (positivas).

Classes de Modelos: Muitas das estruturas de especifica¸c˜ao alg´ebrica anteriores per-mitiam somente um tipo de classe de modelos associada `as especifica¸c˜oes. O “default”em CASL ´e tomar todos os modelos de uma especifica¸c˜ao, o que tamb´em ´e chamado semˆantica livre (loose semantics); mas ´e tamb´em poss´ıvel especificar a restri¸c˜ao desses modelos para a classe dos modelos gerados, i.e. somente valores express´ıveis s˜ao inclu´ıdos, e as propriedade podem ser provadas por indu¸c˜ao, ou ainda para a classe dos modelos iniciais (livremente gerados), certamente os modelos iniciais podem n˜ao existir quando a disjun¸c˜ao, a nega¸c˜ao, etc. s˜ao usadas.

Sobrecarga: Em uma especifica¸c˜ao CASL o mesmo s´ımbolo pode ser declarado com v´arios perfis, i.e. com a lista de argumentos e sorts resultantes. Por exemplo, ‘+’ pode ser declarado como uma opera¸c˜ao sobre inteiros, reais, e strings. Quando um s´ımbolo de sobrecarga ´e usado, o perfil desejado ´e determinado pelo contexto. A remo¸c˜ao de ambiguidade

pode ser usada de maneira expl´ıcita quando necess´ario, pela especifica¸c˜ao do perfil, ou do 6

(47)

(2,2) −→ 4 ⏐ ⏐ ⏐ × −→+ inj ⏐ ⏐ ⏐ ⏐ inj × −→+ ⏐ ⏐ ⏐ (2,2) −→ 4

Figura 3.1: Diagrama da Sobrecarga

sort resultante em uma aplica¸c˜ao.

Subsorts: ´E apropriado declarar um sort como um subsort de outro. Por exemplo, tanto os inteiros positivos quanto os inteiros ´ımpares positivos s˜ao melhores descritos como subsorts do sort dos n´umeros naturais, no qual ´e ele pr´oprio um subsort dos inteiros. Em contraste com a maioria das abordagens anteriores, CASL interpreta subsorts como mergulho entre “carriers” e n˜ao necessariamente como a inclus˜ao. Isto permite, por exemplo, que valores de modelos do tipo inteiro sejam representados diferentemente dos valores do tipo real. CASL ainda permite modelos onde subsorts s˜ao subconjuntos.

As imers˜oes dos subsort comutam com as fun¸c˜oes de sobrecarga (veja figura 3.1), por isso os valores s˜ao independentes de qualquer perfil usado, ou seja: “2+2=4”, indiferentemente se a opera¸c˜ao ‘+’ ´e aquela declarada para os n´umeros naturais ou para os n´umeros inteiros. Ou seja o diagrama 3.1 comuta.

(48)

s˜ao permitidas em CASL.

Construtores e Seletores de Tipos de Dados: Especifica¸c˜oes de ‘tipos de da-dos’ com opera¸c˜oes de construtores e (possivelmente tamb´em) seletores s˜ao frequentemente necess´arias: elas correspondem `a uni˜ao disjunta de tipos registro e tipos enumerados nas linguagens de programa¸c˜ao. CASL fornece constructos especiais para a declara¸c˜ao dos tipos de dados, afim de abreviar as declara¸c˜oes tediosas e axiomas de seletores e construtores. Tipo de dados podem ser “loose”, “generated”ou “free”.

3.3.2

Conceitos Semˆ

anticos

Como ´e de se esperar, CASL por ser uma linguagem que descreve teorias de 1a ordem possui

uma semˆantica associada. Os conceitos semˆanticos essenciais para especifica¸c˜oes b´asicas s˜ao bem conhecidos: assinaturas (declara¸c˜ao de s´ımbolos), modelos (interpreta¸c˜ao dos s´ımbolos), e senten¸cas (declara¸c˜ao das propriedades do sistema), al´em de uma rela¸c˜ao de satisfa¸c˜ao entre modelos e conjuntos de senten¸cas. Definindo isto, juntamente com algumas estruturas categ´oricas, tal que a tradu¸c˜ao dos s´ımbolos preservem a rela¸c˜ao de satisfa¸c˜ao, obt´em-se o que se chama por institui¸c˜ao para especifica¸c˜oes b´asicas. (c.f. figura 3.5).

(49)

× −−−→+

Inj

⏐ ⏐

Inj

⏐ ⏐

× −−−→+

Figura 3.2: Diagrama da Sobrecarga

Assinaturas: Uma assinatura = (S,TF,PF,P,) para uma especifica¸c˜ao CASL con-siste de um conjunto de sorts S; conjuntos disjuntos TF e PF de s´ımbolos de opera¸c˜oes totais e parciais respectivamente (para cada perfil de argumento e sort resultante); um conjunto de s´ımbolos de predicados P (para cada perfil de argumento) e uma ordem parcial ≤ sobre S que expressar´a quando um sort ser´a subsort de outro, indicando a existˆencia das imers˜oes entre os sorts da assinatura. O mesmo s´ımbolo pode ser sobrecarregado com mais de um perfil e n˜ao h´a condi¸c˜oes na rela¸c˜ao entre sobrecarga e subsorts. S˜ao permitidas sobrecarga “ad-hoc”e “sobrecarga de subsort”.

Modelos: Um modelo MMod() fornece um conjunto (carrier) n˜ao vazio para cada sort em S, uma fun¸c˜ao parcial para cada s´ımbolo de opera¸c˜ao em PF TF (para cada um dos perfis), uma rela¸c˜ao para cada s´ımbolo de predicado em P (para cada um dos perfis), e uma imers˜ao para cada par de sort relacionados por “≤”. A interpreta¸c˜ao de um s´ımbolo de opera¸c˜ao em TF tem que ser uma fun¸c˜ao total. Al´em disso, as imers˜oes e as sobrecargas tˆem que ser compat´ıveis: ou seja, as imers˜oes devem comutar com as opera¸c˜oes de sobrecarga (c.f. exemplo da figura 3.2). A classe de todos os modelos de uma assinatura ´e dada por Mod() — veja a figura 3.3.

(50)

Sen(Σ) −−−→ Sen(Σ2) Sen ⏐ ⏐ Sen ⏐ ⏐ Σ −−−→τ Σ2

M od ⏐ ⏐ M od ⏐ ⏐

M od(Σ) ←−−− M od(Σ2)

Figura 3.3: Assinatura Senten¸cas e Classe de Modelos Σ −−−→τ Σ2

⏐ ⏐ ⏐ ⏐

Sen(Σ) −−−→ Sen(Σ2)

Figura 3.4: Assinatura e Conjunto de Senten¸cas

qualificados7

. Os termos nas f´ormulas atˆomicas s˜ao formados pela aplica¸c˜ao de opera¸c˜oes completamente qualificadas8, vari´aveis, termos explicitamente tipados (interpretados como

imers˜oes de subsorts) ou “casts”(interpretados como proje¸c˜oes sobre subsorts). O conjunto de todas as senten¸cas de uma especifica¸c˜ao b´asica ´e denotado por Sen(). Veja figura 3.4.

Satisfa¸c˜ao: Denotada por M |= Φ, a satisfa¸c˜ao de uma senten¸ca de primeira ordem Φ em um modelo M ´e como o usual; i.e considerando os quantificadores e conectivos l´ogicos, ela envolve a validade de f´ormulas abertas, e os valores de termos, relativo `as atribui¸c˜oes dos valores `as vari´aveis. O valor do termo pode ser indefinido quando ele envolver a aplica¸c˜ao de um s´ımbolo de opera¸c˜ao parcial (ou um cast). Quando o valor de qualquer termo de argumento ´e indefinido, a aplica¸c˜ao de um predicado sobre esse termo nunca ´e v´alido, e a aplica¸c˜ao de uma opera¸c˜ao sobre esse termo ´e sempre indefinida (como usual em ´algebra parcial). A definibilidade de termos tamb´em afeta a validade de f´ormulas atˆomicas: uma

7

i.e. s´ımbolos de predicados da formaPw ondew∈S∗. 8

(51)

Σ −→M od M od(Σ) |=Σ SenΣ

φ ⏐M od(φ) ⏐⏐Sen(φ) Σ′ M od

−→ M od(Σ′)

|=Σ′ SenΣ′ Figura 3.5: Diagrama de Institui¸c˜ao

equa¸c˜ao existencial ´e v´alida quando ambos termos s˜ao definidos e iguais, j´a no caso de uma equa¸c˜ao forte, ela ser´a v´alida quando ambos os termos forem definidas e iguais ou simplesmente estiverem indefinidos9.

Restri¸c˜ao de Gera¸c˜ao de Sort: (S’,F’)(S,F), onde F = TF PF: Uma restri¸c˜ao de gera¸c˜ao de sort ´e tratada como um tipo adicional de senten¸ca. Ela ´e satisfeita em um modelo quando os conjuntos que interpretam os sorts em S’ s˜ao gerados por fun¸c˜oes em F’ (possivelmente a partir de sorts em S \S’ ).

Institu¸c˜ao: A institu¸c˜ao para especifica¸c˜oes b´asicas em CASL ´e dada equipando-se a assinatura com morfismos, e os modelos com homomorfismos. Um morfismo de assinaturaσ

de em′

preserva a sobrecarga, os mergulhos e a totalidade dos s´ımbolos das opera¸c˜oes.

Um homomorfismoh:M1 →M2; ondeM1, M2 ∈Mod(

)preserva os valores das opera¸c˜oes (incluindo a definibilidade) e a validade dos predicados. Um morfismo de assinatura σ de

em ′

determina uma tradu¸c˜ao de senten¸cas de Sen() para Sen(′

), e um funtor redutor Mod(σ) :Mod(′

)Mod(). As tradu¸c˜oes preservam a satisfa¸c˜ao:

M′

|=σ(Φ) sss Mod(σ)(M′

)|= Φ (3.1)

como visto na figura 3.5.

Fun¸c˜oes Semˆanticas: Enquanto que as aplica¸c˜oes de predicados e opera¸c˜oes nas f´ormulas 9

(52)

atˆomicas e nos termos dainstitui¸c˜ao CASL s˜ao completamente qualificadas pelo seus perfis, as especifica¸c˜oes b´asicas na linguagem CASL permitem que os perfis sejam omitidos desde que eles estejam evidentes no contexto. Em geral, pode-se ter muitos caminhos, e possivel-mente nenhum, para expandir uma f´ormula atˆomica da linguagem CASL (pela inser¸c˜ao de perfis) para se obter uma f´ormula atˆomica bem tipada e completamente qualificada para constru¸c˜ao de uma senten¸ca na institui¸c˜ao subjacente10. A f´ormula atˆomica ´e considerada

bem formada quando ela se expande para uma ´unica f´ormula na institui¸c˜ao (a menos da co-mutatividade das imers˜oes com a sobrecarga das opera¸c˜oes); os axiomas de uma especifica¸c˜ao b´asica bem formada determinam um conjunto de senten¸cas da institui¸c˜ao CASL.

De fato a institui¸c˜ao CASL com subsorts descrita acima pode ser reduzida para uma institui¸c˜ao CASL heterogˆenea ordin´aria, pela substitui¸c˜ao da pr´e-ordem “” por um mer-gulho expl´ıcito; i.e. = (S,TF,PF,P,) reduz-se para ′

= (S,TF Emb,PF Proj,P Memb) ondeEmb ={embs,s′|s≤s

}´e um conjunto de s´ımbolos de opera¸c˜oes totais que rep-resentar˜ao megulhos de subsorts, e os conjuntos Proj (de proje¸c˜oes sobre subsorts) e Memb (predicados de pertinˆencia para subsort) s˜ao definidos similarmente.

Dessa forma, a semˆantica de uma especifica¸c˜ao b´asica bem formada em CASL ´e dada por uma assinatura junto com a classe daqueles modelos M Mod() que satisfazem todas as senten¸cas determinadas pela especifica¸c˜ao; ou seja o par , M od().

10

Ou seja, o que se quer e transportar senten¸cas ϕ da linguagem CASL para senten¸cas Φ∈Sen() na

(53)

3.3.3

Constructos da Linguagem

Esta subse¸c˜ao fornece exemplos que ilustram os constructos da linguagem CASL para o uso em especifica¸c˜oes b´asicas, s˜ao eles : declara¸c˜oes e defini¸c˜oes (tipos, opera¸c˜oes, pred-icados e tipo de dados), restri¸c˜ao de gera¸c˜ao de sorts e axiomas (envolvendo declara¸c˜ao, quantifica¸c˜ao, conectivos, f´ormulas atˆomicas e termos).

Note que CASL permite que declara¸c˜oes sejam disseminadas com defini¸c˜oes e axiomas. A visibilidade ´e linear, i.e s´ımbolos tem que ser declarados antes que sejam usados (exceto dentro da declara¸c˜oes de tipo de dados, onde n˜ao h´a visibilidade linear para que sejam permitidos tipos de dados mutuamente recursivos).

Tipos: V´arios sorts podem ser declarados de uma vez, possivelmente como subsorts de algum outro sort:

sort Elem

sorts Zero,Pos <Nat

Os valores de um subsort podem tamb´em ser definidos atrav´es de uma f´ormula, por exemplo:

sort Odd ={n :Nat • odd(n)}

Isto corresponde a declarar Odd < Nat e declarar que o valor n em Nat ´e a imers˜ao de alguns valores de Odd se e somente se a f´ormula odd (n) for v´alida.

(54)

ops zero:Zero;

suc :Nat Pos; pre :Nat ?Pos;

+ :Nat×Nat Nat,

assoc,comm,unit 0;

onde assoc, comm e unit0 s˜ao atributos indicando que a opera¸c˜ao ´e associativa, comu-tativa e possui elemento neutro “0”. Note que isso ´e apenas uma abrevia¸c˜ao dos axiomas:

∀m,n,k : Nat

•m + (n + k) = (m + n) + k

•m + n = n + m

•m + 0 = 0 + m

•m + 0 = m

A chamada nota¸c˜ao mixfix ´e permitida. Essa nota¸c˜ao ´e assim denominada pelo fato de generalizar as nota¸c˜oes infixa, p´os-fixa e prefixa, permitindo a mistura arbitr´aria das por¸c˜oes dos argumentos e identificadores. Os “place-holders”11 s˜ao escritos como pares de

“underscores”12. Exemplos:

• − −+− −

• − − − −+

O primeiro caso significa que um termo envolvendo a soma ser´a da forma “a+b” e no segundo que os termos ser˜ao da forma ab+. Todos os s´ımbolos dever˜ao ser inclu´ıdos no

11

Local para colocar um argumento da opera¸c˜ao. 12

(55)

formato ISOLATIN-1, mas as anota¸c˜oes13 podem causar um efeito de formata¸c˜ao diferente

-e.g. como o aparecimento de s´ımbolos matem´aticos “” em vez do par de caracteres “->”.

Em casos simples, as opera¸c˜oes podem tamb´em ser definidas no mesmo instante em que elas s˜ao declaradas em vez de definidas atrav´es dos axiomas:

ops 1 :Nat =suc (0);

dbl(n :Nat) :Nat = n+n

Predicados: A declara¸c˜ao de predicados assemelha-se a declara¸c˜ao das opera¸c˜oes, mas n˜ao h´a sort resultante, pois ´e pressuposto que o sort resultante ser´a a ´algebra booleana

{V,F}14.

preds odd :Nat;

≤ :Nat ×Nat

As declara¸c˜oes de predicados tamb´em podem ser definidas no mesmo tempo que elas s˜ao declaradas, atrav´es do conectivo “ ” :

preds even(n :Nat)⇔ ¬odd(n);

≤ (m,n:Nat)⇔ m <n ∨m =n

No que segue d´a-se exemplos de duas especifica¸c˜oes b´asica em CASL contendo a sua defini¸c˜ao e sua semˆantica:

(1) Especifica¸c˜ao com um ´unico sort

spec Elem

13

Informa¸c˜oes que n˜ao afetam a semˆantica da especifica¸c˜ao e s˜ao utilizadas como aux´ılio para as ferramentas que processar˜ao a especifica¸c˜ao (analisadores ou provadores autom´aticos de teoremas).

14

(56)

sort Elem end

Essa especifica¸c˜ao bem simples ´e definida como sendo o par, ψ, onde: = (S,PF,TF,P), S = {Elem}, P F =T F =P = ψ = ∅, e cujo significado ´e: , M od(), de maneira que Mod() = Set (i.e os modelos da especifica¸c˜ao ´e a categoria de todos os conjuntos).

(2) Especifica¸c˜ao com um sort mais um predicado bin´ario homogˆeneo

spec ORDER

sort Elem

pred :Elem×Elem end

Essa especifica¸c˜ao tamb´em declara apenas a assinatura ={S2, P F2, T F2, P2}ondeS2

= {Elem}, P F2 = T F2 = ∅,P2 ={≤} e Mod(

2) ´e a classe de todos os conjuntos munidos

de uma rela¸c˜ao bin´aria.

Tipo de Dados: Uma declara¸c˜ao de tipo de dados ´e vista como uma gram´atica livre de contexto, i.e. uma variante de BNF. Ela declara os s´ımbolos na esquerda de “::=”como os sorts, e para cada alternativa na direita declara um construtor possivelmente com alguns seletores. Quando os tipos de dados s˜ao declarados como “livres”, nos modelos associados os construtores de termos distintos, do mesmo sort, s˜ao interpretados como valores distintos, e cada sort declarado ´e livremente gerado por seus construtores. Assim os modelos de um tipo livre s˜ao os modelos iniciais da categoria Mod(). Exemplo:

(57)

free type Pair ::=pair(left,right :Elem)

Tomando Pair como exemplo, essa declara¸c˜ao estabelece quepair :Elem×ElemP air

´e um construtor e lef t, right : P air Elem s˜ao destrutores. Assim para uma declara¸c˜ao da forma free type S:= ci(si:Si ,. . ., sn:Sn) tem-se que S ´e um sort constru´ıdo livremente,

ci ´e um construtor e si, . . . , sn s˜ao seletores da forma: ci : Si ×Sn → S; si : S → Si e

sn :S → Sn.

Quando h´a mais do que uma alternativa em uma declara¸c˜ao de tipo de dados, os seletores s˜ao geralmente parciais, e nesse caso tem que ser declarados como tais pela inser¸c˜ao de ’ ?’. Exemplo:

free type List[Elem] ::= nil |cons(first :?Elem;rest :?List[Elem])

significando que List[Elem] ´e um sort livremente gerado, nil List[Elem], cons :

Elem×List[Elem] List[Elem], f irst : List[Elem] ? Elem e rest : List[Elem] ?

List[Elem].

Os seletores parciais podem ser evitados pelo uso de imers˜ao de subsorts como constru-tores:

free types List[Elem] ::=nil |sort Nelist

Nelist ::=cons(first :Elem;rest :List[Elem])

Significando queList[Elem] =nilN elist, eN elist´e constru´ıdo livremente.

A ´ultima declara¸c˜ao acima ilustra a n˜ao viabilidade linear dentro de uma lista de declara¸c˜oes de tipo de dados: NeList ´e usado antes de ter sido declarado.

(58)

declarados como tipos “gerados”, i.e. os sorts s˜ao obrigados a serem gerados pelos seus construtores (e subsorts imersos):

generated type Num ::=0 |1 | 0(Num)| 1(Num) generated types Nat ::=0 |sort Pos

Pos ::=suc(pre :Nat)

Onde no segundo caso N at ´e obrigado a ser gerado a partir de 0 e pelo mergulho do subsort P os(que ´e gerado pelo construtor suc).

Mais geralmente, qualquer grupo de declara¸c˜oes de assinaturas pode estar sujeito `a uma obrigatoriedade de gera¸c˜ao dos sorts, por exemplo:

generated { sorts Pos <Nat ops 0 :Nat; suc :Nat Pos}

Axiomas: As vari´aveis usadas nos axiomas podem de antem˜ao ser declaradas global-mente:

vars m,n :Nat;p :Pos

axioms n <m ...;suc(n) =p ...;...

Onde vars declara as vari´aveis m, n : N at e p : P os como globais para toda a especi-fica¸c˜ao, numa biblioteca.

As vari´aveis podem tamb´em ser declaradaslocalmentenuma lista “itemizada”de f´ormulas:

vars x,y,z :Elem

Imagem

Tabela 2.1: Opera¸c˜ao de multiplica¸c˜ao
Figura 3.1: Diagrama da Sobrecarga sort resultante em uma aplica¸c˜ao.
Figura 3.3: Assinatura Senten¸cas e Classe de Modelos
Figura 3.5: Diagrama de Institui¸c˜ao

Referências

Documentos relacionados

Este trabalho buscou, através de pesquisa de campo, estudar o efeito de diferentes alternativas de adubações de cobertura, quanto ao tipo de adubo e época de

Nesse contexto, a análise numérica via MEF de vibrações sísmicas induzidas por detonações se mostra como uma metodologia que pode contribuir significativamente

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

seria usada para o parafuso M6, foram utilizadas as equações 14 e 15, referentes aos parafusos de 8 mm de diâmetro e folga entre parafuso e furo de 0,5 mm, que definem,

No entanto, os resultados apresentados pelo --linalol não foram semelhantes, em parte, aos do linalol racêmico, uma vez que este apresenta um efeito vasorelaxante em anéis de

Resumo: O presente trabalho corresponde a um estudo empírico descritivo e exploratório que aborda comportamentos e falas de atores políticos que participaram do processo legislativo

As micotoxinas são compostos químicos tóxicos provenientes do metabolismo secundário de fungos filamentosos e conhecidas pelos danos causados à saúde humana e

onde Qe são as forças de origem externa ao sistema e Qc são as forças de reação. Estas equações não podem ser utilizadas diretamente, pois as forças de