formalization of oscilloscope. on formalism high-level (implementation-independent) specification...

19
Formalization of Oscilloscope

Upload: kimberly-harrell

Post on 24-Dec-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

Formalization of Oscilloscope

Page 2: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

On Formalism

• High-level (implementation-independent) specification• Recall: Larch – An Algebraic Formal Spec. Lang.• Why formal? Precise, consistent, and complete• Formal semantics:

Formal = grammar,e.g., syllogism

All persons die.Adam is a person------------------------Adam dies.

Semantics?

Page 3: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

Introduction to Z

• Based on typed set theory and first order logic• Sets:

– oneTwoThree == {1, 2, 3}– Person == {Adam, Eve}

S: P X == 2 X --- S is a set of X’s powerset, i.e., the set of all subsets of X

– oneTwoThreeSet == P oneTwoThree == P {1, 2, 3} == ?– personSet == P person == P {Adam, Eve} == ?– |P X| == ?

Page 4: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

Introduction to Z

• Sets (cont’d)• x memberOf S

? 1 memberOf {1, 2, 3}

? 1 memberof P {1, 2, 3}

? {1} memberof P {1, 2, 3}

? Adam memberOf P Person

? Adam memberOf Person

? {Adam, Eve} memberOf P Person

Page 5: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

Introduction to Z

• Sets (cont’d)• S subsetOf S’

? 1 subsetOf {1, 2, 3}

? {1, 2} subsetOf P {1, 2, 3}

? {{1, 2}} subsetOf P {1, 2, 3}

? Adam subsetOf P Person

? Adam subsetOf Person

? Person subsetOf Person

? {Person} subsetOf P Person

Page 6: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

Introduction to Z

• Sets (cont’d)• S X S’ (cross/cartesian product)

oneTwoThree X person == {1, 2, 3} X {Adam, Eve} ==

{{1, Adam}, {1, Eve}, {2, Adam}, {2, Eve}, {3, Adam}, {3, Eve}}

? {1, 2} subsetOf {1, 2} X {1, 2}

• S U S’, S intersect S’, S\S’, etc. (skip)

Page 7: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

Introduction to Z

• Functions• dom f --- The set of values x for which f(x) is defined

f(x) = x 2 , dom f = {n memberOf N| 1 <= n <= 5}• ran f --- The set of values yielded by f(x),

where x memberOf dom f

ran f = ?• f: X -> Y --- f is a total function from X to Y

i.e., f is defined for all x memberOf dom(f), i.e., dom(f) = X

• f: X -|-> Y --- f is a partial function from X to Y i.e., f is defined for some values in X

if f(x) = 1/x, ? dom(f) = Z

? spouse: Person -> Person

Page 8: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

Introduction to Z

• Functions (cont’d)• (lambda x: T . t) returns the value of the term t

(lambda x: N . X 2 ) 5 == 25

(lambda x: N . (X 2 , 1/x) == ?

(lambda x, y: N . (X 2 + y, y - 1/x) 5 1 == ?

Page 9: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

Introduction to Z

• First Order Logic• Logical connectives: AND, OR, NOT, =>, <=>• Quantifiers

? Exists n: N . n = n 2

? Exists p: Person . P == father (Adam)

? Forall i: N . I 2 >= I

? Forall I, j: N . I > j => I 2 > j 2

? Forall x, y: Person, x == spouse(y) <=> y == spouse(x)

Page 10: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

Introduction to Z• Schemas

A schema consists of a set of declarations of variables and a predicate constraining these variables (i.e., state space and operations)

----- BirthdayBook ----------------------------------------| known: P Person| birthday: Person -|-> Date-----------------------------------------------------------------| known = dom birthday-----------------------------------------------------------------

One possible state:known = {Adam, Caine, Eve}birthday = {Adam |-> Apr/01, Eve |-> Apr/01}

Page 11: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

A Simple Oscilloscope

? What is a waveform?

- Engineer 0: a graph

- Engineer1: a 1-kbyte array of 8-bit samples

- Engineer3: a set of voltage values

- Engineer4: a function from time to volts

Page 12: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

A Simple Oscilloscope

• Overview

“display Pat’s ECG from 1:01pm to 1:02pm”- Ultimately displaying a trace:

mapping time to a horizontal distance across the screen

voltage to a vertical offset on the screen

- Scale: both horizontal (seconds/meter) and vertical (volts/meter) scaling

to convert a “voltage versus time” signal to

a point-on-screen versus time” display of the trace

- Translate: the trace on the display by horizontal and vertical offsets

- Clip: the trace to fit on the screen

W -> T

Scale TranslateClip

waveform (translated) trace

Clipped tracetrace

Page 13: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

waveforms, segments, coordinates, traces• A waveform can be modeled as a partial function of time

Waveform == Time -|-> Voltage,where Voltage == Z X {Volt} /* e.g., (1, Volt), (2, Volt)

Time == N X {Second} /* e.g., (0, Second), (1, Sec

E.g., wf1 == {1 Sec |-> 1 Volt, 2 Sec |-> 3 Volt, 3 Sec |-> 2 Volt}wf2 == {1 Sec |-> 1 Volt, 3 Sec |-> 5 Volt, 4 Sec |-> 6 Volt}wf3 == {25 |-> 5, 26 |-> 6, 27 |-> 8, 28 |-> 10, 29 |-> 11, 30 |->

13}

• A segment corresponds to a waveform over a contiguous time interval? wf1

? wf2

? wf3

? wf3 (25)

? Wf3 (29)

Page 14: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

waveforms, segments, coordinates, traces

• A coordinate can be represented by a real and a unit of distance:

Coord == R X {Meter} /* (1, Meter), (3.5, Meter)where Voltage == Z X {Volt} /* e.g., (1, Volt), (2, Volt)

• A point on the screen by a pair of coordinates:

Point == Coord X Coord /* e.g., ((1, Metr), (3, Metre)), (1, 3)

• A trace is a mapping from time to points:

Trace == Time -|-> Point

? {(0, 2.5), (1, 3), (2, 4), (3, 5), (4, 5.5), (5, 6.5)} memberOf Trace

? {25 |-> 5, 26 |-> 6, 27 |-> 8, 28 |-> 10, 29 |-> 11, 30 |-> 13} memberOf Trace

? {25 |-> (0, 2.5), 26 |-> (1, 3), 27 |-> (2, 4), 28 |-> (3, 5), 29 |-> (4, 5.5), 30 |-> (5, 6.5)}

Page 15: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

Scale• takes a segment and scales it both horizontally and vertically• adjusts it s.t. the start of the segment corresponds to a horizontal offset of zero• The horizontal scale factor converts the units from seconds to metres• The vertical scale factor converts from a voltage to metres

------- Scale ---------------------------------------------------------------------------------| segment: Segment /* e.g., {25 |-> 5, 26 |-> 6, 27 |-> 8 28 |-> 10, 29 |-> 11, 30 |-> 13}

| HScale: R X {Second/Metre} /* e.g., 1 Second/Metre

| VScale: R X {Volt/Metre} /* e.g., 2 Volt/Metre

| scaled: Trace-------------------------------------------------------------------------------------------------| scaled = (lambda t: dom segment . (t – min (dom segment) / HScale,| segment (t) / VScale) )-------------------------------------------------------------------------------------------------

? scaled =

Page 16: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

Translate

---- Translate -------------------------------------------------------------------------------------| scaled: Trace /* e.g., {25 |-> (0, 2.5), 26 |-> (1, 3), 27 |-> (2, 4), 28 |-> (3, 5), 29 |-> (4, 5.5), 30 |-> (5,

6.5)}

| HOffset, VOffset: Coord /* e.g., (1, 1)

| moved: Trace

------------------------------------------------------------------------------------------------------

| moved = (lambda t: dom scaled . (first (scaled (t)) + HOffset,

| second (scaled (t)) + VOffset) )

------------------------------------------------------------------------------------------------------

? moved =

Page 17: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

Clip

----- Clip ----------------------------------------------------------------------------------------| moved: Trace /* e.g., {25 |-> (1, 3.5), 26 |-> (2, 4), 27 |-> (3, 5), 28 |-> (4, 6), 29 |-> (5, 6.5), 30 |-> (6,

7.5)}

| HMax: R X {Meter} /* e.g., 4 Metre

| VMax: R X {Metre} /* e.g., 6 Metre

| clipped: Trace

---------------------------------------------------------------------------------------------------

| let screen == {(x, y): Coord | 0 < x < HMax ^ -VMax < y < VMax} .

| clipped = moved screen

---------------------------------------------------------------------------------------------------

• Local definitions within predicates are introduced by the keyword “let”

• The operator is for range restriction:

R S == {a |-> b | (a |-> b memberOf R) ^ (b memberOf S)}

? Clipped =

Page 18: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

Trace Display

• Schema conjunction: the three schemas are combined using schema conjunction

(Scale ^ Translate ^ Clip)

• Displaying only clipped trace: hide scaled and moved traces, as they are only used as intermediate links – keep all the constraints, but omit intermediate variables.

DisplayTrace == (Scale ^ Translate ^ Clip) \ (scaled, moved)

? fully expanded declaration =

Page 19: Formalization of Oscilloscope. On Formalism High-level (implementation-independent) specification Recall: Larch – An Algebraic Formal Spec. Lang. Why

DisplayKnobs, DisplaySegments

• (skip)----- DisplayKnobs --------------------------------------------------------------| HScale: R+ X {Second/Metre}| VScale: R+ X {Volt/Metre}| HOffset, VOffset: Coord----------------------------------------------------------------------------------------

----- DisplaySegments ----------------------------------------------------------| segment: Segment| DisplayKnobs| display: P Trace----------------------------------------------------------------------------------------| display = {DisplayTrace | dom DisplayTrace = dom Segment . clipped}-----------------------------------------------------------------------------------------