Dynamically creating objects and sequencing operations Cliff Jones University of Newcastle 2005-06-06 WG2.3 Niagara 2005-06-06 1 On the expectation of a WG2.3 topic • in the tradition of 2.3, this is something I’m trying to sort out for myself • but … • apparently it is now expected to work up from the (legacy) code WG2.3 Niagara 2005-06-06 2 POOL example class stack var … method push(i: item) … method pop() : item … body %% initialize do %% forever if … then answer(push) else answer(pop, push) fi od WG2.3 Niagara 2005-06-06 3 OO-like structuring in specifications • I’d like to look at two issues – how to sequence “operations” – how to “create objects” • first some background WG2.3 Niagara 2005-06-06 4 A dichotomy • state based specification techniques – VDM, Z, B, agent-B – good for big systems; understand from data • one can “see” (or design) a system from Σ • process algebras – CSP, CCS, -calculus – states as process indices (but another notion below) – good for intricate sequencing (e.g. deadlocks) WG2.3 Niagara 2005-06-06 5 My interest: (specification and) development • can be done in, say, CSP – CCS etc goes more for bi-simulation • but it has always felt more natural to – – – – get an abstract state-based spec reify data decompose operations and next: “splitting atoms” • cf. CBJ’s Prato talk WG2.3 Niagara 2005-06-06 6 Modularising state based specs • VDM – – – – initially none “operation quotation” VVSL (as in CDIS) VDM++ (as in VDM ToolSet) • Z – everything is a schema – no pre-conditions! • B – machines/operations WG2.3 Niagara 2005-06-06 7 Sequencing operations • VDM – all, always available – pre-conditions are to be respected • one proves this! – but there is a procedural language as well! • B – originally “operations” (pre P then S end) • “action systems”/ Event-B – “when conditions” define firing WG2.3 Niagara 2005-06-06 8 OO is a GoodThing (in design) • sometimes as essence of system – come back to how modelled? • sometimes as an implementation idea – CBJ used several times as “reification” • modularisation (better than many specification languages) • control of interference – local instance variables – unique references create “islands” of computation – shared references when interference necessary • option to control sequencing WG2.3 Niagara 2005-06-06 9 Look at combining processes/states • done in Ada – by Abrial!! • POOL • – dropped (after MIW’s observation) WG2.3 Niagara 2005-06-06 10 So, two ways of sequencing • process descriptions – in the style of POOL • guards – “when” in Event-B – possible to “hack” at this level – abstract PC • I’d like to view them as refinements – in either direction – would combinations be useful? • … but I want to achieve even more … WG2.3 Niagara 2005-06-06 11 obl • language itself – typed references – recognise “unique” references – no inheritance (yet) • see as design notation (cf. VDM sequential) – use with implemented OOLs (e.g. Eiffel) • semantics (as basis of “meta” proofs) • SOS • map to -calculus WG2.3 Niagara 2005-06-06 12 obl Sort class vars v: nat nil; l: unique ref(Sort) nil insert(x: nat) method return; if is-nil(v) then (v x; l new Sort) elif v x then l.insert(x) else (l.insert(v); v x) fi test(x: nat) method: Bool if is-nil(l) x v then return false elif x = v then return true else delegate l.test(x) fi . . . end Sort WG2.3 Niagara 2005-06-06 13 Mapping (i) [[Q]] = !IQ IQ = qu.BQ thus [[new Q]] = q(u). … WG2.3 Niagara 2005-06-06 14 Mapping (ii) IQ = \New{\widetilde{s}\widetilde{a}} (v\sb{nil} | l\sb{nil} | \outp{q}{u}. B\sb{Q}) WG2.3 Niagara 2005-06-06 15 We have • a nice mapping to -calculus • new C maps to a reference to replication – strictly, a communication with a name inside a replicator which cause a new instance to exist • we can therefore have dynamic creation of objects/machines/… WG2.3 Niagara 2005-06-06 16 Contrast … • Michael Butler’s paper – tokens Cust {0..sx} in the “specification” – a strange (twin) SOS • cbj’s SOS of COOL – map Oid to ObjInfo • is a semantic object • the SOS rules create this mapping • so my semantics of POOL – would look rather different from Michael’s – might have a “program counter” into process expression!! WG2.3 Niagara 2005-06-06 17 Technical issue(s) • failure(s) – in two senses • internal choice (vs. external) – divergence(s) WG2.3 Niagara 2005-06-06 18 Implementation questions • CSP handshake is non-trivial • Event-B’s “when” clause looks less efficient than CARH’s “monitors” – assuming … WG2.3 Niagara 2005-06-06 19 So, sequencing operations VDM + OO + -calculus (held together by reification) WG2.3 Niagara 2005-06-06 20