Hi,<br><br>I&#39;m in the process of importing a package from HOL Light into HOL4.<br>I&#39;ve generated an OpenTheory article, which uses the Number.Natural.bit0, which HOL4 doesn&#39;t understand.<br>I have the numconv tool, which does conversion from bit0/bit1 numbers to bit1/bit2 numbers, but it doesn&#39;t work on whole articles yet.<br>


I would like input on how to design it so that it will.<br><br>Here is what numconv does:<br><ul><li>Translate numeral representations within a term, producing a theorem |- t[rep1] = t[rep2].<br></li><li>The input term is represented by a simple article with a single theorem containing the term.</li>

<li>The output theorem is represented by an ordinary article, based on axioms in the standard library, and a few extra ones about bit2 if necessary.<br></li>
</ul>What I would like:<br><ul><li>A tool to convert all numeral representations throughout an article, i.e.</li><li>turn an article based on the standard library into one that only uses numeral constants relevant to the desired representation.<br>

</li></ul>Ideas on a good route to achieve that?<br><br>Cheers,<br>Ramana<br><br><div class="gmail_quote">On Mon, Aug 20, 2012 at 8:52 PM, Ramana Kumar <span dir="ltr">&lt;<a href="mailto:ramana@xrchz.net" target="_blank">ramana@xrchz.net</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I have rewritten my standalone conversion between Norrish numerals and binary numerals.<br><br>The code now lives here: <a href="https://gitorious.org/hol/ot/trees/master" target="_blank">https://gitorious.org/hol/ot/trees/master</a> (it is numconv.hs)<br>



<br>Changes/Features:<br><ul><li>Now translates in both directions: Norrish -&gt; Binary and Binary -&gt; Norrish</li><li>Translates numerals recursively within any term (doesn&#39;t require a bare numeral as input)</li>


<li>
Optional &quot;rule mode&quot; proves t |- t&#39; rather than |- t = t&#39;; maybe useful for converting numerals in an already proved theorem and composing the resulting articles.<br></li><li>Refactored into several reusable Haskell modules</li>



<li>Cleaned up code; it now doesn&#39;t emit any warnings with ghc&#39;s -Wall.<br></li></ul>I haven&#39;t tested it very much, especially in the from-binary direction. Test articles and use cases would be appreciated. The axioms in that direction are probably not in the standard library, but they are provable in HOL4...<br>



<br>The next task I want to do is figure out how best to create a kind of &quot;compatibility theory package&quot; that would include those theorems (and other common prover-specific theorems) that can be added to the &quot;requires:&quot; of a package for easy use of packages coming out of specific provers.<br>



<br>I look forward to your comments and tests for numconv :)<br>And if you have ideas for other standalone proof tools, the OpenTheory Haskell modules are free to use.<div><div><br><br><div class="gmail_quote">
On Fri, Apr 6, 2012 at 9:31 PM, Joe Hurd <span dir="ltr">&lt;<a href="mailto:joe@gilith.com" target="_blank">joe@gilith.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Yep, looks like it works fine now, in case we ever need to de-Norrish<br>
some numerals from HOL Light.<br>
<br>
Cheers,<br>
<br>
Joe<br>
<div><div><br>
On Thu, Apr 5, 2012 at 11:25 PM, Ramana Kumar &lt;<a href="mailto:ramana.kumar@gmail.com" target="_blank">ramana.kumar@gmail.com</a>&gt; wrote:<br>
&gt; My code works fine on this article. The problem was my CGI script. It should<br>
&gt; be fixed now.<br>
&gt; (It had a call to runhaskell n2b.hs which got confused when called from<br>
&gt; another directory, so now I&#39;ve given it an absolute path to n2b.hs.)<br>
&gt;<br>
&gt; On Thu, Apr 5, 2012 at 11:10 PM, Joe Hurd &lt;<a href="mailto:joe@gilith.com" target="_blank">joe@gilith.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi Ramana,<br>
&gt;&gt;<br>
&gt;&gt; &gt; My guess is that you&#39;re generating an article with HOLLight.BIT2 rather<br>
&gt;&gt; &gt; than<br>
&gt;&gt; &gt; Number.Natural.bit2, but I haven&#39;t actually run your attempt.<br>
&gt;&gt; &gt; If that&#39;s not the problem it would be helpful if you could send me the<br>
&gt;&gt; &gt; article that gets passed to the web tactic (or maybe I should have some<br>
&gt;&gt; &gt; infrastructure for saving it...)<br>
&gt;&gt;<br>
&gt;&gt; I&#39;ve attached the article encoding the goal: FYI the opentheory<br>
&gt;&gt; summary for it is:<br>
&gt;&gt;<br>
&gt;&gt; $ opentheory info n2b-goal.art<br>
&gt;&gt; 3 input type operators: -&gt; bool Number.Natural.natural<br>
&gt;&gt; 5 input constants: F Function.K Number.Natural.bit1 Number.Natural.bit2<br>
&gt;&gt;  Number.Natural.zero<br>
&gt;&gt; 1 assumption:<br>
&gt;&gt;  |- Function.K F<br>
&gt;&gt;       (Number.Natural.bit2 (Number.Natural.bit1 (Number.Natural.bit2 0)))<br>
&gt;&gt; 1 theorem:<br>
&gt;&gt;  |- Function.K F<br>
&gt;&gt;       (Number.Natural.bit2 (Number.Natural.bit1 (Number.Natural.bit2 0)))<br>
&gt;&gt;<br>
&gt;&gt; &gt; The function n2b near the top of the file is the algorithm.<br>
&gt;&gt; &gt; It&#39;s been a while, so let&#39;s see if I can figure out the algorithm just<br>
&gt;&gt; &gt; by<br>
&gt;&gt; &gt; reading that code...<br>
&gt;&gt;<br>
&gt;&gt; Your algorithm looks absolutely fine, and should scale up to any size<br>
&gt;&gt; of natural number that a theorem prover could conceivably process.<br>
&gt;&gt;<br>
&gt;&gt; Cheers,<br>
&gt;&gt;<br>
&gt;&gt; Joe<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; opentheory-users mailing list<br>
&gt;&gt; <a href="mailto:opentheory-users@gilith.com" target="_blank">opentheory-users@gilith.com</a><br>
&gt;&gt; <a href="http://www.gilith.com/opentheory/mailing-list" target="_blank">http://www.gilith.com/opentheory/mailing-list</a><br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; opentheory-users mailing list<br>
&gt; <a href="mailto:opentheory-users@gilith.com" target="_blank">opentheory-users@gilith.com</a><br>
&gt; <a href="http://www.gilith.com/opentheory/mailing-list" target="_blank">http://www.gilith.com/opentheory/mailing-list</a><br>
&gt;<br>
<br>
_______________________________________________<br>
opentheory-users mailing list<br>
<a href="mailto:opentheory-users@gilith.com" target="_blank">opentheory-users@gilith.com</a><br>
<a href="http://www.gilith.com/opentheory/mailing-list" target="_blank">http://www.gilith.com/opentheory/mailing-list</a><br>
</div></div></blockquote></div><br>
</div></div></blockquote></div><br>