Sequences - PowerPoint PPT Presentation

1 / 29
About This Presentation
Title:

Sequences

Description:

Planes circling an airport. Notation ... that have permission to land are allowed to circle; The circling aircraft are landed on a first-come-first served ... – PowerPoint PPT presentation

Number of Views:34
Avg rating:3.0/5.0
Slides: 30
Provided by: aaron63
Category:

less

Transcript and Presenter's Notes

Title: Sequences


1
Sequences
At the end of this lecture you should be able to
  • provide a definition of a VDM sequence
  • utilize and interpret sequence notation
  • make appropriate use of the VDM sequence
    operators
  • define a sequence by comprehension
  • identify situations in which a sequence is an
    appropriate data type
  • write VDM specifications using the sequence type.

2
Introduction
A sequence is an ordered collection of
objects In a sequence, repetitions are
significant.
Examples
The queue of patients waiting for a doctor.
Planes circling an airport.
3
Notation
A sequence is specified by enclosing its members
in square brackets
s a, d, f, a, d, d, c
queue michael, varinder, elizabeth, winston,
judith
a, d, f ? a, f, d

4
Retrieving items from the sequence
s a, d, f, a, d, d, c
queue michael, varinder, elizabeth, winston,
judith
s(3)
f
queue(4)
winston
s(10)
undefined
5
Sequence operators
s a, d, f, a, d, d, c
queue michael, varinder, elizabeth, winston,
judith
len operator
Returns the length of a sequence
len s
7
len queue
5
6
Sequence operators
s a, d, f, a, d, d, c
queue michael, varinder, elizabeth, winston,
judith
elems operator
Returns a set that contains all the members of
the sequence
elems s
a, d, f, c
elems queue
michael, varinder, elizabeth, winston, judith
7
Sequence operators
s a, d, f, a, d, d, c
queue michael, varinder, elizabeth, winston,
judith
inds operator
Returns a set of all the indices of the sequence
inds s
1, 2, 3, 4, 5, 6, 7
inds queue
1, 2, 3, 4, 5
inds

8
Sequence operators
s a, d, f, a, d, d, c
queue michael, varinder, elizabeth, winston,
judith
head (hd) operator
Returns the first element in the sequence
hd s
a
hd queue
michael
hd
undefined
9
Sequence operators
s a, d, f, a, d, d, c
queue michael, varinder, elizabeth, winston,
judith
tail (tl) operator
Returns a sequence containing all but the first
element
tl s
d, f, a, d, d, c
tl queue
varinder, elizabeth, winston, judith
tl
undefined
tl a

10
Sequence operators
first w, e, r, w
second t, w, q
concatenation operator ( ) operator
operates on two sequences, and returns a sequence
that consists of the two sequences joined
together
first second
w, e, r, w, t, w, q
second first
t, w, q, w, e, r, w
first
w, e, r, w
11
Sequence operators
the override operator ()
Takes a sequence and gives us a new sequence with
a particular element of the old sequence
overridden by a new element
a, c, d, e 1 ? z
z, c, d, e
a, c, d, e 2 ? x, 4 ? y
a, x, d, y
a, c, d, e 7 ? g
undefined
12
Sequence operators
subsequence operator
allow us to extract a part of a sequence between
two indices
s a, d, f, a, d, d, c
s(2, ... , 5)
d, f, a, d
s(2, ... , 2)
d
s(2, ... , 13)
undefined
s(1, ... ,0)
s(8, ... , 7)
13
Sequence by comprehension
expression(a) a ? SomeSet ? test (a)
a a ? 1,,10 ? is-odd(a)
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
s1 2, 3, 4, 7, 9, 11, 6, 7, 8, 14, 39, 45, 3
s2 s1(i) i ? inds s1 ? s1(i) gt 10
11, 14, 39, 45
14
Using the sequence type in VDM-SL
To declare a variable to be of type sequence we
place an asterisk after the name of the type
contained within the sequence.

seq ?
convoy SpaceCraft
15
Specifying a stack
Stack stack Element push(Element) pop()
Element isEmpty() Boolean
16
Specifying the state of the stack
types Element
TOKEN
state Stack of stack init mk-Stack(s) ? end
Element
s
17
The push operation
push( ) ext pre
post
itemIn Element
stack Element
wr
TRUE
18
The pop operation
pop( ) ext pre post
itemRemoved Element
stack Element
wr
stack ?
?
19
The isEmpty operation
isEmpty( ) ext pre post
query ?
stack Element
rd
TRUE
?
query
stack
20
Re-thinking the Airport system
In the new system, when an aircraft approaches
the airport it is placed in a queue, and must
circle the airport until a runway becomes
available Only aircraft that have permission to
land are allowed to circle The circling aircraft
are landed on a first-come-first served basis.
21
Re-specifying the state
types state Airport2 of
init mk-Airport2 ( ) ? end
Aircraft TOKEN
permission Aircraft-set landed
Aircraft-set circling
Aircraft
inv mk-Airport2(p,l,c) ? ?
p, l, c
p ? l
? c
22
The new invariant
  • Landed planes must have permission
  • Circling planes must have permission
  • Circling planes can not be landed
  • All circling planes are unique

inv mk-Airport2(p,l,c) ?
l ? p
? elems c ? p
? elems c ? l
? isUnique(c)
isUnique(seqIn Aircraft) query ? pre
true post query ? ? i1 ,i2 ? inds seqIn ? i1 ?
i2 ? seqIn(i1) ? seqIn(i2)
23
Re-specifying the operations
The following operations access only the
permission and landed components, and do not
therefore need to be changed
  • givePermission
  • recordTakeOff
  • numberWaiting
  • atAirport
  • getPermission
  • getLanded

The meaning of recordLanding will change in the
new specification
Two new operations are required
  • getCircling
  • allowToCircle

24
allowToCircle operation
allowToCircle (
) ext pre post
craftIn Aircraft
circling Aircraft
wr
rd
permission Aircraft-set
rd
landed Aircraft-set
craftIn ? permission
? craftIn ? elems circling
? craftIn ? landed
25
The modified recordLanding operation
recordLanding( ) ext pre post
circling Aircraft
wr
wr
landed Aircraft-set
circling ?
26
Some useful functions to use with sequences
A function that returns the last element in a
sequence
last( ) pre
post
sequenceIn Element
elementOut Element
sequenceIn ?
elementOut sequenceIn(len sequenceIn)
27
Some useful functions to use with sequences
A function that returns the sequence with the
last element removed.
allButLast(
) pre post
sequenceIn Element
sequenceOut Element
sequenceIn ?
sequenceOut sequenceIn(1, ..., (len sequenceIn
- 1))
28
Some useful functions to use with sequences
A find function Returns the index of a particular
element Assuming elements are unique
find(
) pre post
sequenceIn Element, element Element
position ?
element ? elems sequencIn
sequenceIn(position) element
29
Some useful functions to use with sequences
A find function Returns the index of a particular
element Assuming elements are not unique
find(
) pre post
sequenceIn Element, element Element
position ?
element ? elems sequencIn
sequenceIn(position) element
? ?i ? inds sequenceIn ? sequenceIn(i) element
?position ? i
Write a Comment
User Comments (0)
About PowerShow.com