formalization of oscilloscope. on formalism high-level (implementation-independent) specification...
TRANSCRIPT
Formalization of Oscilloscope
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?
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| == ?
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
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
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)
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
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 == ?
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)
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}
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
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
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)
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)}
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 =
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 =
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 =
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 =
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}-----------------------------------------------------------------------------------------