Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouTomás Magalhaes Alterado mais de 9 anos atrás
2
Funções Tipo de relação onde não pode ocorrer a situação um para vários (1-to-N). Daí, a denominação determinística. Notação: Usa-se f x = y em lugar de x R y Em Z, funções são baseadas em Teoria de Conjuntos com Tipos. Apesar disso, cada classe de função tem sua representação própria
3
Funções Parciais Alicerce para definir as demais classes de funções. Portanto, as funções parciais são as mais simples. X Y = {R:X Y | x:X; y,z:Y x R y x R z y=z} ^ Exemplos: Seja ASCII={A,B,...,Z,a,b,...,z} asc: N ASCII asc={65 A, 66 B,..., 90 Z, 97 a, 98 b, 122 z} Simetrico: Z N p: Z; n: N Simetrico p = n p = n min, max: P N N min = {S: P N; m: N | S m S ( i:S m i) S m} max = {S: P N; m: N | S m S ( i:S m i) S m} I I I III I III II
4
Funções Totais A função deve ser bem definida em todo o seu domínio. X Y = { f: X Y | dom f = X } ^ Exemplos: Seja BYTE={65,...,122} suc: N N x: N suc x = x + 1 asc: BYTE ASCII asc={65 A, 66 B,..., 90 Z, 97 a, 98 b, 122 z} II I
5
Operações sobre Funções Os operadores de relações e conjuntos podem ser usados em funções, mas isso não implica fechamento. Exemplo: {João Maria, José Neide} {José Magda} João Maria, José Neide, José Magda} A união de duas funções é fechada se: f, g: X Y f g X Y x: X | x (dom f) (dom g) f x = g x
6
Operações sobre Funções (cont.) Pode-se evitar a restrição anterior assumindo a sobreposição dos pares de f pelos de g quando x (dom f) (dom g) Notação: f g Exemplo: {João Maria, José Neide} {José Magda} João Maria, José Magda} Obs.: A sobreposição pode ser usada, por exemplo, para realizar atualizações em bancos de dados.
7
Definição Formal de Sobreposição [X, Y] __ __ : (X Y) (X Y) (X Y) f, g: X Y f g = ((dom g) f) g Cálculo do exemplo anterior segundo a definição: f g= ((dom g) {João | Maria, José | Neide}) {José | Magda} = ({José} {João | Maria, José | Neide}) {José | Magda} = {João | Maria} {José | Magda} Teoremas: 1.f f = f 2.f (g h) = (f g) h 3.{} f = f 4.f {} = f 5.(dom f dom g) = {} f g = f g = g f
8
Abstrações Lambda Usada para definir uma função sem nome. Notação: | Exemplos: n: N n+n = {n: N n (n+n)} n: N | n 0 n-1 = {n: N | n 0 n (n-1)} Aplicação:Quadrado 2 ( n: N n n) 2 2 2 4 I I I I Quadrado: N N Quadrado = n: N n n I I I I
9
Algumas Funções Especiais Funções Parciais Injetivas de X para Y: X Y = { f: X Y | x 1, x 2 : dom f f x 1 = f x 2 x 1 = x 2 } > ^ Funções Totais Injetivas de X para Y: X Y = (X Y) (X Y) >> ^ Funções Parciais Sobrejetivas de X para Y: X Y = { f: X Y | ran f = Y} ^ Funções Totais Sobrejetivas de X para Y: X Y = (X Y) (X Y) ^ Funções Parciais Bijetivas de X para Y: X Y = (X Y) (X Y) ^ >> Funções Totais Bijetivas de X para Y: X Y = (X Y) (X Y) ^ >>
10
Conjuntos Finitos Intervalos Naturais __.. __ : N N P N m, n: N m.. n = { i: N | m i n } Conjunto dos Subconjuntos Finitos de X F X = { S: P X | ( n: N; f:1.. n S true)} (Enumeração) ^ > I IIII I III
11
Conjuntos Finitos (cont.) Cardinalidade [X] # __ : F X N S: F X n: N; f:1.. n S # S = n > Funções Finitas Parciais Parciais Injetivas X Y = { f: X Y | dom f F X } ^ X Y = X Y X Y > > ^ II II I
12
Exemplo de Especificação Usando Função entrar, sair, saldo Obs.: Este exemplo pode ser encontrado no livro Specification Case Studies, 2nd Edition, sob o nome de Flexitime, págs. 134-138
13
O Estado do Sistema Flexi Standard_Hours, Flexitime_Hours: Time Period worked: Ident Period in: Ident Time dom(in) dom(worked) Time = = N Period = = P Time [Ident] I I
14
Operações sobre o Estado Response ::= In | Out | Balance | IdUnknown Clocking Flexi ident?: Ident t?: Time ind!: Response ident? dom(worked) Standard_Hours’ = Standard_Hours Flexitime_Hours’ = Flexitime_Hours
15
Operações sobre o Estado (cont.) ClockIn Clocking ident? dom(in) t? Flexitime_Hours(t?) in’ = in {ident? t?} worked’ = worked Ind! = In ClockOut Clocking ident? dom(in) worked’ = worked {ident? (worked(ident?) (in(ident?).. (t?-1)))} in’ = {ident?} in Ind! = Out 0 0
16
Operações sobre o Estado (cont.) RelMinutes = = Z Worked Clocking cr!: RelMinutes cr! = # (worked’(ident?) Flexitime_Hours(t?)) - # { t:Standard_Hours(t?) | t < t? } ClockIn = ClockIn Worked ClockOut = ClockOut Worked 0 0
17
Operações sobre o Estado (cont.) ReadOut Worked ident? dom(in) t? Flexitime_Hours(t?) ind! = Balance Flexi’ = Flexi Unknown Flexi ident?: Ident ind!: Response ident? dom(worked) ind! = Unknown InsertKey = ClockIn ClockOut ReadOut Unknown
18
Operações sobre o Estado (Final) Add_Employee Flexi ident!: Ident ident! dom(worked) worked’ = worked { ident! | {} } in’ =in Standard_Hours’ = Standard_Hours Flexitime_Hours’ = Flexitime_Hours
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.