Вы находитесь на странице: 1из 31

Mtodos Formais

Relaes

Captulo 6: Relaes
So utilizados nas Mquinas
Abstratas para o armazenamento
de informaes.
Exemplo:
FOTOGRAFOS <-> CAMERAS

Relaes entre Conjuntos


Se S e T so dois conjuntos, o
produto cartesiano S X T o
conjunto de todos os pares (s,t)
dos elementos de S e T,
respectivamente.
Exemplo:
S={0,1} e T={2,3}
S X T = {(0,2),(0,3),(1,2),(1,3)}

Relaes entre Conjuntos


Definio:
S X T = {(s,t) | s : S & t : T}

Pares tambm podem ser escritos


utilizando-se a notao de
mapeamento:
S <-> T
Exemplo:
PHOTOGRAPHER = {anna,bob,chris,dave,elizabeth,francis}
CAMERA = {canon, kodak, hasselblad, olympus, pentax,
minolta}

owns

anna

canon

bob

kodak

chris

hasselblad

dave

minolta

elizabeth

olympus

francis

pentax

Relao owns
owns =
{ (anna,canon),(bob,canon),(bob,kodak),
(chris,hasselblad),(chris,kodak),
(chris,pentax),(dave,pentax),
(elizabeth,pentax),(elizabeth,minolta) }
owns =
{ anna |-> canon, bob|-> canon,
bob |-> kodak, chris |-> hasselblad,
chris |-> kodak, chris |-> pentax,
dave |-> pentax, elizabeth |-> pentax,
elizabeth |-> minolta }

Relaes entre Conjuntos


Uma relao entre S e T um
subconjunto de S X T.
S <-> T = POW(S X T)

Para especificar que R uma


relao entre S e T escrevemos:
R : S <-> T

S o conjunto fonte (SOURCE) e T


um conjunto alvo (TARGET).

Relaes entre Conjuntos


Dizer que (dave,pentax) : owns
significa que dave relaciona-se com
pentax no relacionamento owns.
Utilizamos relaes nas
especificaes para podermos
responder perguntas como:
Bob tem uma cmera?
Quantas cmeras Elizabeth possui?
Que cmeras Chris e Dave utilizam?

Diversas Operaes e
Propriedades

Domnio
Imagem
Restrio de Domnio
Anti-Restrio de Domnio
Restrio de Imagem
Anti-Restrio de Imagem
Imagem Relacional
Composio Relacional

Reflexo
Simetria
Anti-Simetria
Anti-Simetria Estrita
Transitividade
Equivalncia
Sobreposio
Relacional

Domnio
O domnio de uma relao
R : S <-> T o conjunto de elementos
de S que R relaciona com algum
elemento em T.
Em outras palavras: so os
elementos da fonte que esto
relacionados com alguma coisa.
dom(R) = {s | s : S & #t . (t : T & s |-> t : R}

Domnio
dom(owns) = {anna, bob, chris, dave,
elizabeth}
Francis no pertence a dom(owns)
pois no est relacionado a
nenhuma cmera.
No h setas partindo de Francis
para outro elemento.

dom(owns)

anna

canon

bob

kodak

chris

hasselblad

dave

minolta

elizabeth

olympus

francis

pentax

Imagem
A imagem o conjunto de elementos
de T que esto relacionados com
elementos de S.
ran(R) = {t|t : T & #s . (s : S & s |-> t : R}
ran(owns) = {canon, kodak, hasselblad,
minolta, pentax}

Exemplo: olympus no pertence a


ran(owns) pois no est relacionada
com nenhum elemento de S.

ran(owns)

anna

canon

bob

kodak

chris

hasselblad

dave

minolta

elizabeth

olympus

francis

pentax

Restrio de Domnio
Uma relao R : S <-> T pode ser
projetada sobre um domnio
particular U <: S.
Neste caso apenas os
relacionamentos com itens em U so
importantes.
U <| R = {s |-> t | s |-> t : R & s : U}

Exemplo: apenas as cmeras que


chris utiliza = {chris} <| owns

{chris} <| owns

anna

canon

bob

kodak

chris

hasselblad

dave

minolta

elizabeth

olympus

francis

pentax

Anti-restrio de Domnio
uma restrio complementar que
remove todos os pares que possuem
o primeiro elemento pertencente a U.
U <<| R = {s |-> t | s |-> t : R & s /: U}

Exemplo: todos os relacionamentos


de owns exceto aqueles que
possuam chris no primeiro elemento:
{chris} <<| owns

{chris} <<| owns

anna

canon

bob

kodak

chris

hasselblad

dave

minolta

elizabeth

olympus

francis

pentax

Restrio de Imagem
A restrio de imagem R |> V dada
pelo conjunto de pares em R cujo
segundo elemento est em V.
R |> V = {s |-> t | s |-> t : R & t : V}

Exemplo: todas os relacionamentos


cuja cmera utilizada kodak:
R |> {kodak}

owns |> {kodak}

anna

canon

bob

kodak

chris

hasselblad

dave

minolta

elizabeth

olympus

francis

pentax

10

Anti-restrio de Imagem
A anti-restrio de imagem filtra
todos os pares da relao R cujo o
segundo elemento no est em V.
R |>> V = {s |-> t | s |-> t : R & t /: V}

Exemplo: todos os relacionamentos


de owns cujas cmeras no so
kodak ou canon:
owns |>> {kodak, canon}

owns |>> {kodak, canon}

anna

canon

bob

kodak

chris

hasselblad

dave

minolta

elizabeth

olympus

francis

pentax

11

Leis

S1 <| (S2 <| R) = (S1 /\ S2) <| R


(R |> S1) |> S2 = (R |> S1 /\ S2)
S1 <<| (S2 <<| R) = (S1 \/ S2) <<| R
(R |>> S1) |>> S2 = (R |>> S1 \/ S2)
S <| (R |> T) = (S <| R) |> T
S <| (R |>> T) = (S <| R) |>> T
S <<| (R |> T) = (S <<| R) |> T
S <<| (R |>> T) = (S <<| R) |>> T

SELF-TEST
6.1) Qual o resultado da relao
{chris, dave} <| owns |>> {pentax} ?

12

Imagem Relacional
Identifica os elementos em T que
so relacionados a algum elemento
de U <: S.
R[U] = {t | s |-> t : R & s : U}

Exemplo: cmeras que chris e


elizabeth possuem:
owns[{chris,elizabeth}]

owns[{chris,elizabeth}]

anna

canon

bob

kodak

chris

hasselblad

dave

minolta

elizabeth

olympus

francis

pentax

13

Inverso Relacional
Se R uma relao, ento o seu
inverso relacional dado por R~.
R~ = {t |-> s | s |-> t : R}

Exemplo: se os fotgrafos em S
possuem cmeras em T ento as
cmeras em T so possudas pelos
fotgrafos em S.

Owns~

canon

anna

kodak

bob

hasselblad

chris

minolta

dave

olympus

elizabeth

pentax

francis

14

Composio Relacional
Se s est relacionado a t e t est
relacionado a u ento s est
relacionado a u.
Se R0 : S <-> T e R1 : T <-> U ento
R0;R1.

Em outras palavras: R0;R1 : S <-> U


R0;R1 = {s |-> u | s : S & u : U &
#t . (t : T & s |-> t : R0 & t |-> u : R1)}

owns

takes

anna

canon

bob

kodak

disc

chris

hasselblad

120 roll

dave

minolta

35 mm

elizabeth

olympus

APS

francis

pentax

15

SELF-TEST
6.2) Calcule (owns~;owns)[{kodak}].
anna

canon

bob

kodak

chris

hasselblad

dave

minolta

elizabeth

olympus

francis

pentax

Relaes em um nico
Conjunto (reflexo)
Possui o conjunto fonte sendo o
mesmo de destino.
Um tipo especial de relao sobre o
mesmo conjunto a de identidade,
na qual um elemento se relaciona
com ele mesmo.
id(S) = {(s,t) | s : S & t : S & s = t}

Uma relao do tipo S <-> S dita


reflexiva.

16

Relaes em um nico
Conjunto (simetria)
A relao R : S <-> S simtrica se
ela relaciona s1 com s2 sempre que
relaciona s2 com s1.
Em outras palavras: a ordem dos
dois elementos no importante.
Observe que a relao id(S)
simtrica.

Relaes em um nico
Conjunto (simetria)
De fato R uma relao simtrica
apenas se R = R~
Exemplo: na relao
mesma_idade_que, se x tem a
mesma idade que y ento y tem a
mesma idade que x.

17

Relaes em um nico
Conjunto (anti-simetria)
Uma relao R : S <-> S antisimtrica se ela relaciona dois
elementos em no mximo um
sentido.
(R /\ R~) - id(S) = {}
Exemplo: na relao pais, se x pai
de y isso implica que y no pai de
x, mas sim filho.

Relaes em um nico
Conjunto (anti-simetria estrita)
Uma relao R : S <-> S
estritamente anti-simtrica se ela
relaciona dois elementos
estritamente em um sentido.
R /\ R~ = {}
Exemplo: na relao pais, se x pai
de y isso implica que y no pai de
x, mas sim filho.

18

Relaes em um nico
Conjunto (transitividade)
Uma relao R : S <-> S transitiva
se s0 |-> s1 : R e s1 |->s2 : R ento
s0 |-> s2 : R.
Exemplo: na relao maior_que nos
Naturais, se x maior que y, e y
maior que z, ento x maior que z.

Relaes em um nico
Conjunto (equivalncia)
Se uma relao R : S <-> S
reflexiva, simtrica e transitiva ento
ela dita uma relao de
equivalncia.
Exemplo: na relao mesma_idade_que, temos

simetria:
Se x tem a mesma idade de y ento y tem a
mesma idade de x.
reflexo:
x possui a mesma idade que x.
e transitividade:
se x tem a mesma idade de y e y tem a mesma
idade d z ento x tem a mesma idade de z.

19

Sobreposio Relacional
Se R0 : S <-> T e R1 : S <->T so
duas relaes entre S e T ento a
sobreposio relacional R0 <+ R1
a relao R0 com certos elementos
substitudos pelos de R1
A sobreposio relacional um
UPDATE:
R0 <+ R1 = (dom(R1) <<| R0) \/ R1

Exemplo:
owns <+ {chris |-> olympus}

owns <+ {chris |-> olympus}

anna

canon

bob

kodak

chris

hasselblad

dave

minolta

elizabeth

olympus

francis

pentax

20

SELF-TEST
6.3) A relao pais reflexiva?
Simtrica? Anti-simtrica?
Estritamente anti-simtrica?
Transitiva? uma relao de
equivalncia?

SELF-TEST
6.4) A relao mesma_idade_que
reflexiva? Anti-simtrica?
Estritamente anti-simtrica?
Transitiva? uma relao de
equivalncia?

21

Heirs to the Throne


Relacionamentos representando as
regras que governam a linha de
sucesso de uma monarquia.
As regras de sucesso ao trono em
uma monarquia indicam quem deve
susceder a coroa quando o monarca
morre.

Heirs to the Throne


As regras determinam uma relao
priorclaim para os herdeiros de uma
monarquia em particular que
mantm um par (g,h) onde o
primeiro herdeiro g tem maior
reivindicao ao trono que o
segundo herdeiro h.

22

Heirs to the Throne


Em primeiro lugar, um pretendente g
tem mais indicao que um h.
Em segundo lugar, h uma relao
priosibling que diz qual dos dois
irmos tem mais indicao.
Em terceiro lugar, se g mais
indicado que h ento qualquer
herdeiro de g mais indicado que
qualquer herdeiro de h.

Heirs to the Throne


Temos que:
priorclaim = heir \/ priorsibling \/ (heir~;priorsibling; heir)

Observe que se heir reflexiva:


priorsibling <: (heir~;priosibling;heir)

Ento podemos simplificar:


priorclaim = heir \/ (heir~;priorsibling;heir)

Para definir heir, temos que:


child : PERSON <-> PERSON
older : PERSON <-> PERSON

23

Heirs to the Throne


til definirmos os descendentes de
uma pessoa:
descendant = child*

Se estamos considerando a linha de


sucesso de p ento:
PERSON = descendant[{p}]

Duas pessoas so irms quando


filhas da mesma pessoa e no so
iguais:
sibling = (child~;child) - id(PERSON)

Heirs to the Throne


E o relacionamento de idade entre
os irmos expresso como:
oldersibling = sibling /\ older

Diferentes definies de heir e


priorsibling sero levantadas para
diferentes leis de sucesso.
Trs sero consideradas a seguir:
em todas a relao heir reflexiva.

24

Heirs to the Throne


Primogeniture
O princpio da primogenitura indica
que o filho mais velho o herdeiro
imediato, e que irmos mais velhos
tm precedncia sobre irmos mais
novos:
heir = descendant
priorsibling = oldersibling

E a relao priorclaim dada por:


priorclaim = descendant \/
(descendant~;oldersibling;descendant)

Heirs to the Throne


Descendants of Cecily
Cecily

Edward IV

Edward V

Richard III

Richard

Edward

25

Heirs to the Throne


Descendants of Cecily
Cecily

Cecily

Cecily

Cecily

Edward IV

Edward IV

Edward IV

Edward IV

Richard III

Richard III

Richard III

Richard III

Edward V

Edward V

Edward V

Edward V

Richard

Richard

Richard

Richard

Edward

Edward

Edward

Edward

descendant~

oldersibling

descendant

Heirs to the Throne


Descendants of Cecily
Cecily

Cecily

Edward IV

Edward IV

Richard III

Richard III

Edward V

Edward V

Richard

Richard

Edward

Edward

descendant~;oldersibling;descendant

26

Heirs to the Throne


Lei Slica
A Lei Slica de sucesso, utilizada
pela monarquia francesa diz que a
sucesso s pode se dar a
descendentes homens.
MALE <: PERSON

A prioridade dada pela idade.


heir = (child |> MALE)*
priorsibling = MALE <| oldersibling |> MALE

Heirs to the Throne


Lei Slica (Figura 6.12)
Phillip III

Phillip IV
Louis X

Isabella

Charles

Phillip V

Charles IV

Phillip VI

Jeanne

Charles

Jeanne
Jeanne

Isabelle

Charles V

John I
Marguerite
Edward

Philip

Luis

Marie

Eleanor
John

Joanna

27

Heirs to the Throne


Lei Inglesa de Sucesso
No caso dos herdeiros ao trono da
Inglaterra, todos os descendentes,
homens e mulheres, so
considerados, estando sob o
princpio da primogenitura.
Homens sempre tm prioridade
sobre as mulheres, seja quais forem
as suas idades.

Heirs to the Throne


Lei Inglesa de Sucesso
Para irmos do mesmo sexo a idade
levada em considerao.
Desta maneira, podemos definir a lei
inglesa como:
priorsibling =
(MALE <| sibling |> FEMALE) \/
(MALE <| oldersibling |> MALE) \/
(FEMALE <| oldersibling |> FEMALE)

Aqui FEMALE = PERSON - MALE

28

Heirs to the Throne


Lei Inglesa (Figura 6.13)
William I
Richard

Robert

Stephen

Theobald

Mary

Eustace

William II

Adela

Henry

Euphamia

Henry II

Henry I
Mathilda

Geoffrey

William

Richard

William

SELF-TEST
6.6) Na Figura 6.13, Mary ou Theobald
tm maior reivindicao? Geoffrey
ou Euphamia? Henry II ou Stephen?

29

SELF-TEST
6.7) Na Figura 6.13, Stephen ou
Mathilda tem maior reivindicao se
priorsibling simplesmente
oldersibling?

Prxima Aula

Captulo 7: Funes e Sequncias

30

Dvidas?

31

Вам также может понравиться