Structured Types: Difference between revisions

From Event-B
Jump to navigationJump to search
imported>WikiSysop
imported>WikiSysop
Line 3: Line 3:
The Event-B mathematical language currently does not support a syntax for the direct definition of structured types such as records or class structures.
The Event-B mathematical language currently does not support a syntax for the direct definition of structured types such as records or class structures.
Nevertheless it is possible to model structured types using projection functions to represent the fields/attributes.  For example,
Nevertheless it is possible to model structured types using projection functions to represent the fields/attributes.  For example,
suppose we wish to model a record structure ''C'' with fields 'e' and 'f' (with type E and F respectively).
suppose we wish to model a record structure ''C'' with fields ''e'' and ''f'' (with type ''E'' and ''F'' respectively).
Let us use the following syntax for this (not part of Event-B):
Let us use the following syntax for this (not part of Event-B syntax):


<center>
<center>
Line 16: Line 16:
</center>
</center>


We can model this structure in Event-B by introducing (in a context) a set <math>C</math> and two
We can model this structure in Event-B by introducing (in a context) a carrier set ''C'' and two
functions <math>e</math> and <math>f</math> as constants as follows:
functions ''e'' and ''f'' as constants as follows:


<center>
<center>
Line 35: Line 35:




Now, given an element <math>c\in C</math> representing a record, we write <math>e(c)</math> for the 'e' component of structure
Now, given an element <math>c\in C</math> representing a record, we write ''e(c)'' for the ''e'' component of structure

Revision as of 16:06, 1 May 2009

Modelling Structured Types

The Event-B mathematical language currently does not support a syntax for the direct definition of structured types such as records or class structures. Nevertheless it is possible to model structured types using projection functions to represent the fields/attributes. For example, suppose we wish to model a record structure C with fields e and f (with type E and F respectively). Let us use the following syntax for this (not part of Event-B syntax):

 \begin{array}{lcl}
 \textbf{RECORD}~~~~ C &::&  e\in E\\
    &&  f \in F
 \end{array}

We can model this structure in Event-B by introducing (in a context) a carrier set C and two functions e and f as constants as follows:

 \begin{array}{l}
 \textbf{SETS}~~ C\\
\textbf{CONSTANTS}~~ e,~ f\\
\textbf{AXIOMS}\\
~~~~\begin{array}{l}
   e \in  C \tfun E\\
   f \in  C \tfun F\\
 \end{array} 
\end{array}


Now, given an element c\in C representing a record, we write e(c) for the e component of structure