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

Assignment No.

Formal Methods In Software Engineering

Submitted to :Mam Saba Taimoor

Submitted By: Zainab Tariq

Roll No: 3462-FBAS/BSSE/F17-A


The Bus
Defining types(set definitions):
[person]
MESSAGE::=ok|error
Reply ::= yes|no
State Space Schema:
Bus
Passengers:ℙperson
Buscapacity:ℕ
Msg:ℙMESSAGE
#Passengers≤Buscapacity

Initial State Schema:


IniBus
Bus
#Passengers=0

Operation Schema:
Updated operation
Boarding of a Passenger:
BoardingSuccess
ΔBus
P?:person
Msg!:MESSAGE
(P?∉Passengers)∧(#Passengers< Buscapacity)⇒(Passengers′=Passengers∪{P?})∧ Msg!=ok

BoardingFailure
ΞBus
P?:person
Msg!:MESSAGE
(P?∈Passengers)∨(#Passengers<Buscapacity)⇒Msg!=error

Leaving a Passenger:
LeavingSuccess
ΔBus
P?:person
Msg!:MESSAGE
(P?∈Passengers)⇒Passengers′=Passengers∖{P?}∧Msg!=ok
LeavingFailure
ΞBus
P?:person
Msg!:MESSAGE
(P?∉Passengers)⇒Msg!=error

If Passengers exists or not:


PersonCheck
ΞBus
P?:person
reply!:Reply
(P?∈Passengers∧reply!=yes)∨(P?∉Passengers∧reply!=no)⇒Passengers′=Passengers

PHONE DIRECTORY SYSTEM


Defining types(set definitions):

[PNAME]
[PHONE]
MESSAGE::=ok|error
State Space Schema:
PHONEDIRECTORY
Name : ℙPNAME
Number:ℙPHONE
Person:PHONE ⇸PNAME
Number=dom(Person)

Initial State Schema:


IniDirectory
PHONEDIRECTORY
Name=∅
Number=∅

Operation Schema:
Updated operation
Adding Person:
AddPersonSuccess
Δ PHONEDIRECTORY
InputName?:PNAME
InputNum?:PHONE
Msg!:MESSAGE
(InputNum?∉Number)⇒Person′=Person ∪ {InputNum?↦InputName?}∧Msg!=ok
)
AddPersonFailure
ΞPHONEDIRECTORY
InputNum?:PHONE
Msg!:MESSAGE
InputNum?∈Number⇒Msg!=error

Read Person:
ReadByNameSuccess
ΞPHONEDIRECTORY
InputName?:PNAME
OutputNum!:ℙPHONE
Msg!:MESSAGE
OutputNum!={n:PHONE|(n↦InputName?)∈Person}∧ Msg!=ok

ReadByNumSuccess
ΞPHONEDIRECTORY
InputNum?:PHONE
OutputName!:ℙPNAME
Msg!:MESSAGE
OutputName!={p:PNAME|(InputNum?↦p)∈Person}∧ Msg!=ok

ReadFailure
ΞPHONEDIRECTORY
InputName?:PNAME
InputNum?:PHONE
Msg!:MESSAGE
(InputName?∉Name)∧(InputNum?∉Number)⇒Msg!=error

Delete Person:
DeleteSuccess
ΔPHONEDIRECTORY
InputName?:PNAME
InputNum?:PHONE
Msg!:MESSAGE
Person′=Person∖{InputNum?↦InputName?}∧Msg!=ok

DeleteFailure
ΔPHONEDIRECTORY
InputName?:PNAME
InputNum?:PHONE
Msg!:MESSAGE
(InputName?∉Name)t∧(InputNum?∉Number)⇒Msg!=error
Output:

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