<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>asat blog</title>
    <link rel="self" type="application/atom+xml" href="https://asat.dk/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://asat.dk"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2024-12-01T00:00:00+00:00</updated>
    <id>https://asat.dk/atom.xml</id>
    <entry xml:lang="en">
        <title>December Adventure 2024</title>
        <published>2024-12-01T00:00:00+00:00</published>
        <updated>2024-12-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Ahmad Sattar Atta
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://asat.dk/december-adventure-2024/"/>
        <id>https://asat.dk/december-adventure-2024/</id>
        
        <content type="html" xml:base="https://asat.dk/december-adventure-2024/">&lt;p&gt;This is my log for December Adventure. I don’t have a clear plan for the contents, we’ll see where it goes :)&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;The December Adventure is low key. The goal is to write a little bit of code every day in December.
&lt;br &#x2F;&gt; –– &lt;a href=&quot;https:&#x2F;&#x2F;eli.li&#x2F;december-adventure&quot;&gt;Eli Mellen&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h1 id=&quot;dec-31&quot;&gt;Dec 31&lt;&#x2F;h1&gt;
&lt;p&gt;Big gap for the update, but I didn’t really touch computers over the vacation. So I’ll finish up with &lt;a href=&quot;https:&#x2F;&#x2F;adventofcode.com&#x2F;2024&#x2F;day&#x2F;23&quot;&gt;AoC 2024 day 23&lt;&#x2F;a&gt; in Prolog. Just part one though :)&lt;&#x2F;p&gt;
&lt;p&gt;The solution is, like the others, quite short:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;prolog&quot; class=&quot;language-prolog z-code&quot;&gt;&lt;code class=&quot;language-prolog&quot; data-lang=&quot;prolog&quot;&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;link&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;-&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;triangle&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;-&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;-&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;k&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;k&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;k&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;@&amp;lt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;@&amp;lt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-fact z-prolog&quot;&gt;starts_with_t&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;[&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;t&lt;&#x2F;span&gt; | &lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt; ]&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-fact z-end z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;t_triangle&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;-&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;-&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;w&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;w&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;w&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;solve1&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Count&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other&quot;&gt;findall&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Triangles&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Triangles&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Count&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;We start out by making the connections bidirectional with the &lt;code&gt;link&lt;&#x2F;code&gt; predicate. We then provide the triangle query to find all groups of three computers – to prevent getting duplicates, we establish an ordering for the nodes.&lt;&#x2F;p&gt;
&lt;p&gt;From these found triangles, we filter out any groups that don’t contain a &lt;code&gt;t&lt;&#x2F;code&gt; as the first letter. Solving is then simply counting these &lt;code&gt;t_triangle&lt;&#x2F;code&gt;s.&lt;&#x2F;p&gt;
&lt;p&gt;I ran into some problems with the &lt;code&gt;t_triangle&lt;&#x2F;code&gt; predicate producing too many results; the key was &lt;code&gt;once&lt;&#x2F;code&gt; to ensure we stop early.&lt;&#x2F;p&gt;
&lt;p&gt;These small exercises have really taught me a lot of Prolog, really neat!&lt;&#x2F;p&gt;
&lt;p&gt;That’s all, thanks!&lt;&#x2F;p&gt;
&lt;h1 id=&quot;dec-17-18&quot;&gt;Dec 17 &amp;amp; 18&lt;&#x2F;h1&gt;
&lt;p&gt;I did &lt;a href=&quot;https:&#x2F;&#x2F;adventofcode.com&#x2F;2024&#x2F;day&#x2F;17&quot;&gt;AoC 2024 day 17&lt;&#x2F;a&gt; across two days, but didn’t get to finish part 2 of it. I didn’t bother brute forcing. Also I skipped parsing anything as the inputs were so small&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;prolog&quot; class=&quot;language-prolog z-code&quot;&gt;&lt;code class=&quot;language-prolog&quot; data-lang=&quot;prolog&quot;&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;lists&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-fact z-prolog&quot;&gt;load_program&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;short&lt;&#x2F;span&gt;, vm_state(&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;729&lt;&#x2F;span&gt;,&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;,&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;], [&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;,&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;1&lt;&#x2F;span&gt;,&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;5&lt;&#x2F;span&gt;,&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;4&lt;&#x2F;span&gt;,&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;3&lt;&#x2F;span&gt;,&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;], &lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-fact z-end z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;solve1&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Program&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Program&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;State&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;State&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;op_operand&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;), &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Operand&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;OperandIdx&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;1&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;0&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;0&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;OperandIdx&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Operand&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-cut z-prolog&quot;&gt;!&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;run&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;State&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;State&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Operand&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;x&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Operand&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;State&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextState&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextState&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-cut z-prolog&quot;&gt;!&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;run&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;vm_state(&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;write&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other&quot;&gt;nl&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;get_value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;4&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-fact z-prolog&quot;&gt;get_value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;4&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-fact z-end z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-fact z-prolog&quot;&gt;get_value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;5&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-fact z-end z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-fact z-prolog&quot;&gt;get_value&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;6&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-fact z-end z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-comment z-line z-percent-sign z-prolog&quot;&gt;% adv&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;execute&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;, vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;), vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NewA&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;v&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Val&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NewA&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Val&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-comment z-line z-percent-sign z-prolog&quot;&gt;% bxl&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;execute&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;1&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;, vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;), vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NewB&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NewB&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;xor&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-comment z-line z-percent-sign z-prolog&quot;&gt;% bst&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;execute&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;2&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;, vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;), vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NewB&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;v&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Val&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NewB&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Val&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;mod&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;8&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-comment z-line z-percent-sign z-prolog&quot;&gt;% jnz&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;execute&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;3&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Target&lt;&#x2F;span&gt;, vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;), vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;\=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-keyword z-control z-if z-prolog&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Target&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-else z-prolog&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-comment z-line z-percent-sign z-prolog&quot;&gt;% bxc&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;execute&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;4&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;, vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;), vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NewB&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NewB&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;xor&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-comment z-line z-percent-sign z-prolog&quot;&gt;% out&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;execute&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;5&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;, vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Regs&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;), vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Regs&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NewOut&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;v&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Regs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Val&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Value&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Val&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;mod&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;8&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-keyword z-control z-if z-prolog&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NewOut&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Value&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-else z-prolog&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Value&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NewOut&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-comment z-line z-percent-sign z-prolog&quot;&gt;% bdv&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;execute&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;6&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;, vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;), vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NewB&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;v&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Val&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NewB&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Val&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-comment z-line z-percent-sign z-prolog&quot;&gt;% cdv&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;execute&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;7&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;, vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;), vm_state(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NewC&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Mem&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Out&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NextIP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;IP&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;v&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Op&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Val&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NewC&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Val&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This all works pretty well. The VM is initialized by the atom of load_program, so we solve by running &lt;code&gt;solve1(short)&lt;&#x2F;code&gt;.
I made sure to use the &lt;code&gt;#=&#x2F;2&lt;&#x2F;code&gt; operator from &lt;code&gt;clpz&lt;&#x2F;code&gt; for all assignments since I was hoping for part 2 that I could use constraint solving to find the register &lt;code&gt;A&lt;&#x2F;code&gt; for part 2.&lt;&#x2F;p&gt;
&lt;p&gt;That didn’t really work - at least not well enough!&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;prolog&quot; class=&quot;language-prolog z-code&quot;&gt;&lt;code class=&quot;language-prolog&quot; data-lang=&quot;prolog&quot;&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;solve2&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Program&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;3&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;5&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;4&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;3&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;in&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;1&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;.10000000000,
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;  &lt;span class=&quot;z-entity z-name z-function z-fact z-prolog&quot;&gt;A&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;mod&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;8&lt;&#x2F;span&gt; #= &lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;,
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;  &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;State&lt;&#x2F;span&gt; = vm_state(&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;, [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;,&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;], &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Program&lt;&#x2F;span&gt;, &lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;),
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;  run(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;State&lt;&#x2F;span&gt;),
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;  vm_state(&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Program&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Program&lt;&#x2F;span&gt;) = &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;State&lt;&#x2F;span&gt;,
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;  labeling([min(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;)], [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;]&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-fact z-end z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;I don’t really want to invest too much time into this, but I think this sort of thing is perfect for &lt;code&gt;clpz&lt;&#x2F;code&gt;, SMT solvers or even symbolic execution.
After this not going as expected, I saw some people did something similar in Prolog too, but I don’t plan on just copying it entirely :)&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;adri326&#x2F;aoc-2024&#x2F;blob&#x2F;edb80471ae5f081d37734abaccf76bf134e0e8e4&#x2F;src&#x2F;day17.pro&quot;&gt;Here’s the solution&lt;&#x2F;a&gt; that uses constraint solving. They add “fuel” for limiting computation and “residuals” which consist of all intermediate registers. Clever!&lt;&#x2F;p&gt;
&lt;p&gt;Edit: I ran the code linked above - it immediately solves in SWI-Prolog, but not in Scryer! Perhaps my original code would have worked in SWI?&lt;&#x2F;p&gt;
&lt;h1 id=&quot;dec-14&quot;&gt;Dec 14&lt;&#x2F;h1&gt;
&lt;p&gt;Didn’t expect to have this much fun with AoC. Did &lt;a href=&quot;https:&#x2F;&#x2F;adventofcode.com&#x2F;2024&#x2F;day&#x2F;14&quot;&gt;2024 day 14&lt;&#x2F;a&gt; today. Again in Prolog because it hasn’t let me down yet.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;prolog&quot; class=&quot;language-prolog z-code&quot;&gt;&lt;code class=&quot;language-prolog&quot; data-lang=&quot;prolog&quot;&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;final_pos&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;robot(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Q&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;VX&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;VY&lt;&#x2F;span&gt;), &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Width&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Height&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;T&lt;&#x2F;span&gt;, pos(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;VX&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;*&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;T&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;mod&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Width&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Width&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;mod&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Width&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Q&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;VY&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;*&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;T&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;mod&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Height&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Height&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;mod&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Height&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;in_quad&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidW&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidH&lt;&#x2F;span&gt;, &lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;1&lt;&#x2F;span&gt;, pos(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidW&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidH&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;in_quad&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidW&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidH&lt;&#x2F;span&gt;, &lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;2&lt;&#x2F;span&gt;, pos(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidW&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidH&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;in_quad&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidW&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidH&lt;&#x2F;span&gt;, &lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;3&lt;&#x2F;span&gt;, pos(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidW&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidH&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;in_quad&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidW&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidH&lt;&#x2F;span&gt;, &lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;4&lt;&#x2F;span&gt;, pos(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidW&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidH&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;step_safety_factor&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;SafetyFactor&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Time&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Width&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Height&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Robots&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other&quot;&gt;findall&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;R&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Robots&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;R&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Width&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Height&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Time&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Positions&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidW&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Width&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidH&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Height&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other&quot;&gt;findall&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Positions&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;q&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidW&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidH&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;1&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Q1&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Q1&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C1&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other&quot;&gt;findall&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Positions&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;q&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidW&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidH&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Q2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Q2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other&quot;&gt;findall&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Positions&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;q&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidW&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidH&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;3&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Q3&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Q3&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C3&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other&quot;&gt;findall&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Positions&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;q&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidW&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MidH&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;4&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Q4&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Q4&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C4&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;SafetyFactor&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C1&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;*&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;*&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C3&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;*&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;C4&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;solve1&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Answer&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Answer&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;100&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;101&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;103&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;We start out by defining how to calculate the safety product. We do this by:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Calculating a position for every robot at an offset of &lt;code&gt;T&lt;&#x2F;code&gt; (time)&lt;&#x2F;li&gt;
&lt;li&gt;Counting the number of robots in each quadrant given placement relative to the middle, e.g., for quadrant 1, &lt;code&gt;X&lt;&#x2F;code&gt; must be in the left-top quadrant&lt;&#x2F;li&gt;
&lt;li&gt;Calculating safety factor by finding the product of the quadrant counts&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The answer is simply just going 100 time steps ahead on a board that is 101x103 tiles.&lt;&#x2F;p&gt;
&lt;p&gt;I didn’t like part 2 that much. I didn’t really know what this tree was going to look like, so I tried a couple of different things. I ended up consulting other solutions to find a way to do it without too much hassle (i.e., brute force).
I simply find the first time step that provides a unique configuration of positions. It’s &lt;em&gt;very&lt;&#x2F;em&gt; inefficient in Prolog to do it this way.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;prolog&quot; class=&quot;language-prolog z-code&quot;&gt;&lt;code class=&quot;language-prolog&quot; data-lang=&quot;prolog&quot;&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;between&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;solve2&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Answer&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;w&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;1&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;10000&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;T&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Robots&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other&quot;&gt;findall&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Pos&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;R&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Robots&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;R&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;101&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;103&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;T&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Pos&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;*&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;103&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Positions&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Positions&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Answer&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;T&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-cut z-prolog&quot;&gt;!&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;It takes a while to find the result. I was hoping that &lt;code&gt;clpz&lt;&#x2F;code&gt; might be of use here, but modeling the problem with &lt;code&gt;T&lt;&#x2F;code&gt; being a finite domain doesn’t help at all since we still have to enumerate all time steps one by one with this technique.&lt;&#x2F;p&gt;
&lt;p&gt;Would like to see a nicer way! Also, parsing is getting nicer. I found out about the &lt;code&gt;|&lt;&#x2F;code&gt; alternative syntax which I didn’t see in the documentation before.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;prolog&quot; class=&quot;language-prolog z-code&quot;&gt;&lt;code class=&quot;language-prolog&quot; data-lang=&quot;prolog&quot;&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;dcgs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;charsio&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;pio&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;load_input&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;File&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;input&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;File&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-cut z-prolog&quot;&gt;!&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;input&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Rs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;z&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Rs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;robots&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;[&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;R&lt;&#x2F;span&gt;|&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Rs&lt;&#x2F;span&gt;]&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;R&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;white&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Rs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;|&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;R&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Rs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;|&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;R&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Rs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;robot&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;robot(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;VX&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;VY&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-prolog&quot;&gt;&amp;quot;p=&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-prolog&quot;&gt;&amp;quot;,&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-prolog&quot;&gt;&amp;quot; v=&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;VX&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-prolog&quot;&gt;&amp;quot;,&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;VY&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;number&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-prolog&quot;&gt;&amp;quot;-&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ds&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;N1&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ds&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;N1&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;|&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ds&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ds&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;digits&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;[&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;|&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ds&lt;&#x2F;span&gt;]&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;decimal_digit&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ds&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;|&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;decimal_digit&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ds&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;white&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;W&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;W&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;whitespace&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;white&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;|&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;dec-13&quot;&gt;Dec 13&lt;&#x2F;h1&gt;
&lt;p&gt;Wanted to do another AoC in Prolog today, &lt;a href=&quot;https:&#x2F;&#x2F;adventofcode.com&#x2F;2024&#x2F;day&#x2F;13&quot;&gt;2024 day 13&lt;&#x2F;a&gt;. It seemed like an integer constraint problem, which is easily done with CLP(ℤ).&lt;&#x2F;p&gt;
&lt;p&gt;It was surprisingly easy again today&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;prolog&quot; class=&quot;language-prolog z-code&quot;&gt;&lt;code class=&quot;language-prolog&quot; data-lang=&quot;prolog&quot;&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;lists&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;constraint&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;config((&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;AX&lt;&#x2F;span&gt;-&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;AY&lt;&#x2F;span&gt;),(&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;BX&lt;&#x2F;span&gt;-&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;BY&lt;&#x2F;span&gt;), (&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;PX&lt;&#x2F;span&gt;-&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;PY&lt;&#x2F;span&gt;)), &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Offset&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Solution&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NA&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;\&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NB&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Offset&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;==&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NA&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;100&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;\&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NB&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;100&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NA&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;*&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;AX&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NB&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;*&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;BX&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;PX&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Offset&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NA&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;*&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;AY&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NB&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;*&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;BY&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;PY&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Offset&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MinCost&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;#&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;=&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NA&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;*&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;3&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NB&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;*&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;1&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MinCost&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NA&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;NB&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Solution&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt; is &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;MinCost&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;solve_sum&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Offset&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Sum&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other&quot;&gt;findall&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Cost&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;P&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Offset&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Cost&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Costs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Costs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Sum&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;solve1&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Sum&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;v&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;0&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Sum&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;solve2&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Sum&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;v&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;10000000000000&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Sum&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;That’s the solution for both problems! We just define the constraints of the problem:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Number of A presses and number of B presses must be greater than or equal to 0&lt;&#x2F;li&gt;
&lt;li&gt;If there is no offset, we also limit the number of presses to 100 for both buttons&lt;&#x2F;li&gt;
&lt;li&gt;Set up the equations to calculate number of presses&lt;&#x2F;li&gt;
&lt;li&gt;Use the &lt;code&gt;labeling&lt;&#x2F;code&gt; predicate to minimize the cost, where the cost is 3 for button A and 1 for button B&lt;&#x2F;li&gt;
&lt;li&gt;For each configuration, find the minimum cost and sum them over&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Extremely satisfying that so much work is handled by so little code.&lt;&#x2F;p&gt;
&lt;p&gt;And parsing input:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;prolog&quot; class=&quot;language-prolog z-code&quot;&gt;&lt;code class=&quot;language-prolog&quot; data-lang=&quot;prolog&quot;&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;dcgs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;charsio&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;pio&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;load_input&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;File&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;input&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;File&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-cut z-prolog&quot;&gt;!&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;input&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;sections&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;sections&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;section&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;white&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;sections&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;sections&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;section&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;AX&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;AY&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;white&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;BX&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;BY&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;white&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;z&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;PX&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;PY&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;z&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;AX&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;AY&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;BX&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;BY&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;PX&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;PY&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;button_a_line&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-string z-quoted z-double z-prolog&quot;&gt;&amp;quot;Button A: X+&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-prolog&quot;&gt;&amp;quot;, Y+&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;button_b_line&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-string z-quoted z-double z-prolog&quot;&gt;&amp;quot;Button B: X+&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-prolog&quot;&gt;&amp;quot;, Y+&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;prize_line&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-string z-quoted z-double z-prolog&quot;&gt;&amp;quot;Prize: X=&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;X&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-prolog&quot;&gt;&amp;quot;, Y=&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;number&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ds&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ds&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;digits&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;[&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;|&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ds&lt;&#x2F;span&gt;]&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;decimal_digit&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ds&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;digits&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;[&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;]&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;decimal_digit&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;white&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;W&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;W&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;whitespace&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;white&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;white&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Very similar to yesterday, DCGs are making more sense now, but still sort of strange. By the way, the &lt;code&gt;AX-AY&lt;&#x2F;code&gt; is syntax for pairs.&lt;&#x2F;p&gt;
&lt;p&gt;Prolog bonus:&lt;&#x2F;p&gt;
&lt;p&gt;Since the solution is defined in terms of CLP(ℤ), we can use the definitions to &lt;em&gt;generate problems&lt;&#x2F;em&gt;. For example, generating all problems where the minimum cost is 220:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;prolog&quot; class=&quot;language-prolog z-code&quot;&gt;&lt;code class=&quot;language-prolog&quot; data-lang=&quot;prolog&quot;&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;?- constraint(config((AX-AY),(BX-BY), (PX-PY)), 0, 220).
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;   &lt;span class=&quot;z-entity z-name z-function z-fact z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;40&lt;&#x2F;span&gt;*&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;AX&lt;&#x2F;span&gt;#=&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;A), &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;A+&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;B#=&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;PX&lt;&#x2F;span&gt;), &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;100&lt;&#x2F;span&gt;*&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;BX&lt;&#x2F;span&gt;#=&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;B), &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;40&lt;&#x2F;span&gt;*&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;AY&lt;&#x2F;span&gt;#=&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;C), &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;C+&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;D#=&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;PY&lt;&#x2F;span&gt;), &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;100&lt;&#x2F;span&gt;*&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;BY&lt;&#x2F;span&gt;#=&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;D)
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;;  &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;41&lt;&#x2F;span&gt;*&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;AX&lt;&#x2F;span&gt;#=&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;A), &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;A+&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;B#=&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;PX&lt;&#x2F;span&gt;), &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;97&lt;&#x2F;span&gt;*&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;BX&lt;&#x2F;span&gt;#=&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;B), &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;41&lt;&#x2F;span&gt;*&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;AY&lt;&#x2F;span&gt;#=&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;C), &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;C+&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;D#=&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;PY&lt;&#x2F;span&gt;), &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;97&lt;&#x2F;span&gt;*&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;BY&lt;&#x2F;span&gt;#=&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;D)
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;;  &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;42&lt;&#x2F;span&gt;*&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;AX&lt;&#x2F;span&gt;#=&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;A), &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;A+&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;B#=&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;PX&lt;&#x2F;span&gt;), &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;94&lt;&#x2F;span&gt;*&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;BX&lt;&#x2F;span&gt;#=&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;B), &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;42&lt;&#x2F;span&gt;*&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;AY&lt;&#x2F;span&gt;#=&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;C), &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;C+&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;D#=&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;PY&lt;&#x2F;span&gt;), &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;clpz&lt;&#x2F;span&gt;:(&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;94&lt;&#x2F;span&gt;*&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;BY&lt;&#x2F;span&gt;#=&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;D)
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;;  &lt;span class=&quot;z-keyword z-control z-fact z-end z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;.. .
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;By unbinding the Solution (220), we can even go through all solutions for all minimum costs. That’s amazing!&lt;&#x2F;p&gt;
&lt;h1 id=&quot;dec-12&quot;&gt;Dec 12&lt;&#x2F;h1&gt;
&lt;p&gt;I did &lt;a href=&quot;https:&#x2F;&#x2F;adventofcode.com&#x2F;2024&#x2F;day&#x2F;5&quot;&gt;AoC 2024 day 5&lt;&#x2F;a&gt; today. This time in (Scryer) Prolog since the ordering part of the problem seemed like a database of facts and checking the pages seemed like querying the database.&lt;&#x2F;p&gt;
&lt;p&gt;I sat down and solved the ordering first, which was very simple without the parsing!&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;prolog&quot; class=&quot;language-prolog z-code&quot;&gt;&lt;code class=&quot;language-prolog&quot; data-lang=&quot;prolog&quot;&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;lists&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;middle_item&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;List&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Middle&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;List&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Length&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Position&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt; is &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Length&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;2&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;0&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Position&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;List&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Middle&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;in_order&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;[&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;|&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Xs&lt;&#x2F;span&gt;]&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;|&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Xs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-fact z-prolog&quot;&gt;in_order&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;[&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;]&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-fact z-end z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-fact z-prolog&quot;&gt;in_order&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-fact z-end z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;solve1&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Sum&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other&quot;&gt;findall&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Xs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Xs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Xs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;OrderedLists&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;middle_item&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;OrderedLists&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Middles&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Middles&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Sum&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This assumes facts in the shape &lt;code&gt;page_order(X,Y)&lt;&#x2F;code&gt; for all the page orderings, and &lt;code&gt;pages([_])&lt;&#x2F;code&gt; for page numbers.
The predicate &lt;code&gt;in_order&lt;&#x2F;code&gt; works by checking elements of page numbers per update, recursively making sure that each pair of numbers satisfies a &lt;code&gt;page_order&lt;&#x2F;code&gt; to be considered “in order”.
Solving puzzle one is all about filtering for &lt;code&gt;pages&#x2F;1&lt;&#x2F;code&gt; that are &lt;code&gt;in_order&#x2F;1&lt;&#x2F;code&gt; and extracting the middle element of those for summation - here we use the stdlib for lists.&lt;&#x2F;p&gt;
&lt;p&gt;For the second part, we have to fix unordered page numbers. We can apply the same utilities and use a helper:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;prolog&quot; class=&quot;language-prolog z-code&quot;&gt;&lt;code class=&quot;language-prolog&quot; data-lang=&quot;prolog&quot;&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;fix_list&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;List&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Result&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-percent-sign z-prolog&quot;&gt;% If we can fix&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;x&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;List&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Fixed&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-keyword z-control z-if z-prolog&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-if z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-percent-sign z-prolog&quot;&gt;% Keep fixing recursively&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;    &lt;span class=&quot;z-entity z-name z-function z-fact z-prolog&quot;&gt;fix_list&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Fixed&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Result&lt;&#x2F;span&gt;)
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;  % &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Otherwise&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;we&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;have&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;hit&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;a&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;fixpoint&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;  ; &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Result&lt;&#x2F;span&gt; = &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;List&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-fact z-end z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;fix_pair&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;[&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;|&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Rest&lt;&#x2F;span&gt;], [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;,&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;|&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Rest&lt;&#x2F;span&gt;]&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-cut z-prolog&quot;&gt;!&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;fix_pair&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;[&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;|&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Rest&lt;&#x2F;span&gt;], [&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;|&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Fixed&lt;&#x2F;span&gt;]&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;x&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Rest&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Fixed&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;solve2&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Sum&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other&quot;&gt;findall&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Xs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Xs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-prolog&quot;&gt;\+&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Xs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;UnorderedLists&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;fix_list&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;UnorderedLists&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;OrderedLists&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;middle_item&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;OrderedLists&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Middles&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-if z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Middles&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Sum&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The structure is somewhat similar - we filter &lt;code&gt;pages&#x2F;1&lt;&#x2F;code&gt; for all facts that are &lt;em&gt;not&lt;&#x2F;em&gt; &lt;code&gt;in_order&#x2F;1&lt;&#x2F;code&gt;, then fix the list by making pairwise swaps (using the &lt;code&gt;fix_list&#x2F;2&lt;&#x2F;code&gt; predicate)
and finish off with the same middle-item sum of the fixed ordered lists.&lt;&#x2F;p&gt;
&lt;p&gt;There was some tinkering with &lt;code&gt;fix_list&lt;&#x2F;code&gt; to get it to work properly. We just want to keep trying to swap until we see that the list of page numbers is unchanged.
The actual swapping itself is quite simple: given input &lt;code&gt;[A,B|Rest]&lt;&#x2F;code&gt;, if it is not in order, swap the items in the result. If the items are in order, we recurse.&lt;&#x2F;p&gt;
&lt;p&gt;That was very short and concise! But we also have to consider parsing the input to the puzzle. This is done with DCGs (Definite Clause Grammars).&lt;&#x2F;p&gt;
&lt;p&gt;It looks pretty wild, but if you squint at it hard enough it looks similar to a BNF grammar.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;prolog&quot; class=&quot;language-prolog z-code&quot;&gt;&lt;code class=&quot;language-prolog&quot; data-lang=&quot;prolog&quot;&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;dcgs&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;charsio&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;:-&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;span class=&quot;z-keyword z-other&quot;&gt;use_module&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;pio&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-clause z-prolog&quot;&gt;load_input&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;File&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-clause z-bodybegin z-prolog&quot;&gt;:-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-percent-sign z-prolog&quot;&gt;% Useful for multiple runs of different files&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-language z-anonymous z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;f&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;input&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;File&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-clause z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-cut z-prolog&quot;&gt;!&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-clause z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;input&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;white&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;orderings&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;white&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;pages_lists&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;orderings&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;order&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;white&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;orderings&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;orderings&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;order&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-prolog&quot;&gt;&amp;quot;|&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-prolog&quot;&gt;&amp;quot;\n&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;z&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;A&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;B&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;pages_lists&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;pages_list&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;white&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;pages_lists&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;pages_lists&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;pages_list&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ns&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-prolog&quot;&gt;&amp;quot;\n&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;z&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;|&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ns&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;numbers&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;[&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;N&lt;&#x2F;span&gt;|&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ns&lt;&#x2F;span&gt;]&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-string z-quoted z-double z-prolog&quot;&gt;&amp;quot;,&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ns&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;numbers&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;number&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ds&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;u&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;b&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;N&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ds&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;digits&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;[&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;|&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ds&lt;&#x2F;span&gt;]&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;decimal_digit&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;d&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;g&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;i&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;s&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Ds&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;digits&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-parameters z-begin&quot;&gt;(&lt;&#x2F;span&gt;[&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;]&lt;span class=&quot;z-punctuation z-definition z-parameters z-end&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;D&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;decimal_digit&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;white&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;W&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;]&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;{&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;c&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;h&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;a&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;_&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;y&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;p&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;e&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;W&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;whitespace&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;}&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt;,&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-atom z-simple z-prolog&quot;&gt;white&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-dcg z-head z-prolog&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-dcg z-prolog&quot;&gt;white&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-dcg z-bodybegin z-prolog&quot;&gt;--&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-dcg z-body z-prolog&quot;&gt; &lt;span class=&quot;z-constant z-other z-atom z-emptylist z-prolog&quot;&gt;[]&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-dcg z-bodyend z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;We use &lt;code&gt;char_type&#x2F;2&lt;&#x2F;code&gt; from the &lt;code&gt;charsio&lt;&#x2F;code&gt; library to categorize the input we see and &lt;code&gt;assertz&lt;&#x2F;code&gt; any new facts as we parse the input, ignoring any whitespace.
I didn’t find an easier way to parse the digits. It still feels kind of foreign for me to use. &lt;a href=&quot;https:&#x2F;&#x2F;www.metalevel.at&#x2F;prolog&#x2F;dcg&quot;&gt;Markus Triska’s online prolog resource&lt;&#x2F;a&gt; is a great place to find info on this stuff.&lt;&#x2F;p&gt;
&lt;p&gt;Putting this together, we can run the following in the REPL to solve&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;prolog&quot; class=&quot;language-prolog z-code&quot;&gt;&lt;code class=&quot;language-prolog&quot; data-lang=&quot;prolog&quot;&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;?- load_input(&amp;#39;input&#x2F;day05&amp;#39;), solve1(Sum1), solve2(Sum2).
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-prolog&quot;&gt;&lt;span class=&quot;z-meta z-fact z-prolog&quot;&gt;   &lt;span class=&quot;z-entity z-name z-function z-fact z-prolog&quot;&gt;Sum1&lt;&#x2F;span&gt; = &lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;5639&lt;&#x2F;span&gt;, &lt;span class=&quot;z-variable z-parameter z-uppercase z-prolog&quot;&gt;Sum2&lt;&#x2F;span&gt; = &lt;span class=&quot;z-constant z-numeric z-integer z-prolog&quot;&gt;5273&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-control z-fact z-end z-prolog&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;dec-11&quot;&gt;Dec 11&lt;&#x2F;h1&gt;
&lt;p&gt;A bit of a break from writing, but today I did day 3 of AoC in Roc, which was fun!&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;elm&quot; class=&quot;language-elm z-code&quot;&gt;&lt;code class=&quot;language-elm&quot; data-lang=&quot;elm&quot;&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-elm&quot;&gt;parseJunk &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;=&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;const &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Err&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;|&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;skip &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-elm&quot;&gt;String&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;anyCodeunit&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;|&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;skip &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;chompWhile &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;\&lt;&#x2F;span&gt;b &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; b &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;!=&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-quoted z-single z-elm&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-elm&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;m&amp;#39;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;&amp;amp;&amp;amp;&lt;&#x2F;span&gt; b &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;!=&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-quoted z-single z-elm&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-elm&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;d&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-elm&quot;&gt;parseMul &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;=&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;const &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;\&lt;&#x2F;span&gt;x &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;\&lt;&#x2F;span&gt;y &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Ok&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Mul&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; x&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; y &lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;|&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;skip &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-elm&quot;&gt;String&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;string &lt;span class=&quot;z-string z-quoted z-double z-elm&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-elm&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;mul(&lt;span class=&quot;z-punctuation z-definition z-string z-end z-elm&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;|&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;keep &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;String&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;digits
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;|&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;skip &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-elm&quot;&gt;String&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;string &lt;span class=&quot;z-string z-quoted z-double z-elm&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-elm&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;,&lt;span class=&quot;z-punctuation z-definition z-string z-end z-elm&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;|&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;keep &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;String&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;digits
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;|&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;skip &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-elm&quot;&gt;String&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;string &lt;span class=&quot;z-string z-quoted z-double z-elm&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-elm&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;)&lt;span class=&quot;z-punctuation z-definition z-string z-end z-elm&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-elm&quot;&gt;parseDo &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;=&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;const &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Ok&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Do&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;|&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;skip &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-elm&quot;&gt;String&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;string &lt;span class=&quot;z-string z-quoted z-double z-elm&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-elm&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;do()&lt;span class=&quot;z-punctuation z-definition z-string z-end z-elm&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-elm&quot;&gt;parseDont &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;=&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;const &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Ok&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Dont&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;|&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;skip &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-other z-elm&quot;&gt;String&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;string &lt;span class=&quot;z-string z-quoted z-double z-elm&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-elm&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;don&amp;#39;t()&lt;span class=&quot;z-punctuation z-definition z-string z-end z-elm&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-elm&quot;&gt;parseInput &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;oneOf &lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;[&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;parseMul&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; parseDo&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; parseDont&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; parseJunk&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;|&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Parser&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;many
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-elm&quot;&gt;calcPart1 &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;\&lt;&#x2F;span&gt;vals &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;List&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;keepOks vals &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;\&lt;&#x2F;span&gt;x &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; x&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;|&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;List&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;walk
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;        &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-elm&quot;&gt;0&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; true&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;        &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;\&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;acc&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; should&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; current &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;            when current is
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;                &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Mul&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; x&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; y &lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;acc &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;+&lt;&#x2F;span&gt; x &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;*&lt;&#x2F;span&gt; y&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; should&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;                _ &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;acc&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; should&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;        &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-elm&quot;&gt;calcPart2 &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;\&lt;&#x2F;span&gt;vals &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;List&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;keepOks vals &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;\&lt;&#x2F;span&gt;x &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; x&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;    &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;|&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;List&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;.&lt;&#x2F;span&gt;walk
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;        &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-elm&quot;&gt;0&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; true&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;        &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;\&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;acc&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; should&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; current &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;            when current is
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;                &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Mul&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; x&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; y &lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;acc &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;+&lt;&#x2F;span&gt; x &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;*&lt;&#x2F;span&gt; y&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; should&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;                &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Do&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;acc&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; true&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;                &lt;span class=&quot;z-constant z-other z-elm&quot;&gt;Dont&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;acc&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; false&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;                _ &lt;span class=&quot;z-keyword z-operator z-elm&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;(&lt;&#x2F;span&gt;acc&lt;span class=&quot;z-constant z-language z-delimiter z-elm&quot;&gt;&lt;span class=&quot;z-support z-function z-delimiter z-elm&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; should&lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-elm&quot;&gt;        &lt;span class=&quot;z-keyword z-other z-parenthesis z-elm&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The language is pretty nice considering how WIP it is. Some parts of the dev experience is a little rough but overall it is quite nice!&lt;&#x2F;p&gt;
&lt;h1 id=&quot;dec-08&quot;&gt;Dec 08&lt;&#x2F;h1&gt;
&lt;p&gt;Continuing from yesterday, I completed the compilation and execution steps and solved the simple part of the correctness proof.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;lean&quot; class=&quot;language-lean z-code&quot;&gt;&lt;code class=&quot;language-lean&quot; data-lang=&quot;lean&quot;&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-comment z-line z-double-dash z-lean&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-lean&quot;&gt;--&lt;&#x2F;span&gt; From the lean book&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;inductive&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;Vect&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;(α : &lt;span class=&quot;z-storage z-type z-lean&quot;&gt;Type&lt;&#x2F;span&gt; u) : {_ : Nat} -&amp;gt; &lt;span class=&quot;z-storage z-type z-lean&quot;&gt;Type&lt;&#x2F;span&gt; u &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;where&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;   | nil : @Vect α &lt;span class=&quot;z-constant z-numeric z-lean&quot;&gt;0&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;   | cons : α → @Vect α n → @Vect α (n + &lt;span class=&quot;z-constant z-numeric z-lean&quot;&gt;1&lt;&#x2F;span&gt;)
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;   &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;deriving&lt;&#x2F;span&gt; Repr
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;def&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;stack&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;(n: Nat) := @Vect Int n
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;def&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;empty_stack&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;: stack &lt;span class=&quot;z-constant z-numeric z-lean&quot;&gt;0&lt;&#x2F;span&gt; := @Vect.nil Int
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-control z-definition z-modifier z-lean&quot;&gt;mutual&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  &lt;span class=&quot;z-comment z-line z-double-dash z-lean&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-lean&quot;&gt;--&lt;&#x2F;span&gt; The nats here track number of ints on the stack.&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  &lt;span class=&quot;z-comment z-line z-double-dash z-lean&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-lean&quot;&gt;--&lt;&#x2F;span&gt; Since we don&amp;#39;t have heterogeneous stacks, we can do this.&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  &lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;inductive&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;Op&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;: (s: Nat) → (s&amp;#39;: Nat) → &lt;span class=&quot;z-storage z-type z-lean&quot;&gt;Type&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | PUSH : Int → Op s (Nat.succ s)
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | ADD : Op (Nat.succ (Nat.succ s)) (Nat.succ s)
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | EQ: Op (Nat.succ (Nat.succ s)) (Nat.succ s)
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | IF : Code s s&amp;#39; → Code s s&amp;#39; → Op (Nat.succ s) s&amp;#39;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;deriving&lt;&#x2F;span&gt; Repr
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  &lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;inductive&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;Code&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;: (s: Nat) → (s&amp;#39;: Nat) → &lt;span class=&quot;z-storage z-type z-lean&quot;&gt;Type&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;where&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | nil : Code s s
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | cons : Op s s&amp;#39; → Code s&amp;#39; s&amp;#39;&amp;#39; → Code s s&amp;#39;&amp;#39;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;deriving&lt;&#x2F;span&gt; Repr
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;end&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-control z-definition z-modifier z-lean&quot;&gt;mutual&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  &lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;def&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;exec_op&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;{s s&amp;#39; : Nat} (c: Op s s&amp;#39;) (st : stack s): stack s&amp;#39; :=
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;match&lt;&#x2F;span&gt; c, st &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;with&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | Op.PUSH n, st =&amp;gt; Vect.cons n st
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | Op.IF c1 c2, Vect.cons b st =&amp;gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;      &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;if&lt;&#x2F;span&gt; intToBool b &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;then&lt;&#x2F;span&gt; exec c1 st &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;else&lt;&#x2F;span&gt; exec c2 st
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | Op.ADD, Vect.cons e1 (Vect.cons e2 st) =&amp;gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;      Vect.cons (e1 + e2) st
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | Op.EQ, Vect.cons e1 (Vect.cons e2 st) =&amp;gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;      Vect.cons ((e1 == e2).toNat) st
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  &lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;def&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;exec&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;{s s&amp;#39; : Nat} (c: Code s s&amp;#39;) (st : stack s): stack s&amp;#39; :=
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;match&lt;&#x2F;span&gt; c &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;with&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | Code.nil =&amp;gt; st
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | Code.cons op c&amp;#39; =&amp;gt; exec c&amp;#39; (exec_op op st)
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;end&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;def&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;append&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;{s s&amp;#39; s&amp;#39;&amp;#39; : Nat} : Code s s&amp;#39; → Code s&amp;#39; s&amp;#39;&amp;#39; → Code s s&amp;#39;&amp;#39;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;| Code.nil, c =&amp;gt; c
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;| Code.cons x xs, c =&amp;gt; Code.cons x (append xs c)
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;def&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;compile&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;: Exp → Code n (Nat.succ n)
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;| Exp.val_exp v =&amp;gt; Code.cons (Op.PUSH v) Code.nil
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;| Exp.plus_exp e1 e2 =&amp;gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    append (compile e1)
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;          (append (compile e2)
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;                 (Code.cons Op.ADD Code.nil))
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;| Exp.comp_exp e1 e2 =&amp;gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    append (compile e1)
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;          (append (compile e2)
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;                 (Code.cons Op.EQ Code.nil))
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;| Exp.if_exp b e1 e2 =&amp;gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    append (compile b)
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;          (Code.cons (Op.IF (compile e1) (compile e2)) Code.nil)
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-command z-lean&quot;&gt;#eval&lt;&#x2F;span&gt; exec (compile some_simple_exp) empty_stack
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;theorem&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;exec_compile_eval_correct&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;{n : Nat} (e : Exp) (s : stack n) :
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  exec (compile e) s = Vect.cons (eval e) s := &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;by&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    induction e  &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;with&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | val_exp v =&amp;gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;      simp [compile, exec, exec_op]
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;      rfl
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | plus_exp e1 e2 ih1 ih2 =&amp;gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;      &lt;span class=&quot;z-invalid z-illegal z-lean&quot;&gt;sorry&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | comp_exp e1 e2 ih1 ih2 =&amp;gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;      &lt;span class=&quot;z-invalid z-illegal z-lean&quot;&gt;sorry&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    | if_exp b e1 e2 ih1 ih2 ih3 =&amp;gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;      &lt;span class=&quot;z-invalid z-illegal z-lean&quot;&gt;sorry&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;I found out that the old version with the &lt;code&gt;Val t&lt;&#x2F;code&gt; def can progress if we add &lt;code&gt;@[reducible]&lt;&#x2F;code&gt;. I ran into other roadblocks with that approach, though.
So for now this is fine!&lt;&#x2F;p&gt;
&lt;p&gt;The proof is yet to be complete, but I’m happy with the progress so far.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;dec-07&quot;&gt;Dec 07&lt;&#x2F;h1&gt;
&lt;p&gt;I’m going another route with the Lean compiler I was working on yesterday. I just want to do small increments on something that works.&lt;&#x2F;p&gt;
&lt;p&gt;This is what I reduced down to&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;lean&quot; class=&quot;language-lean z-code&quot;&gt;&lt;code class=&quot;language-lean&quot; data-lang=&quot;lean&quot;&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;inductive&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;Exp&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;where&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | val_exp : Int → Exp
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | plus_exp : Exp → Exp → Exp
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | comp_exp : Exp → Exp → Exp
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | if_exp : Exp → Exp → Exp → Exp
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;def&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;intToBool&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;(n: Int) : Bool := &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;if&lt;&#x2F;span&gt; n == &lt;span class=&quot;z-constant z-numeric z-lean&quot;&gt;0&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;then&lt;&#x2F;span&gt; True &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;else&lt;&#x2F;span&gt; False
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;def&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;eval&lt;&#x2F;span&gt;  &lt;&#x2F;span&gt;: Exp → Int
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | Exp.val_exp v =&amp;gt; v
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | Exp.plus_exp e1 e2 =&amp;gt; eval e1 + eval e2
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | Exp.comp_exp e1 e2 =&amp;gt; (eval e1 == eval e2).toNat
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | .if_exp b e1 e2 =&amp;gt; &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;if&lt;&#x2F;span&gt; intToBool $ eval b &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;then&lt;&#x2F;span&gt; eval e1 &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;else&lt;&#x2F;span&gt; eval e2
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-command z-lean&quot;&gt;#eval&lt;&#x2F;span&gt; eval (Exp.if_exp (Exp.comp_exp (Exp.val_exp &lt;span class=&quot;z-constant z-numeric z-lean&quot;&gt;4&lt;&#x2F;span&gt;) (Exp.val_exp &lt;span class=&quot;z-constant z-numeric z-lean&quot;&gt;3&lt;&#x2F;span&gt;)) (Exp.val_exp &lt;span class=&quot;z-constant z-numeric z-lean&quot;&gt;42&lt;&#x2F;span&gt;) (Exp.val_exp &lt;span class=&quot;z-constant z-numeric z-lean&quot;&gt;5&lt;&#x2F;span&gt;))
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The &lt;code&gt;Val t&lt;&#x2F;code&gt; definition above couldn’t really unify easily, it’s clear I shouldn’t be doing that from the type system complaints.
Instead this is just a simple interpreter, very simple in fact. I will be adding opcodes for a simple stack machine later.
Obviously I can simplify a lot of things because we don’t have heterogeneous stack values in this version of the language. Instead everything is an Int :)&lt;&#x2F;p&gt;
&lt;h1 id=&quot;dec-06&quot;&gt;Dec 06&lt;&#x2F;h1&gt;
&lt;p&gt;Continued looking at Lean4, wanted to translate the functional pearl I talked about a couple of days ago to Lean, but it didn’t go as smoothly as I expected.
“&lt;a href=&quot;https:&#x2F;&#x2F;www.cs.tufts.edu&#x2F;~nr&#x2F;cs257&#x2F;archive&#x2F;conor-mcbride&#x2F;epigram-pearl.pdf&quot;&gt;A type-correct, stack-safe, provably correct, expression compiler in Epigram&lt;&#x2F;a&gt;”&lt;&#x2F;p&gt;
&lt;p&gt;This is what I had, translated from the Idris version I made.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;lean&quot; class=&quot;language-lean z-code&quot;&gt;&lt;code class=&quot;language-lean&quot; data-lang=&quot;lean&quot;&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;inductive&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;TyExp&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;  &lt;&#x2F;span&gt;| tnat
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | tbool
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;deriving&lt;&#x2F;span&gt; Repr
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;def&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;Val&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;: TyExp → &lt;span class=&quot;z-storage z-type z-lean&quot;&gt;Type&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | .tnat =&amp;gt; Nat
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | .tbool =&amp;gt; Bool
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-comment z-line z-double-dash z-lean&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-lean&quot;&gt;--&lt;&#x2F;span&gt; Coercions doesn&amp;#39;t address the issue&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-comment z-line z-double-dash z-lean&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-lean&quot;&gt;--&lt;&#x2F;span&gt; instance : Coe (Val TyExp.tnat) Nat where&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-comment z-line z-double-dash z-lean&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-lean&quot;&gt;--&lt;&#x2F;span&gt;   coe x := x&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-comment z-line z-double-dash z-lean&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-lean&quot;&gt;--&lt;&#x2F;span&gt; instance : Coe Nat (Val TyExp.tnat) where&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-comment z-line z-double-dash z-lean&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-lean&quot;&gt;--&lt;&#x2F;span&gt;   coe x := x&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;inductive&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;Exp&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;: TyExp → &lt;span class=&quot;z-storage z-type z-lean&quot;&gt;Type&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | val_exp : Val t → Exp t
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | plus_exp : Exp tnat → Exp tnat → Exp tnat
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | if_exp : Exp tbool → Exp t → Exp t → Exp t
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;instance&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;: Add (Val tnat) &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;where&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  add x y := Nat.add x y
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  &lt;span class=&quot;z-comment z-block z-lean&quot;&gt;&#x2F;- Error here      ^
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-comment z-block z-lean&quot;&gt;  application type mismatch
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-comment z-block z-lean&quot;&gt;    Nat.add x
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-comment z-block z-lean&quot;&gt;  argument
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-comment z-block z-lean&quot;&gt;    x
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-comment z-block z-lean&quot;&gt;  has type
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-comment z-block z-lean&quot;&gt;    Val tnat : Type
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-comment z-block z-lean&quot;&gt;  but is expected to have type
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-comment z-block z-lean&quot;&gt;    Nat : Type
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-comment z-block z-lean&quot;&gt;  -&#x2F;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;def&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;eval&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;{t : TyExp} : Exp t → Val t
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | .val_exp v =&amp;gt; v
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | .plus_exp e1 e2 =&amp;gt; (eval e1) + (eval e2)
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  &lt;span class=&quot;z-comment z-line z-double-dash z-lean&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-lean&quot;&gt;--&lt;&#x2F;span&gt;                      vvvvvv errors too&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | .if_exp b e1 e2 =&amp;gt; &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;if&lt;&#x2F;span&gt; eval b &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;then&lt;&#x2F;span&gt; eval e1 &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;else&lt;&#x2F;span&gt; eval e2
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;It seems that type coercions aren’t as easy to use in Lean. I tried to use the &lt;code&gt;Coe&lt;&#x2F;code&gt; typeclass, but it didn’t work as I expected.&lt;&#x2F;p&gt;
&lt;p&gt;Hopefully I’ll get some time to look at this more tomorrow.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;dec-05&quot;&gt;Dec 05&lt;&#x2F;h1&gt;
&lt;p&gt;Today I decided to dig into Lean4. I started out by solving some of the simple Software Foundations induction exercises.&lt;&#x2F;p&gt;
&lt;p&gt;The syntax is very clean (heh), and the tactic language is similar to Coq (Rocq now?).&lt;&#x2F;p&gt;
&lt;p&gt;I did some basic natural number proofs:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;lean&quot; class=&quot;language-lean z-code&quot;&gt;&lt;code class=&quot;language-lean&quot; data-lang=&quot;lean&quot;&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;theorem&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;add_0_r&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;(n : Nat) : n + &lt;span class=&quot;z-constant z-numeric z-lean&quot;&gt;0&lt;&#x2F;span&gt; = n := &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;by&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  induction n &amp;lt;;&amp;gt; simp
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;theorem&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;minus_n_n&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;(n: Nat) : n - n = &lt;span class=&quot;z-constant z-numeric z-lean&quot;&gt;0&lt;&#x2F;span&gt; := &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;by&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  induction n &amp;lt;;&amp;gt; simp
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;theorem&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;add_comm&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;(n m : Nat) : n + m = m + n := &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;by&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  intros
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  &lt;span class=&quot;z-comment z-line z-double-dash z-lean&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-lean&quot;&gt;--&lt;&#x2F;span&gt; `omega` to take the short path :)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  induction n
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  . induction m &amp;lt;;&amp;gt; simp
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  . induction m
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    . simp
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;    . rw [Nat.succ_add, Nat.add_succ]
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;      congr &lt;span class=&quot;z-constant z-numeric z-lean&quot;&gt;1&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;theorem&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;add_assoc&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;(n m p : Nat) : n + (m + p) = (n + m) + p := &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;by&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  induction n &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;with&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | zero =&amp;gt; rw [add_comm, add_comm]
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;            simp
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | succ n =&amp;gt; omega &lt;span class=&quot;z-comment z-line z-double-dash z-lean&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-lean&quot;&gt;--&lt;&#x2F;span&gt; didn&amp;#39;t want to think too hard here..&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;theorem&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;mul_0_r&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;(n: Nat) : n * &lt;span class=&quot;z-constant z-numeric z-lean&quot;&gt;0&lt;&#x2F;span&gt; = &lt;span class=&quot;z-constant z-numeric z-lean&quot;&gt;0&lt;&#x2F;span&gt; := &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;by&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  induction n &amp;lt;;&amp;gt; simp
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;def&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;double&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;(n: Nat) := &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;match&lt;&#x2F;span&gt; n &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;with&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | Nat.zero =&amp;gt; Nat.zero
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | Nat.succ n&amp;#39; =&amp;gt; Nat.succ (Nat.succ (double n&amp;#39;))
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;&lt;span class=&quot;z-meta z-definitioncommand z-lean&quot;&gt;&lt;span class=&quot;z-keyword z-other z-definitioncommand z-lean&quot;&gt;theorem&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-lean&quot;&gt;double_plus&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;(n : Nat) : double n = n + n := &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;by&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  induction n &lt;span class=&quot;z-keyword z-other z-lean&quot;&gt;with&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | zero =&amp;gt; rfl
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;  | succ n ih =&amp;gt; simp [double]
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;                 rw [ih]
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-lean&quot;&gt;                 rw [Nat.succ_add, Nat.succ_add, add_assoc]
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;I am aware of the “Please do not post solutions to the exercises in a public place” notice in the &lt;a href=&quot;https:&#x2F;&#x2F;softwarefoundations.cis.upenn.edu&#x2F;lf-current&#x2F;Preface.html#lab7&quot;&gt;Software Foundations book&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;I will refrain from posting every part of my proofs if I continue with this.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;It feels very snappy in the VS Code plugin. When comparing the solutions to my Rocq solutions, there are definitely places where the proof is more concise in Lean4.
E.g., the &lt;a href=&quot;https:&#x2F;&#x2F;softwarefoundations.cis.upenn.edu&#x2F;lf-current&#x2F;Induction.html#minus_n_n&quot;&gt;&lt;code&gt;minus_n_n&lt;&#x2F;code&gt; proof&lt;&#x2F;a&gt; in Rocq is:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;coq&quot; class=&quot;language-coq z-code&quot;&gt;&lt;code class=&quot;language-coq&quot; data-lang=&quot;coq&quot;&gt;&lt;span class=&quot;z-source z-coq&quot;&gt;&lt;span class=&quot;z-keyword z-definition z-coq&quot;&gt;Theorem&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-coq&quot;&gt;minus_n_n&lt;&#x2F;span&gt; &lt;span class=&quot;z-punctuation z-separator z-coq&quot;&gt;:&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-coq&quot;&gt;forall&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-parameter z-coq&quot;&gt;n&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-coq&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-coq&quot;&gt;  &lt;span class=&quot;z-variable z-other z-coq&quot;&gt;minus&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-other z-coq&quot;&gt;n&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-other z-coq&quot;&gt;n&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-coq&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-numeric z-integer&quot;&gt;0&lt;&#x2F;span&gt;.
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-coq&quot;&gt;&lt;span class=&quot;z-keyword z-coq&quot;&gt;Proof&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-proof z-coq&quot;&gt;&lt;span class=&quot;z-punctuation z-terminator z-coq&quot;&gt;.&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-coq&quot;&gt;&lt;span class=&quot;z-meta z-proof z-coq&quot;&gt;  &lt;span class=&quot;z-support z-function z-coq&quot;&gt;intros&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-other z-coq&quot;&gt;n&lt;&#x2F;span&gt;. &lt;span class=&quot;z-support z-function z-coq&quot;&gt;induction&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-other z-coq&quot;&gt;n&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-coq&quot;&gt;as&lt;&#x2F;span&gt; &lt;span class=&quot;z-punctuation z-section z-brackets z-begin z-coq&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-coq&quot;&gt;|&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-other z-coq&quot;&gt;n&amp;#39;&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-other z-coq&quot;&gt;IHn&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-brackets z-end z-coq&quot;&gt;]&lt;&#x2F;span&gt;.
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-coq&quot;&gt;&lt;span class=&quot;z-meta z-proof z-coq&quot;&gt;  &lt;span class=&quot;z-entity z-name z-section&quot;&gt;-&lt;&#x2F;span&gt; &lt;span class=&quot;z-comment z-block z-coq&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-begin z-coq&quot;&gt;(*&lt;&#x2F;span&gt; n = 0 &lt;span class=&quot;z-punctuation z-definition z-comment z-end z-coq&quot;&gt;*)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-coq&quot;&gt;&lt;span class=&quot;z-meta z-proof z-coq&quot;&gt;    &lt;span class=&quot;z-support z-function z-coq&quot;&gt;simpl&lt;&#x2F;span&gt;. &lt;span class=&quot;z-support z-function z-coq&quot;&gt;reflexivity&lt;&#x2F;span&gt;.
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-coq&quot;&gt;&lt;span class=&quot;z-meta z-proof z-coq&quot;&gt;  &lt;span class=&quot;z-entity z-name z-section&quot;&gt;-&lt;&#x2F;span&gt; &lt;span class=&quot;z-comment z-block z-coq&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-begin z-coq&quot;&gt;(*&lt;&#x2F;span&gt; n = S n&amp;#39; &lt;span class=&quot;z-punctuation z-definition z-comment z-end z-coq&quot;&gt;*)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-coq&quot;&gt;&lt;span class=&quot;z-meta z-proof z-coq&quot;&gt;    &lt;span class=&quot;z-support z-function z-coq&quot;&gt;simpl&lt;&#x2F;span&gt;. &lt;span class=&quot;z-support z-function z-coq&quot;&gt;rewrite&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-coq&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-coq&quot;&gt;&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-other z-coq&quot;&gt;IHn&amp;#39;&lt;&#x2F;span&gt;. &lt;span class=&quot;z-support z-function z-coq&quot;&gt;reflexivity&lt;&#x2F;span&gt;.  &lt;span class=&quot;z-keyword z-coq&quot;&gt;Qed&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;.
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The induction hypothesis is just applied immediately. It seems that the &lt;a href=&quot;https:&#x2F;&#x2F;leanprover-community.github.io&#x2F;mathlib4_docs&#x2F;Init&#x2F;Tactics.html#Lean.Parser.Tactic.simp&quot;&gt;&lt;code&gt;simp&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; in Lean4 may be closer to what &lt;code&gt;simpl&lt;&#x2F;code&gt; + &lt;a href=&quot;https:&#x2F;&#x2F;coq.inria.fr&#x2F;doc&#x2F;V8.18.0&#x2F;refman&#x2F;proofs&#x2F;automatic-tactics&#x2F;auto.html#coq:tacn.auto&quot;&gt;&lt;code&gt;auto&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; does in Rocq in conjunction. Very neat!&lt;&#x2F;p&gt;
&lt;h1 id=&quot;dec-03&quot;&gt;Dec 03&lt;&#x2F;h1&gt;
&lt;p&gt;Didn’t do a lot today. I updated my nix config a little after updating my flake lock.&lt;&#x2F;p&gt;
&lt;p&gt;I also followed along the &lt;a href=&quot;https:&#x2F;&#x2F;hexdocs.pm&#x2F;phoenix&#x2F;api_authentication.html&quot;&gt;API Authentication guide&lt;&#x2F;a&gt; for Phoenix Framework’s &lt;a href=&quot;https:&#x2F;&#x2F;hexdocs.pm&#x2F;phoenix&#x2F;mix_phx_gen_auth.html&quot;&gt;mix phx.gen.auth&lt;&#x2F;a&gt;.
Was really easy to get working. Not really sure what to do with it though. I have a little playground project going that I want to do some exploration&#x2F;learning with.
Mostly learning about effective domain design and rapid prototyping with LiveView. No code to show though.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;dec-02&quot;&gt;Dec 02&lt;&#x2F;h1&gt;
&lt;p&gt;Got that correctness proof done! Very exciting. It got a little long, so I’ll rather just link to the &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;kaep&#x2F;funktionel-perle&#x2F;blob&#x2F;d30c26a8fd96fbc47d321266b19f09fbb0b7c23d&#x2F;Perle.idr#L118-L209&quot;&gt;commit&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;It’s very messy and Idris1 isn’t the best at error messages so I ported to Idris2 and backported once it worked – though both versions are more or less the same.&lt;&#x2F;p&gt;
&lt;p&gt;I also wanted to do something less mind straining, so I did AoC day 1 in Idris2 too&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;idris&quot; class=&quot;language-idris z-code&quot;&gt;&lt;code class=&quot;language-idris&quot; data-lang=&quot;idris&quot;&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;&lt;span class=&quot;z-meta z-import z-idris2&quot;&gt;&lt;span class=&quot;z-keyword z-control z-import z-idris2&quot;&gt;import&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-namespace z-idris2&quot;&gt;Data.String&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;&lt;span class=&quot;z-meta z-function z-type-signature z-idris2&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-declaration z-idris2&quot;&gt;part1&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-colon z-idris2&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;List&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;Integer&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;Integer&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-arrow z-idris2&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;Integer&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;part1&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;loc&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;  &lt;span class=&quot;z-keyword z-control z-flow z-idris2&quot;&gt;let&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;left&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;right&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;unzip&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;loc&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;      &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;sortedPairs&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;zip&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;sort&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;left&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;sort&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;right&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-flow z-idris2&quot;&gt;in&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;   &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;sum&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;.&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;map&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;abs&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;.&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;uncurry&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;-&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;$&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;sortedPairs&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;&lt;span class=&quot;z-meta z-function z-type-signature z-idris2&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-declaration z-idris2&quot;&gt;part2&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-colon z-idris2&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;List&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;Integer&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;Integer&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-arrow z-idris2&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;Integer&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;part2&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;locs&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;    &lt;span class=&quot;z-keyword z-control z-flow z-idris2&quot;&gt;let&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;left&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;right&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;unzip&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;locs&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-flow z-idris2&quot;&gt;in&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;    &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;sum&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;$&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;map&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;\&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;l&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;l&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;*&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;cast&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;count_x&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;l&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;right&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;left&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;    &lt;span class=&quot;z-keyword z-other z-idris2&quot;&gt;where&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;      &lt;span class=&quot;z-meta z-function z-type-signature z-idris2&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-declaration z-idris2&quot;&gt;count_x&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-colon z-idris2&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;Eq&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;t&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;Foldable&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;m&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;t&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-arrow z-idris2&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;m&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;t&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-arrow z-idris2&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;Nat&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;      &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;count_x&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;v&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;count&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;==&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;v&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;&lt;span class=&quot;z-meta z-function z-type-signature z-idris2&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-declaration z-idris2&quot;&gt;parse&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-colon z-idris2&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;String&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-arrow z-idris2&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;List&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;Integer&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;Integer&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;parse&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;map&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;parseLine&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;.&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;lines&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;  &lt;span class=&quot;z-keyword z-other z-idris2&quot;&gt;where&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;    &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;parseLine&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;str&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-conditional z-idris2&quot;&gt;case&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;words&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;str&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-conditional z-idris2&quot;&gt;of&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;      &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;]&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;cast&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;l&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;cast&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;r&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;      &lt;span class=&quot;z-constant z-language z-underscore z-idris2&quot;&gt;_&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-idris2&quot;&gt;0&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-constant z-numeric z-idris2&quot;&gt;0&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;&lt;span class=&quot;z-meta z-function z-type-signature z-idris2&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-declaration z-idris2&quot;&gt;readInput&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-colon z-idris2&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;IO&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;List&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;String&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;readInput&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-conditional z-idris2&quot;&gt;case&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;!&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;getLine&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-conditional z-idris2&quot;&gt;of&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;  &lt;span class=&quot;z-string z-quoted z-double z-idris2&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-idris2&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-end z-idris2&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;pure&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;]&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;  &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;line&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&amp;gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;pure&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;line&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;::&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;!&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;readInput&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;&lt;span class=&quot;z-meta z-function z-type-signature z-idris2&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-declaration z-idris2&quot;&gt;main&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-colon z-idris2&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;IO&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-idris2&quot;&gt;()&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;main&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;  &lt;span class=&quot;z-keyword z-control z-flow z-idris2&quot;&gt;let&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;input&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;!&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;readInput&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;      &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;pairs&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;parse&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;unlines&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;input&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;  &lt;span class=&quot;z-keyword z-control z-flow z-idris2&quot;&gt;in&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-flow z-idris2&quot;&gt;do&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;    &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;putStrLn&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;$&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-quoted z-double z-idris2&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-idris2&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;Part 1: &lt;span class=&quot;z-punctuation z-definition z-string z-end z-idris2&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;++&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;show&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;part1&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;pairs&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-idris2&quot;&gt;    &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;putStrLn&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;$&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-quoted z-double z-idris2&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-idris2&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;Part 2: &lt;span class=&quot;z-punctuation z-definition z-string z-end z-idris2&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-idris2&quot;&gt;++&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;show&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;part2&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-idris2&quot;&gt;pairs&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-delimiter z-idris2&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;I especially enjoy the &lt;code&gt;!&lt;&#x2F;code&gt;-notation which acts similar to an inline do-block. It’s syntax sugar that roughly provides &lt;code&gt;(!) : m a -&amp;gt; a&lt;&#x2F;code&gt;.
It reminds me of the &lt;a href=&quot;https:&#x2F;&#x2F;www.roc-lang.org&#x2F;tutorial#the-!-suffix&quot;&gt;new &lt;code&gt;!&lt;&#x2F;code&gt; and &lt;code&gt;?&lt;&#x2F;code&gt; suffix in Roc&lt;&#x2F;a&gt;.
I think it’s a great way to make code more readable and is advantageous over the old backpassing syntax we had before.&lt;&#x2F;p&gt;
&lt;p&gt;That’s all for today. I didn’t want to do much more coding after all that Idris stuff :’)&lt;&#x2F;p&gt;
&lt;h1 id=&quot;dec-01&quot;&gt;Dec 01&lt;&#x2F;h1&gt;
&lt;p&gt;I did a handful of things today. Not a lot of coding, mostly uni work.&lt;&#x2F;p&gt;
&lt;p&gt;Set the blog up and replaced my old simple placeholder site. I’m using zola with &lt;a href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;daudix&#x2F;duckquill&quot;&gt;Duckquill&lt;&#x2F;a&gt; which I found very pretty.
I stumbled into a fair bit of issues with nothing working in the beginning with a blank zola project, setting some post &lt;code&gt;meta&lt;&#x2F;code&gt;s and blog &lt;code&gt;extra&lt;&#x2F;code&gt;s did the trick.&lt;&#x2F;p&gt;
&lt;p&gt;Today was mostly writing the technical report for &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;thehabbos007&#x2F;ComRaTT&quot;&gt;ComRaTT&lt;&#x2F;a&gt; which is a part of a preliminary research project I’m working on
with my mate &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;kaep&quot;&gt;kaep&lt;&#x2F;a&gt;. The project is a compiled functional language that borrows the type system of &lt;a href=&quot;https:&#x2F;&#x2F;bahr.io&#x2F;pubs&#x2F;entries&#x2F;asyncratt.html&quot;&gt;Async RaTT&lt;&#x2F;a&gt; which our supervisor(s) created.
I wrote a couple of typst helper methods to help make the paper a little prettier and consistent. Mostly helper methods like&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;typst&quot; class=&quot;language-typst z-code&quot;&gt;&lt;code class=&quot;language-typst&quot; data-lang=&quot;typst&quot;&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;&lt;span class=&quot;z-keyword z-other z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-expression z-typst&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-declaration z-typst&quot;&gt;let&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-function-call z-arguments z-typst&quot;&gt;&lt;span class=&quot;z-support z-function z-typst&quot;&gt;modality_circle&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-begin z-typst&quot;&gt;(&lt;&#x2F;span&gt;symbol&lt;span class=&quot;z-punctuation z-section z-group z-end z-typst&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-typst&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-punctuation z-section z-group z-begin z-typst&quot;&gt;{&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;  &lt;span class=&quot;z-keyword z-declaration z-typst&quot;&gt;let&lt;&#x2F;span&gt; circle-size &lt;span class=&quot;z-keyword z-operator z-typst&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-number z-integer z-decimal z-typst&quot;&gt;&lt;span class=&quot;z-constant z-numeric z-value z-typst&quot;&gt;1&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-suffix z-typst&quot;&gt;em&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;  &lt;span class=&quot;z-keyword z-declaration z-typst&quot;&gt;let&lt;&#x2F;span&gt; text-size &lt;span class=&quot;z-keyword z-operator z-typst&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-number z-float z-decimal z-typst&quot;&gt;&lt;span class=&quot;z-constant z-numeric z-value z-typst&quot;&gt;0&lt;span class=&quot;z-punctuation z-separator z-decimal z-typst&quot;&gt;.&lt;&#x2F;span&gt;9&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-suffix z-typst&quot;&gt;em&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;  &lt;span class=&quot;z-meta z-function-call z-arguments z-typst&quot;&gt;&lt;span class=&quot;z-support z-function z-typst&quot;&gt;circle&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-begin z-typst&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-typst&quot;&gt;height&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-parameter z-typst&quot;&gt;:&lt;&#x2F;span&gt;circle-size&lt;span class=&quot;z-punctuation z-separator z-typst&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-parameter z-typst&quot;&gt;stroke&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-parameter z-typst&quot;&gt;:&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-number z-float z-decimal z-typst&quot;&gt;&lt;span class=&quot;z-constant z-numeric z-value z-typst&quot;&gt;0&lt;span class=&quot;z-punctuation z-separator z-decimal z-typst&quot;&gt;.&lt;&#x2F;span&gt;5&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric z-suffix z-typst&quot;&gt;pt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-typst&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;  &lt;span class=&quot;z-meta z-function-call z-arguments z-typst&quot;&gt;&lt;span class=&quot;z-support z-function z-typst&quot;&gt;place&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-begin z-typst&quot;&gt;(&lt;&#x2F;span&gt;center&lt;span class=&quot;z-keyword z-operator z-typst&quot;&gt;+&lt;&#x2F;span&gt;horizon&lt;span class=&quot;z-punctuation z-separator z-typst&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-parameter z-typst&quot;&gt;dx&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-parameter z-typst&quot;&gt;:&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-typst&quot;&gt;-&lt;&#x2F;span&gt;circle-size&lt;span class=&quot;z-keyword z-operator z-typst&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-number z-integer z-decimal z-typst&quot;&gt;&lt;span class=&quot;z-constant z-numeric z-value z-typst&quot;&gt;2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-typst&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-begin z-typst&quot;&gt;[&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;    &lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;&lt;span class=&quot;z-keyword z-other z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-expression z-typst&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-declaration z-typst&quot;&gt;set&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-function-call z-arguments z-typst&quot;&gt;&lt;span class=&quot;z-support z-function z-typst&quot;&gt;align&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-begin z-typst&quot;&gt;(&lt;&#x2F;span&gt;center&lt;span class=&quot;z-keyword z-operator z-typst&quot;&gt;+&lt;&#x2F;span&gt;horizon&lt;span class=&quot;z-punctuation z-section z-group z-end z-typst&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;    &lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;&lt;span class=&quot;z-keyword z-other z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-expression z-typst&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-declaration z-typst&quot;&gt;set&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-function-call z-arguments z-typst&quot;&gt;&lt;span class=&quot;z-support z-function z-typst&quot;&gt;text&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-begin z-typst&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-typst&quot;&gt;size&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-parameter z-typst&quot;&gt;:&lt;&#x2F;span&gt; text-size&lt;span class=&quot;z-punctuation z-section z-group z-end z-typst&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;    &lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;&lt;span class=&quot;z-support z-other z-typst&quot;&gt;&lt;span class=&quot;z-variable z-function z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-expression z-typst&quot;&gt;#&lt;&#x2F;span&gt;box&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-group z-begin z-typst&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-typst&quot;&gt;width&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-parameter z-typst&quot;&gt;:&lt;&#x2F;span&gt; text-size&lt;span class=&quot;z-punctuation z-separator z-typst&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-parameter z-typst&quot;&gt;height&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-parameter z-typst&quot;&gt;:&lt;&#x2F;span&gt; text-size&lt;span class=&quot;z-punctuation z-section z-group z-end z-typst&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-begin z-typst&quot;&gt;[&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-math z-typst&quot;&gt;&lt;span class=&quot;z-string z-other z-math z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-math z-begin z-typst&quot;&gt;$&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-function z-math z-typst&quot;&gt;symbol&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-other z-math z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-math z-end z-typst&quot;&gt;$&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-typst&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;  &lt;span class=&quot;z-punctuation z-section z-group z-end z-typst&quot;&gt;]&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-typst&quot;&gt;}&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;&lt;span class=&quot;z-keyword z-other z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-expression z-typst&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-declaration z-typst&quot;&gt;let&lt;&#x2F;span&gt; mod_exists &lt;span class=&quot;z-keyword z-operator z-typst&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-function-call z-arguments z-typst&quot;&gt;&lt;span class=&quot;z-support z-function z-typst&quot;&gt;modality_circle&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-begin z-typst&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-math z-typst&quot;&gt;&lt;span class=&quot;z-string z-other z-math z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-math z-begin z-typst&quot;&gt;$&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-function z-math z-typst&quot;&gt;exists&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-other z-math z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-math z-end z-typst&quot;&gt;$&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-typst&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;&lt;span class=&quot;z-keyword z-other z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-expression z-typst&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-declaration z-typst&quot;&gt;let&lt;&#x2F;span&gt; mod_forall &lt;span class=&quot;z-keyword z-operator z-typst&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-function-call z-arguments z-typst&quot;&gt;&lt;span class=&quot;z-support z-function z-typst&quot;&gt;modality_circle&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-begin z-typst&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-math z-typst&quot;&gt;&lt;span class=&quot;z-string z-other z-math z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-math z-begin z-typst&quot;&gt;$&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-support z-function z-math z-typst&quot;&gt;forall&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-other z-math z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-math z-end z-typst&quot;&gt;$&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-typst&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;&lt;span class=&quot;z-keyword z-other z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-expression z-typst&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-declaration z-typst&quot;&gt;let&lt;&#x2F;span&gt; turns &lt;span class=&quot;z-keyword z-operator z-typst&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-function-call z-arguments z-typst&quot;&gt;&lt;span class=&quot;z-support z-function z-typst&quot;&gt;symbol&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-begin z-typst&quot;&gt;(&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-typst&quot;&gt;  &lt;span class=&quot;z-string z-quoted z-double z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-typst&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;⊢&lt;span class=&quot;z-punctuation z-definition z-string z-end z-typst&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-typst&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-typst&quot;&gt;  &lt;span class=&quot;z-punctuation z-section z-group z-begin z-typst&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-typst&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;double&lt;span class=&quot;z-punctuation z-definition z-string z-end z-typst&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-typst&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-quoted z-double z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-typst&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;⊨&lt;span class=&quot;z-punctuation z-definition z-string z-end z-typst&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-typst&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-typst&quot;&gt;,&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-typst&quot;&gt;  &lt;span class=&quot;z-punctuation z-section z-group z-begin z-typst&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-quoted z-double z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-typst&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;triple&lt;span class=&quot;z-punctuation z-definition z-string z-end z-typst&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-typst&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-quoted z-double z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-typst&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;⫢&lt;span class=&quot;z-punctuation z-definition z-string z-end z-typst&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-typst&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-typst&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-typst&quot;&gt;&lt;span class=&quot;z-meta z-expression z-typst&quot;&gt;&lt;span class=&quot;z-keyword z-other z-typst&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-expression z-typst&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-declaration z-typst&quot;&gt;let&lt;&#x2F;span&gt; darrow &lt;span class=&quot;z-keyword z-operator z-typst&quot;&gt;=&lt;&#x2F;span&gt; math.arrow.b.double
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Typst is such a nice break from LaTeX.&lt;&#x2F;p&gt;
&lt;p&gt;I’ve been holding off working on the correctness proof of &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;kaep&#x2F;funktionel-perle&quot;&gt;a primitive, verified compiler&lt;&#x2F;a&gt; in Idris for a couple of days (not related to above).
Hopefully holding back will bring out some ideas to crack the problem once I find time to look at it. Idris is pretty cool! We are basing this work on “&lt;a href=&quot;https:&#x2F;&#x2F;wiki.haskell.org&#x2F;Research_papers&#x2F;Functional_pearls&quot;&gt;functional pearls&lt;&#x2F;a&gt;”&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Functional pearls are elegant, instructive examples of functional programming. They are supposed to be fun, and they teach important programming techniques and fundamental design principles [..]&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Specifically we’re translating “&lt;a href=&quot;https:&#x2F;&#x2F;www.cs.tufts.edu&#x2F;~nr&#x2F;cs257&#x2F;archive&#x2F;conor-mcbride&#x2F;epigram-pearl.pdf&quot;&gt;A type-correct, stack-safe, provably correct, expression compiler in Epigram&lt;&#x2F;a&gt;” into Idris and adding exceptions and let bindings.
May show some of that in the coming days.&lt;&#x2F;p&gt;
&lt;p&gt;Rest of the evening will be spent with my lovely wife.&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
