You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<h1>Tactic: <cite>skip</cite><aclass="headerlink" href="#tactic-skip" title="Link to this heading"></a></h1>
87
-
<p>The <cite>skip</cite> tactic applies to program-logic goals where the program(s) under
88
-
consideration are empty. In this situation, program execution performs
89
-
no computation and produces no state changes.</p>
90
-
<p>Applying <cite>skip</cite> eliminates the program component of the goal and reduces
87
+
<p>The <codeclass="docutils literal notranslate"><spanclass="pre">skip</span></code> tactic applies to program-logic goals where the program(s)
88
+
under consideration are empty. In this situation, program execution
89
+
performs no computation and produces no state changes.</p>
90
+
<p>Applying <codeclass="docutils literal notranslate"><spanclass="pre">skip</span></code> eliminates the program component of the goal and reduces
91
91
the proof obligation to a pure logical goal. Concretely, the remaining
92
92
task is to prove that the precondition implies the postcondition.</p>
93
-
<p>The <cite>skip</cite> tactic does not attempt to solve this logical obligation itself.</p>
93
+
<p>The <codeclass="docutils literal notranslate"><spanclass="pre">skip</span></code> tactic does not attempt to solve this logical obligation itself.</p>
<h2><aclass="toc-backref" href="#id1" role="doc-backlink">In Hoare logic</a><aclass="headerlink" href="#in-hoare-logic" title="Link to this heading"></a></h2>
101
+
<sectionid="variant-skip-hoare-logic">
102
+
<h2><aclass="toc-backref" href="#id1" role="doc-backlink">Variant: <codeclass="docutils literal notranslate"><spanclass="pre">skip</span></code> (Hoare logic)</a><aclass="headerlink" href="#variant-skip-hoare-logic" title="Link to this heading"></a></h2>
103
103
104
104
<divclass="proofnav-sphinx">
105
105
<divid="proofnav-0" class="proofnav-mount"></div>
106
106
<scripttype="application/json" id="proofnav-0-data">{"source":"require import AllCore.\n\nmodule M = {\n proc f(x : int) = {\n return x;\n }\n}.\n\npred p : int.\npred q : int.\n\nlemma L : hoare[M.f : p x ==> q res].\nproof.\n proc. skip.\nabort.\n","sentenceEnds":[23,80,95,109,148,155,163,169,176],"sentences":[{"goals":[],"message":""},{"goals":[],"message":""},{"goals":[],"message":"info: added predicate p : int -> bool"},{"goals":[],"message":"info: added predicate q : int -> bool"},{"goals":["Type variables: <none>\n\n------------------------------------------------------------------------\npre = p arg\n\n M.f \n\npost = q res\n"],"message":""},{"goals":["Type variables: <none>\n\n------------------------------------------------------------------------\npre = p arg\n\n M.f \n\npost = q res\n"],"message":""},{"goals":["Type variables: <none>\n\n------------------------------------------------------------------------\nContext : hr: {x : int}\n\npre = p x\n\n\npost = q x\n"],"message":""},{"goals":["Type variables: <none>\n\n------------------------------------------------------------------------\nforall &hr, p x{hr} => q x{hr}\n"],"message":""},{"goals":[],"message":""}],"initialSentence":6,"title":"Hoare logic example"}</script>
107
107
</div>
108
108
</section>
109
-
<sectionid="in-relational-hoare-logic">
110
-
<h2><aclass="toc-backref" href="#id2" role="doc-backlink">In Relational Hoare logic</a><aclass="headerlink" href="#in-relational-hoare-logic" title="Link to this heading"></a></h2>
109
+
<sectionid="variant-skip-relational-hoare-logic">
110
+
<h2><aclass="toc-backref" href="#id2" role="doc-backlink">Variant: <codeclass="docutils literal notranslate"><spanclass="pre">skip</span></code> (Relational Hoare logic)</a><aclass="headerlink" href="#variant-skip-relational-hoare-logic" title="Link to this heading"></a></h2>
111
111
<p>In the relational Hoare logic setting, the <cite>skip`</cite> tactic applies only
112
112
when both programs are empty, in which case it reduces the relational
113
113
judgment to obligations on the preconditions and postconditions alone.</p>
0 commit comments