A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Paulo Borba e Augusto Sampaio Departamento de Informática Universidade Federal de Pernambuco Especificação Usando Conjuntos.

Apresentações semelhantes


Apresentação em tema: "Paulo Borba e Augusto Sampaio Departamento de Informática Universidade Federal de Pernambuco Especificação Usando Conjuntos."— Transcrição da apresentação:

1 Paulo Borba e Augusto Sampaio Departamento de Informática Universidade Federal de Pernambuco Especificação Usando Conjuntos

2 Teoria de Conjuntos Conjuntos são coleções de elementos onde a ordem e a repetição de elementos são irrelevantes Existem dois tipos de representação: Por extenso Compreensão {e 1,..., e n } {x:S | P(x). t(x)} Exemplos {2, 3, 5, 7} {x:IN | x é primo  x<10. x} {0, 2, 4,...} {x:IN | true. 2 * x} {0, 2, 4, 6} {x:IN | x<4. 2 * x}

3 Teoria de Conjuntos Abreviações {x:S. t(x)} = {x:S | true. t(x)} {x:S | P(x)} = {x:S | P(x). x} Portanto, {x:IN. 2 * x} = {x:IN | true. 2 * x} {x:IN | x é primo  x<10} = {x:IN | x é primo  x<10. x}

4 Uma Operação Básica: Pertinência x  S x  S =  (x  S) {x:S | P(x). T(x)} = {x | x  S  P(x). T(x)}

5 Axiomas Fundamentais Axioma 1. Uma expressão pertence a um conjunto se e somente se tal expressão é igual a um dos elementos deste conjunto: x  {e1,..., en}  (x=e1 ...  x=en) Axioma 2. Extensionalidade (S=T)  (  x. x  S  x  T)  (  x. x  S  x  T)  (  x. x  T  x  S)

6 Versões do Axioma da Extensionalidade Axioma 3. x  {y:S | P(y)}  (x  S  P(x)) Axioma 4. x  {y:S. t(y)}  (  y:S. x=t(y))

7 Conjunto Vazio: {} Axioma 5.   x. x  {} ou equivalentemente:  x.  ( x  {}) ou ainda:  x. ( x  {})

8 Subconjuntos:  Definição. (S  T)  (  x. x  S  x  T) Teoremas: (S = T)  (S  T  T  S) (S  T)  (S  T   (S = T)) (S  T)  (S  T)  S. {}  S  S. S  S

9 Conjunto das Partes: |P Definição. (T  |P S)  (T  S) Teoremas:  S. {}  |P S  S. S  |P S

10 Produto Cartesiano:  Definição. p  (S  T)   y, z. p = (y, z)  y  S  z  T Usando a notação de compreensão, temos: (S  T) = {y : S; z : T. (y, z)}

11 Alguns operadores auxiliares Funções de projeção sobre pares: first (y, z) = y second (y, z) = z Cardinalidade de conjuntos finitos: # S

12 União:  Notação Definição [T] Declaração predicado [X][X]  : |P X  |P X -> |P X  S,T: |P X. S  T = {x : X. x  S  x  T}

13 Algumas propriedades da União Comutatividade S  T = T  S Associatividade S  (T  R ) = ( S  T)  R Idempotência S  S = S Elemento neutro (identidade) S  {} = S Como prová-las?

14 Interseção:  Definição Propriedades comutatividade associatividade... [X][X]  : |P X  |P X -> |P X  S,T: |P X. S  T = {x : X. x  S  x  T}

15 Diferença: \ Definição Propriedades (S \ T) \ R = S \ (T  Q) S \ S = {} S \ {} = S... [X][X]  \  : |P X  |P X -> |P X  S,T: |P X. S \ T = {x : X. x  S  x  T}

16 União distribuída:  Generalização para conjuntos de conjuntos Exemplo:  {{1,2,3},{3,4},{3,5}}= {1,2,3,4,5} Definição [X][X]    : |P (|P X) -> |P X  SS: |P (|P X).  SS = {x:X |  S:SS. x  S}

17 Interseção distribuída:  Generalização para conjuntos de conjuntos Exemplo:  {{1,2,3},{3,4},{3,5}}= {3} Definição [X][X]    : |P (|P X) -> |P X  SS: |P (|P X).  SS = {x:X |  S:SS. x  S}

18 Exercício Especifique um cadastro de pessoas, com as seguintes operações: –inclui (inclusão de uma nova pessoa) –remove (remoção de uma pessoa existente) –consulta (retorna mensagem ausente ou presente) Restrição –Não pode haver mais do que uma quantidade de pessoas especificada pela constante limite (com valor 100)

19 Notação Pode-se definir um novo tipo em Z (given set) simplesmente introduzindo-se o seu nome entre colchetes (abstraindo a representação) Exemplos: [Pessoa] [Matricula, CPF] Elementos destes tipos admitem apenas igualdade Pode-se fazer analogia com uma classe vazia em Java: Exemplo: class Pessoa { }

20 Notação Tipos enumerados (free types) podem ser introduzidos de forma semelhante aos datatypes em programação funcional Exemplo: Mesagem ::= ausente | presente Constantes são introduzidas da forma usual Exemplo: limite == 100

21 Especificação em Z inclui  Estado p? : Pessoa # s < limite p?  s s’ = s  {p?} consulta   Estado p? : Pessoa r! : Mensagem (p?  s  m! = presente)  (p?  s  m! = ausente) init Estado’ s’ = {} [Pessoa] Estado S: |P Pessoa # s  limite Mensagem ::= ausente | presente Limite == 100 Remove...

22 Exercício Na aula anterior, vimos a especificação de conta com operações: credito, debito e get_saldo. Especifique um banco como uma coleção de contas, com as operações: cadastro, remove, credito, debito e get_saldo. Uma restrição e´que as contas devem ter números distintos

23 Notação Um esquema pode ser usado como um tipo, sendo seus componentes referenciados da mesma forma que atributos em uma linguagem OO. Considere o esquema: Usando Conta como tipo: c : Conta c.num... c.saldo... Conta num: Numero saldo: |N

24 Bibliografia Seção 4.1 do livro –The Z Notation, A Reference Manual, J. M. Spivey, Prentice Hall (Mais detalhes) Capítulo 5 do livro –Using Standard Z: Specification, Refinement and Proof, J. Woodcock & J. Davies, Prentice Hall


Carregar ppt "Paulo Borba e Augusto Sampaio Departamento de Informática Universidade Federal de Pernambuco Especificação Usando Conjuntos."

Apresentações semelhantes


Anúncios Google