<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.formulasearchengine.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=64.54.15.150</id>
	<title>formulasearchengine - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.formulasearchengine.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=64.54.15.150"/>
	<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/wiki/Special:Contributions/64.54.15.150"/>
	<updated>2026-07-26T02:26:40Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.47.0-wmf.7</generator>
	<entry>
		<id>https://en.formulasearchengine.com/w/index.php?title=Reticulocyte_index&amp;diff=11189</id>
		<title>Reticulocyte index</title>
		<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/w/index.php?title=Reticulocyte_index&amp;diff=11189"/>
		<updated>2013-12-03T22:58:37Z</updated>

		<summary type="html">&lt;p&gt;64.54.15.150: /* Interpretation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Unifying Theories of Programming&#039;&#039;&#039;&#039;&#039; (UTP) deals with [[program semantics]]. It shows how [[denotational semantics]], [[operational semantics]] and [[algebraic semantics (computer science)|algebraic semantics]] can be combined in a unified framework for the [[formal specification]], design and implementation of [[Computer program|program]]s and [[computer system]]s.&lt;br /&gt;
&lt;br /&gt;
The book of this title by [[C.A.R. Hoare]] and [[He Jifeng]] was published in the [[Prentice Hall International Series in Computer Science]] in 1998.&amp;lt;ref&amp;gt;[[C.A.R. Hoare]] and [[He Jifeng]], &#039;&#039;Unifying Theories of Programming&#039;&#039;, [[Prentice Hall International Series in Computer Science]], 1998. ISBN 0-13-458761-8.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Theories ==&lt;br /&gt;
&lt;br /&gt;
The semantic foundation of the UTP is the [[first-order predicate calculus]], augmented with fixed point constructs from second-order logic. Following the tradition of [[Eric Hehner]], [[Predicative programming|programs are predicates]] in the UTP, and there is no distinction between programs and specifications at the semantic level. In the words of [[C.A.R. Hoare|Hoare]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;A computer program is identified with the strongest predicate describing every relevant observation that can be made of the behaviour of a computer executing that program.&amp;lt;ref&amp;gt;[[C.A.R. Hoare]], Programming: Sorcery or science? [[IEEE Software]], 1(2): 5–16, April 1984. ISSN 0740-7459. doi: 10.1109/MS.1984.234042.&amp;lt;/ref&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In UTP parlance, a &#039;&#039;theory&#039;&#039; is a model of a particular programming paradigm. A UTP theory is composed of three ingredients:&lt;br /&gt;
&lt;br /&gt;
* an &#039;&#039;alphabet&#039;&#039;, which is a set of variable names denoting the attributes of the paradigm that can be observed by an external entity;&lt;br /&gt;
* a &#039;&#039;signature&#039;&#039;, which is the set of programming language constructs intrinsic to the paradigm; and&lt;br /&gt;
* a collection of &#039;&#039;healthiness conditions&#039;&#039;, which define the space of programs that fit within the paradigm. These healthiness conditions are typically expressed as [[monotonic]] [[idempotent]] [[predicate transformer semantics|predicate transformers]].&lt;br /&gt;
&lt;br /&gt;
[[Program refinement]] is an important concept in the UTP. A program &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt; is refined by &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; if and only if every observation that can be made of &amp;lt;math&amp;gt;P_2&amp;lt;/math&amp;gt; is also an observation of &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt;.&lt;br /&gt;
The definition of refinement is common across UTP theories:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P_1 \sqsubseteq P_2 \quad\text{if and only if}\quad \left[ P_2 \Rightarrow P_1 \right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;\left[ X \right]&amp;lt;/math&amp;gt; denotes&amp;lt;ref&amp;gt;[[Edsger W. Dijkstra]] and [[Carel S. Scholten]]. Predicate calculus and program semantics. Texts and Monographs in Computer Science. Springer-Verlag New York, Inc., New York, NY, USA, 1990. ISBN 0-387-96957-8.&amp;lt;/ref&amp;gt; the [[universal closure]] of all variables in the alphabet.&lt;br /&gt;
&lt;br /&gt;
== Relations ==&lt;br /&gt;
&lt;br /&gt;
The most basic UTP theory is the alphabetised predicate calculus, which has no alphabet restrictions or healthiness conditions. The theory of relations is slightly more specialised, since a relation&#039;s alphabet may consist of only:&lt;br /&gt;
&lt;br /&gt;
* undecorated variables (&amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;), modelling an observation of the program at the start of its execution; and&lt;br /&gt;
* primed variables (&amp;lt;math&amp;gt;v&#039;&amp;lt;/math&amp;gt;), modelling an observation of the program at a later stage of its execution.&lt;br /&gt;
&lt;br /&gt;
Some common language constructs can be defined in the theory of relations as follows:&lt;br /&gt;
&lt;br /&gt;
* The skip statement, which does not alter the program state in any way, is modelled as the relational identity:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{skip} \equiv v&#039; = v&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The assignment of value &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; to a variable &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; is modelled as setting &amp;lt;math&amp;gt;a&#039;&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and keeping all other variables (denoted by &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;) constant:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a := E  \equiv  a&#039; = E \land u&#039; = u&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The [[sequential composition]] of two programs is just [[Composition of relations|relational composition]] of intermediate state:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P_1 ; P_2  \equiv  \exists v_0 \bullet P_1 [ v_0 / v&#039; ]  \land  P_2 [ v_0 / v ]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Non-deterministic choice between programs is their greatest lower bound:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P_1 \sqcap P_2  \equiv  P_1 \lor P_2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Conditional_(programming)|Conditional choice]] between programs is written using infix notation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P_1 \triangleleft C \triangleright P_2  \equiv  ( C \land P_1 ) \lor ( \lnot C \land P_2 )&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A semantics for [[recursion]] is given by the [[least fixed point]] &amp;lt;math&amp;gt;\mu \mathbf{F}&amp;lt;/math&amp;gt; of a monotonic predicate transformer &amp;lt;math&amp;gt;\mathbf{F}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mu X \bullet \mathbf{F}(X)  \equiv  \sqcap \left\{ X  \mid  \mathbf{F}(X) \sqsubseteq X \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
&lt;br /&gt;
* Jim Woodcock and Ana Cavalcanti. A tutorial introduction to designs in Unifying Theories of Programming. In Integrated Formal Methods, volume 2999 of Lecture Notes in Computer Science, pages 40–66. Springer Berlin / Heidelberg, 2004. ISBN 978-3-540-21377-2. doi: [http://dx.doi.org/10.1007/978-3-540-24756-2_4 10.1007/978-3-540-24756-2_4]&lt;br /&gt;
&lt;br /&gt;
* Ana Cavalcanti and Jim Woodcock. A tutorial introduction to CSP in Unifying Theories of Programming. In Refinement Techniques in Software Engineering, volume 3167 of Lecture Notes in Computer Science, pages 220–268. Springer Berlin / Heidelberg, 2006. doi: [http://dx.doi.org/10.1007/11889229_6 10.1007/11889229_6].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:1998 books]]&lt;br /&gt;
[[Category:Computer science books]]&lt;br /&gt;
[[Category:Formal methods publications]]&lt;/div&gt;</summary>
		<author><name>64.54.15.150</name></author>
	</entry>
</feed>