CVS difference for ai22s/ai22-0019-1.html

Differences between 1.4 and version 1.5
Log of other versions for file ai22s/ai22-0019-1.html

--- ai22s/ai22-0019-1.html	2022/10/25 00:07:50	1.4
+++ ai22s/ai22-0019-1.html	2024/02/13 09:02:00	1.5
@@ -1,25 +1,22 @@
 <html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0019-1/04</title>
 <style type="text/css">
 table td,table th{padding:0}
-.c16{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:0pt;border-right-width:0pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:0pt;border-top-style:solid;background-c
olor:#f0f0f0;border-left-style:solid;border-bottom-width:0pt;width:468pt;border-top-color:#000000;border-bottom-style:solid}
-.c9{border-spacing:0;border-collapse:collapse;margin-right:auto}
-.c14{background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt}
-.c10{height:0pt}
+BODY.body{background-color:#ffffff; max-width:540pt; padding:36pt 36pt 36pt 36pt}
+P.anum{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:26pt; padding-bottom:3pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:
400; text-decoration:none; vertical-align:baseline; font-style:normal}
 P.head{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:14pt; padding-bottom:0pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:
400; text-decoration:none; vertical-align:baseline; font-style:normal}
 H2.head{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:12pt; color:#000000; font-size:14pt; padding-bottom:6pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; page-break-after:avoid; orphans:2; widows:2; tex
t-align:left; font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
 P.inst{margin-bottom:0; margin-top:0; margin-left:18pt; margin-right:0; padding-top:9pt; color:#000000; font-size:12pt; padding-bottom:6pt; font-family:"Arial","Liberation Sans",sans-serif;line-height:1.15; orphans:2; widows:2; text-align:left; font-weigh
t:400; text-decoration:none; vertical-align:baseline; font-style:normal}
 P.word{margin-bottom:0; margin-top:0; margin-left:36pt; margin-right:0; padding-top:0pt; color:#000000; font-size:11pt; padding-bottom:3pt; font-family:"Times New Roman","Times",serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:40
0; text-decoration:none; vertical-align:baseline; font-style:normal}
 P.wrds{margin-bottom:0; margin-top:0; margin-left:36pt; margin-right:0; padding-top:0pt; color:#000000; font-size:11pt; padding-bottom:12pt; font-family:"Times New Roman","Times",serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:4
00; text-decoration:none; vertical-align:baseline; font-style:normal}
-P.codt{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:10pt; padding-bottom:0pt; font-family:"Courier New",monospace; line-height:1.15; text-align:left; background-color:#f0f0f0; font-weight:400; tex
t-decoration:none; vertical-align:baseline; font-style:normal}
+P.codb{margin-bottom:0; margin-top:0; margin-left:12pt; margin-right:0; padding-left:4pt; padding-top:4pt; color:#000000; font-size:10pt; padding-bottom:4pt; font-family:"Courier New",monospace; line-height:1.15; text-align:left; background-color:#f0f0f0;
 font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
 P.text{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:11pt; padding-bottom:0pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; text-align:left; font-weight:400; text-decoration:
none; vertical-align:baseline; font-style:normal}
 P.txts{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:11pt; padding-bottom:11pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; text-align:left; font-weight:400; text-decoration
:none; vertical-align:baseline; font-style:normal}
 P.from{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:10pt; padding-bottom:0pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:
400; text-decoration:none; vertical-align:baseline; font-style:none}
 P.time{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:9pt; padding-bottom:9pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:4
00; text-decoration:none; vertical-align:baseline; font-style:italic}
 SPAN.name{font-family:"Lucida Calligraphy",cursive; font-style:normal}
 SPAN.ntrm{font-family:"Arial","Liberation Sans",sans-serif}
-P.a1{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#000000;font-size:26pt;font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:3pt; line-height:1.15; page-break-after:avoid; orphans:2; widows:2; text-align
:left; font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
 </style>
-</head><body class="c14 doc-content"><p class="a1">AI22-0019-1</p>
+</head><body class="body"><p class="anum">AI22-0019-1</p>
 <p class="head">!standard 13.1.1(13.1/5) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;22-10-17 &nbsp;AI22-0019-1/04</p>
@@ -37,9 +34,7 @@
 <p class="text">The circular freezing rule for aspects only applies to aspects that are frozen at
 the freezing point of the enclosing entity.</p>
 <h2 class="head">!issue</h2>
-
-<p class="txts">13.1.1(13.1/5) says:</p>
-
+<p class="text">13.1.1(13.1/5) says:</p>
 <p class="wrds">An <span class="ntrm">expression</span> or <span class="ntrm">name</span> that
 causes freezing of an entity shall not occur within an
 <span class="ntrm">aspect_specification</span> that specifies a representation or operational
@@ -49,14 +44,11 @@
 operational, it&#39;s bizarre that we mention both kinds explicitly here. Moreover, the text of
 AI12-0396-1 says that this rule shouldn&#39;t apply to at least some operational aspects. But the
 wording was unchanged (just moved) from the Corrigendum version.</p>
-
-<p class="txts">Is something wrong here? (Yes.)</p>
 
+<p class="text">Is something wrong here? (Yes.)</p>
 <h2 class="head">!recommendation</h2>
-
 <p class="text">(See Summary.)</p>
 <h2 class="head">!wording</h2>
-
 <p class="inst">Replace 13.1.1(13.1/5):</p>
 <p class="word">An <span class="ntrm">expression</span> or <span class="ntrm">name</span> that
 causes freezing of an entity shall not occur within an
@@ -69,7 +61,6 @@
 <span class="ntrm">name</span> or <span class="ntrm">expression</span> shall not cause freezing of
 this associated entity.</p>
 <h2 class="head">!discussion</h2>
-
 <p class="txts">The purpose of 13.1.1(13.1/5) is to prevent a property of an entity (which is
 necessarily not determined until the entity is frozen) from depending upon the entity itself.
 That&#39;s most important for representation aspects, but could matter for any aspect that is
@@ -87,12 +78,11 @@
 <p class="txts">We need a rule like 13.1.1(13.1/5) to prevent problems for aspects that are
 evaluated at the freezing point, such as representation aspects. For example:</p>
 
-<a id="t.99271cba674aca16229a7c4d2327b4858cc38b8a"></a><a id="t.0"></a><table class="c9"><tr class="c10"><td class="c16">
-<p class="codt"><b>type</b> My_Int <b>is</b> <b>range</b> 1 .. 100<br>
- &nbsp; &nbsp;<b>with</b> Size =&gt; Short_Int&#39;Size;<br>
+<p class="codb"><b>type</b> My_Int <b>is</b> <b>range</b> 1 .. 100<br>
+&nbsp; &nbsp; <b>with</b> Size =&gt; Short_Int&#39;Size;<br>
 <b>subtype</b> Short_Int <b>is</b> My_Int <b>range</b> 1 .. 50;<br>
 Obj : My_Int;</p>
-</td></tr></table><p class="text">&nbsp;</p>
+<p class="text">&nbsp;</p>
 <p class="txts">Freezing Obj freezes My_Int. Freezing My_Int requires Short_Int&#39;Size.
 Short_Int&#39;Size requires freezing Short_Int. Freezing Short_Int requires freezing My_Int.
 We&#39;re back to where we started, so we will be going in circles. 13.1.1(13.1/5) makes this
@@ -101,11 +91,10 @@
 <p class="txts">On the other hand, aspects that aren&#39;t evaluated until some later point, like
 assertion aspects, do not need such a rule. Consider:</p>
 
-<a id="t.38c6680b9522486bdfebeced2ea2062e53bf3e99"></a><a id="t.1"></a><table class="c9"><tr class="c10"><td class="c16">
-<p class="codt"><b>type</b> My_Priv <b>is</b> <b>private</b><br>
- &nbsp; <b>with</b> Default_Initial_Condition =&gt; Sub_Priv&#39;Size &gt; 32;<br>
+<p class="codb"><b>type</b> My_Priv <b>is</b> <b>private</b><br>
+&nbsp; &nbsp;<b>with</b> Default_Initial_Condition =&gt; Sub_Priv&#39;Size &gt; 32;<br>
 <b>subtype</b> Sub_Priv <b>is</b> My_Priv;</p>
-</td></tr></table><p class="text">&nbsp;</p>
+<p class="text">&nbsp;</p>
 <p class="txts">Here, the Default_Initial_Condition is not evaluated until after a default
 initialized object of type My_Priv is created. My_Priv necessarily will be frozen before that point
 (perhaps only a little bit before). Thus there is no problem with this expression, and it should be
@@ -117,14 +106,22 @@
 <p class="txts">For instance, it might be useful to refer to a subprogram from inside of a
 precondition or postcondition of that subprogram. For instance, one could write:</p>
 
-<a id="t.55ee4410f588316d5a4d0244438db446829406db"></a><a id="t.2"></a><table class="c9"><tr class="c10"><td class="c16">
-<p class="codt"><b>function</b> Factorial (N : <b>in</b> Integer) <b>return</b> Integer<br>
- &nbsp; <b>with</b> Post =&gt; Factorial&#39;Result = Factorial(N-1)*N;</p>
-</td></tr></table><p class="text">&nbsp;</p>
+<p class="codb"><b>function</b> Factorial (N : <b>in</b> Integer) <b>return</b> Integer<br>
+&nbsp; &nbsp;<b>with</b> Post =&gt; Factorial&#39;Result = Factorial(N-1)*N;</p>
+<p class="text">&nbsp;</p>
 <p class="text">We would not want 13.1.1(13.1/5) to make this recursive call illegal. But it would
 if we required the expression to be frozen before the function could be frozen. We don&#39;t need
 that, as any evaluation of Post would necessarily follow a call on Factorial (which already froze
 Factorial).</p>
+<h2 class="head">!corrigendum 13.1.1(13.1/5)</h2>
+<p class="text">@drepl</p>
+<p class="text">An @fa{expression} or @fa{name} that causes freezing of an entity shall not occur
+within an @fa{aspect_specification} that specifies a representation or operational aspect of that
+entity.</p>
+<p class="text">@dby</p>
+<p class="text">If a @fa{name} or @fa{expression} within an @fa{aspect_specification} causes
+freezing when the entity associated with the @fa{aspect_specification} is frozen (see 13.14), that
+@fa{name} or @fa{expression} shall not cause freezing of this associated entity.</p>
 <h2 class="head">!ACATS test</h2>
 
 <p class="txts">Any ACATS B-Tests for this rule should be revised with this change in mind (but
@@ -191,4 +188,4 @@
 <p class="txts">****************************************************************</p>
 
 
-</body></html> 
+</body></html>

Questions? Ask the ACAA Technical Agent