II. Notes on Data Structuring * - Cornell University
II. Notes on Data Structuring * - Cornell University
II. Notes on Data Structuring * - Cornell University
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
166 c.A.R. HOARE<br />
12. AXIOMATISATION<br />
The preceding secti<strong>on</strong>s have introduced a number of methods of c<strong>on</strong>structing<br />
data spaces (types), and have explained some useful operati<strong>on</strong>s defined over<br />
these spaces. But the descripti<strong>on</strong> has been essentially intuitive and informal,<br />
and the questi<strong>on</strong> arises whether all the relevant informati<strong>on</strong> about the data<br />
spaces has been communicated, or whether there remains some possibility of<br />
misunderstanding of the details.<br />
In order to remove such misunderstanding, or check that it has not<br />
occurred, it is desirable to give a rigorous mathematical specificati<strong>on</strong> of<br />
each data space, and the operators defined over it; and we follow what is<br />
now a customary mathematical practice of defining rigorously the subject<br />
matter of our reas<strong>on</strong>ing, not by traditi<strong>on</strong>al definiti<strong>on</strong>s, but by sets of axioms.<br />
In view of the role which axioms play in the theory of data structuring,<br />
it may be helpful to summarise their intended properties.<br />
(1) Axioms are a formal statement of those properties which are shared<br />
by the real world and by its representati<strong>on</strong> inside a computer, in virtue of<br />
which manipulati<strong>on</strong> of the representati<strong>on</strong> by a computer program will yield<br />
results which can be successfully applied back to the real world.<br />
(2) They establish a c<strong>on</strong>ceptual framework covering those aspects of the<br />
real world which are believed to be relevant to the programmer's task, and<br />
thereby assist in his c<strong>on</strong>structive and inventive thinking.<br />
(3) They state rigorously those assumpti<strong>on</strong>s about the real world <strong>on</strong> which<br />
the computer program will be based.<br />
(4) They state the necessary properties which must be possessed by any<br />
computer representati<strong>on</strong> of the data, in a manner free from detail which is in<br />
initial stages irrelevant.<br />
(5) They offer a carefully circumscribed freedom to the programmer or<br />
high-level language implementor to choose a representati<strong>on</strong> most suitable<br />
for his applicati<strong>on</strong> and hardware available.<br />
(6) They form the basis of any proof of correctness of a program.<br />
The axioms given here are not intended to be used directly in the proof<br />
of n<strong>on</strong>-trivial programs, since such proofs would be excessively l<strong>on</strong>g-winded.<br />
Rather they may be used to establish the familiar properties of the data<br />
spaces they describe, and these properties can then be used informally in<br />
proofs. Eventually it may be possible to get computers to check such proofs;<br />
but this will require the development of much more powerful formal languages<br />
for expressing proofs than are at present provided by logicians, and the<br />
use of powerful decisi<strong>on</strong> procedures for large subclasses of theorem, to assist<br />
in verificati<strong>on</strong> of the individual steps of a proof.