Duminda WijesekeraSWE 623: Fall Schemas in Z Chapter 6 in Potter Sinclair and Till
Duminda WijesekeraSWE 623: Fall Schemas Z’s main representational mechanism of structure and functions. Example: initialStock: Stock # initialStock < maxlines i :ITEM; n : N | (i,n) initalStock /\ n<100 stockItem : P ITEM stockItems = dom initialStock
Duminda WijesekeraSWE 623: Fall Schemas Describing Abstract States Account Opened Account Overdrawn Authorized Withdrawal Account closed Account in Good Standing Overdraft Paid Off Regular Withdrawal Deposit
Duminda WijesekeraSWE 623: Fall Schemas Describing Abstract States Example 1: BankAccount 1 total, minBalance: R `total > minBalance Example 2: BankAccount 2 total, minBalance: R `inGoodStanding: BOOLEAN inGoodStanding (total > minBalance)
Duminda WijesekeraSWE 623: Fall Schemas Describing Operations BankAccount with Operations total, minBalance: R withdraw : R BOOL overDraft: R x BOOL R total > minBalance x?:R;out!:Bool. [total – x? out! = withdraw(x?)/\out! = TRUE /\ total’ = total-x] \/[total – x? > minBalance => out! =FALSE /\ out! = withdraw(x?)/\ total’ = total ]
Duminda WijesekeraSWE 623: Fall Schema Calculus: Operations on Schemas Schemas can be built from other schemas. Schema calculus has some operations on schemas to build new schemas from the old. Operations: –Inclusion –Decoration –Disjunction –Conjunction –Negation –composition
Duminda WijesekeraSWE 623: Fall Inclusion - 1 BankAccount with Operations Bank Account 1 Bank Overdraft Where Bank Overdraft can be defined separately
Duminda WijesekeraSWE 623: Fall Inclusion - 2 Bank Regular Withdraw total, minBalance: R withdraw : R BOOL overDraft: R x BOOL R total > minBalance x?:R;out!:Bool. [total – x? out! = withdraw(x)/\out! = TRUE /\ minBalance’ = minBalance-x?] \/[total – x? > minBalance => out! =FALSE /\ out! = withdraw(x?)/\ total’ = total ]
Duminda WijesekeraSWE 623: Fall Decoration Adding ?, ! And ‘ to variables is referred to as decoration. Can use ‘ for schemas themselves. Example: Double Min Balance Bank Account, Bank Account’ doubleMinBalance: R R monBalance’ = 2*minBalance
Duminda WijesekeraSWE 623: Fall Full Expansion of a Decorated Schema Replace primed entities by their definitions Double Min Balance total, total’, minBalance, minBalance’ :R doubleMinBalance : RR total > minBalance /\ total’ > minBalance’
Duminda WijesekeraSWE 623: Fall Schema Disjunction Want to specify define two cases separately and state that they are two cases of the same “thing”. Example: –Bank WithdrawCash = Bank RegularWithdraw \/ Bank Overdraft –Bank Regular Withdraw defined earlier
Duminda WijesekeraSWE 623: Fall Schema Disjunction - 2 Bank Overdraft Bank Account 1, Bank Account 1’ overdraft : R x BOOLBOOL x?: R, approve?: BOOL x?:R;out!:Bool. [approve? => (out! /\ total’=total-x?) total’ = total-x?] \/[not approve? => (not out! /\ total’=total)]
Duminda WijesekeraSWE 623: Fall Schema Conjunction When one schema can be written specified as “two specifications” Results in taking the conjunction of both constraints Example: Bank Overdraft = sendMessage/\adjustBalance
Duminda WijesekeraSWE 623: Fall Schema Conjunction - 2 send Message Bank Account 1, Bank Account 1’ overdraft : R x BOOLBOOL x?: R, approve?: BOOL x?:R;out!:Bool. [approve? => out! /\total’=total- x?)] \/[ approve? => ( out! /\ total’=total)]
Duminda WijesekeraSWE 623: Fall Schema Conjunction - 3 Adjust Total Bank Account 1, Bank Account 1’ overdraft : R x BOOLBOOL x?: R, approve?: BOOL x?:R;out!:Bool. [approve? => out! /\ total’ t=total-x?] \/[ approve? => ( out! /\ total’=total)]
Duminda WijesekeraSWE 623: Fall Schema Negation Example 1: BankAccount 1 total, minBalance: R `total > minBalance Bad bank Account = = Bank Account 1 Bad BankAccount total, minBalance: R (total > minBalance)
Duminda WijesekeraSWE 623: Fall Schema Hiding Operations Used to hide some variables and declarations of already known schemas. Use to hide variables. Format –[Decs | Pred] \ Hidden variables –[Reduced Decs | Hidden Decs. Predicate]
Duminda WijesekeraSWE 623: Fall Schemas Hiding Example -1 BankAccount with Operations total, minBalance: R withdraw : R BOOL overDraft: R x BOOL R total > minBalance x?:R; app?out!:Bool. [total – x? out! = overDraft x?, app? /\out! /\ total’ = total-x] \/[total – x? out! =FALSE /\ out! = overDraft(x?,app?)/\ total’=total]
Duminda WijesekeraSWE 623: Fall Schemas Hiding Example -2 BankAccount with Operations total, minBalance: R withdraw : R BOOL overDraft: R x BOOL R total > minBalance x?:R; app?out!:Bool. [total – x? out! = overDraft x?, app? /\out! /\ total’ = total-x] \/[total – x? out! =FALSE /\ out! = overDraft(x?,app?)/\ total’=total]
Duminda WijesekeraSWE 623: Fall Schema Composition Recall that function composition: –If f : S 1 -> S 2 and g: S 2 -> S 3 then –fog : S 1 -> S 3 Schema Composition imports this idea to schemas. Example: Consider overdrawn bank account –To close account: Must pay up to minimum balance Then close account from account in good standing
Duminda WijesekeraSWE 623: Fall Schema Composition Method 1.Replace primed variables (‘)in first schema with double primed variables (“) S[“/’] 2.Replace un-primed variables in second schema with double primed variables (“) T[‘/] 3.Existentially quantify variables in double primed state (“) State”. S[“/’]/\T[“/]
Duminda WijesekeraSWE 623: Fall Schema Composition Example -1 toGoodStanding Bank Account 1 toGoodStanding: R -> NULL total < minBalance x?:R ( x+total > minBalance) => total’ = total + x?
Duminda WijesekeraSWE 623: Fall Schema Composition Example -2 closeInGoodStanding Bank Account 1 close: BOOL -> R total > minBalance x?:BOOL, return!:R ( total>minBalance) => return!=total /\ total’=0 closeFromDefault = toGoodStanding o closeFromGoodStanding
Duminda WijesekeraSWE 623: Fall Schema Composition Example -3 closeFromDefault Bank Account 1 close: BOOL -> R Bank Account” x?: R toGoodStanding x /\ close true return’
Duminda WijesekeraSWE 623: Fall Schema Preconditions Applicable only to schemas representing operations Pre Op = = State’; Out!. Op Means that the schema should be applied to those state that result in the given predicate satisfies in the post state. Here: Op is the operation
Duminda WijesekeraSWE 623: Fall Schema Precondition Example Simple x,y: N x < y NonEndPoint Simple; Z!:N x < x’ < z! < y’ < y
Duminda WijesekeraSWE 623: Fall Constructing pre NonEndPoint preNonEndPoint Simple x’,y’,z!: N x < x’ < z < y’ < y Can simplify the statement x’,y’,z!: N x < x’ < z < y’ < y to x+3 < y
Duminda WijesekeraSWE 623: Fall Schema Types A way to record data types by specifying filed and their types of a structure. Example Book title, author, isbn, publisher : String Pubdate, pages: Z slength title < 80, slength author < 80, (checksum isbn) mode 11 = 0 O < pages /\ 1800 < pubdate < 2050