20.03.2013 Views

II. Notes on Data Structuring * - Cornell University

II. Notes on Data Structuring * - Cornell University

II. Notes on Data Structuring * - Cornell University

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!