Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  Overview.thy

  Sprache: Isabelle
 

chapter Isabelle Verification of a protocol using IOA

theory Overview
  imports IOA.IOA
begin

section The System

text 
 The system being proved correct is a parallel composition of 4 processes:
 
  Sender || Schannel || Receiver || Rchannel
 
 Accordingly, the system state is a 4-tuple:
 
  (Sender_state, Schannel_state, Receiver_state, Rchannel_state)
 


section Packets

text 
 The objects going over the medium from Sender to Receiver are modelled
 with the type
 
  'm packet = bool × 'm
 
 This expresses that messages (modelled by polymorphic type 'm) are
 sent with a single header bit. Packet fields are accessed by
 
  hdr🚫m> = b
  mesg🚫m> = m
 


section The Sender

text 
 The state of the process "Sender" is a 5-tuple:
 
  1. messages : 'm list (* sq *)
  2. sent : bool multiset (* ssent *)
  3. received : bool multiset (* srcvd *)
  4. header : bool (* sbit *)
  5. mode : bool (* ssending *)
 


section The Receiver

text 
 The state of the process "Receiver" is a 5-tuple:
 
  1. messages : 'm list (* rq *)
  2. replies : bool multiset (* rsent *)
  3. received : 'm packet multiset (* rrcvd *)
  4. header : bool (* rbit *)
  5. mode : bool (* rsending *)
 


section The Channels

text 
 The Sender and Receiver each have a proprietary channel, named
 "Schannel" and "Rchannel" respectively. The messages sent by the Sender
 and Receiver are never lost, but the channels may mix them
 up. Accordingly, multisets are used in modelling the state of the
 channels. The state of "Schannel" is modelled with the following type:
 
  'm packet multiset
 
 The state of "Rchannel" is modelled with the following type:
 
  bool multiset
 
 This expresses that replies from the Receiver are just one bit.
 
 Both Channels are instances of an abstract channel, that is modelled with
 the type
 
  'a multiset.
 


section The events

text 
 An `execution' of the system is modelled by a sequence of
 
  🚫 action, system_state>
 
 transitions. The actions, or events, of the system are described by the
 following ML-style datatype declaration:
 
  'm action = S_msg ('m) (* Rqt for Sender to send mesg *)
  | R_msg ('m) (* Mesg taken from Receiver's queue *)
  | S_pkt_sr ('m packet) (* Packet arrives in Schannel *)
  | R_pkt_sr ('m packet) (* Packet leaves Schannel *)
  | S_pkt_rs (bool) (* Packet arrives in Rchannel *)
  | R_pkt_rs (bool) (* Packet leaves Rchannel *)
  | C_m_s (* Change mode in Sender *)
  | C_m_r (* Change mode in Receiver *)
  | C_r_s (* Change round in Sender *)
  | C_r_r ('m) (* Change round in Receiver *)
 


section The Specification

text 
 The abstract description of system behaviour is given by defining an
 IO/automaton named "Spec". The state of Spec is a message queue,
 modelled as an "'m list". The only actions performed in the abstract
 system are: "S_msg(m)" (putting message "m" at the end of the queue);
 and "R_msg(m)" (taking message "m" from the head of the queue).
 


section The Verification

text 
 The verification proceeds by showing that a certain mapping ("hom") from
 the concrete system state to the abstract system state is a `weak
 possibilities map` from "Impl" to "Spec".
 
  hom : (S_state * Sch_state * R_state * Rch_state) -> queue
 
 The verification depends on several system invariants that relate the
 states of the 4 processes. These invariants must hold in all reachable
 states of the system. These invariants are difficult to make sense of;
 however, we attempt to give loose English paraphrases of them.
 


subsection Invariant 1

text 
 This expresses that no packets from the Receiver to the Sender are
 dropped by Rchannel. The analogous statement for Schannel is also true.
 
  b. R.replies b = S.received b + Rch b
 
  pkt. S.sent(hdr(pkt)) = R.received(hdr(b)) + Sch(pkt)
 


subsection Invariant 2

text 
 This expresses a complicated relationship about how many messages are
 sent and header bits.
 
  R.header = S.header
  S.mode = SENDING
  R.replies (flip S.header) S.sent (flip S.header)
  S.sent (flip S.header) R.replies header
  OR
  R.header = flip S.header
  R.mode = SENDING
  S.sent (flip S.header) R.replies S.header
  R.replies S.header S.sent S.header
 


subsection Invariant 3

text 
 The number of incoming messages in the Receiver plus the number of those
 messages in transit (in Schannel) is not greater than the number of
 replies, provided the message isn't current and the header bits agree.
 
  let mesg = 🚫header, m>
  in
  R.header = S.header
  ==>
  m. (S.messages = [] m hd S.messages)
  ==> R.received mesg + Sch mesg R.replies (flip S.header)
 


subsection Invariant 4

text 
 If the headers are opposite, then the Sender queue has a message in it.
 
  R.header = flip S.header ==> S.messages []
 

end

Messung V0.5 in Prozent
C=22 H=66 G=48

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet am  2026-04-30) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge