Yes I think the theory package *-file lines allow any kind of file to be attached to a package.<br><br>The only reason to have an extra hol4 article file is tags like Abbrev and NUMERAL. Everything else, as I mentioned before, can be done separately from the article.<br>

So, to summarise what&#39;s required on the HOL4 side to package an existing HOL4 theory:<br>1. Log the article without translating any constants to Unwanted.id (i.e. don&#39;t mark anything as tags); maybe just put constants that won&#39;t be in a standard namespace into the HOL4 namespace.<br>

2. In the theory package file, name the article from step 1 as the hol4-theory-file. Probably post-process it with the opentheory tool too.<br>3. Create a new copy of the article file from step 1, and rename the tags (I&#39;m thinking just a search+replace taking &quot;HOL4.Abbrev&quot; -&gt; &quot;Unwanted.id&quot;, etc. might be enough, right?), then postprocess with opentheory to remove them.<br>

4. Name the article from step 3 as the main article in the package.<br>5. For any additional information (theorem names, exported rewrites, etc., which should probably also be recorded in step 1) add appropriate extra hol4-something-files to the package.<br>

<br>Unfortunately, that still doesn&#39;t solve the problem when a tag shows up not fully applied (like in a point-free term).<br><br><div class="gmail_quote">On Sat, Jan 14, 2012 at 8:32 PM, Michael Norrish <span dir="ltr">&lt;<a href="mailto:michael.norrish@nicta.com.au">michael.norrish@nicta.com.au</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This would be my preference (thus my &quot;associated files if necessary&quot;).  I don&#39;t know if everything HOL4-ish could necessarily be encoded in an &quot;art&quot; file though.  Presumably, files mentioned in the package could contain other stuff.<br>


<span class="HOEnZb"><font color="#888888"><br>
Michael<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On 15/01/2012, at 0:19, Joe Hurd &lt;<a href="mailto:joe@gilith.com">joe@gilith.com</a>&gt; wrote:<br>
<br>
&gt; Hi Ramana,<br>
&gt;<br>
&gt; My preference would be that the theorem prover interface handles as<br>
&gt; much as possible of the standardization during theory export and then<br>
&gt; localization during theory import (the inverse operation). But I can<br>
&gt; see that there might be some HOL4 specific theory information that<br>
&gt; can&#39;t be reconstructed on theory import.<br>
&gt;<br>
&gt; I wonder if you could achieve your goal by exporting an extra file<br>
&gt; hol4.art declared in the package theory file<br>
&gt;<br>
&gt; hol4-theory-file: hol4.art<br>
&gt;<br>
&gt; that contained a version of the proof article file for the theory with<br>
&gt; the HOL4 specific theory information you want to preserve?<br>
&gt;<br>
&gt; Cheers,<br>
&gt;<br>
&gt; Joe<br>
&gt;<br>
&gt;&gt; If we store terms in articles as-is and then clean tags up later (or not),<br>
&gt;&gt; then I imagine Opentheory repos would offer different versions of packages:<br>
&gt;&gt; either the raw one that might include prover-specific constants for some<br>
&gt;&gt; prover, or the cleaned up one with all tags removed. If you&#39;re lucky enough<br>
&gt;&gt; to be using the prover the package was made on, you get the specific<br>
&gt;&gt; version, otherwise you get the generic one.<br>
&gt;&gt; If tags are inferable, though, then there could be more options, tailoring a<br>
&gt;&gt; package to the prover you want to use it on.<br>
&gt;&gt; Does this sound right?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Mon, Dec 12, 2011 at 2:13 AM, Michael Norrish<br>
&gt;&gt; &lt;<a href="mailto:Michael.Norrish@nicta.com.au">Michael.Norrish@nicta.com.au</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I think it’s clear that there’s no end of cruft that systems might like to<br>
&gt;&gt;&gt; put into theory files.  Even the “names” field you mention below may vary<br>
&gt;&gt;&gt; from system to system.  Given that, we need some generic way of stuffing<br>
&gt;&gt;&gt; arbitrary, well-delimited strings into theory files.  I’d probably prefer<br>
&gt;&gt;&gt; these strings to be inline, but it could also be done with associated files<br>
&gt;&gt;&gt; if necessary.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I like the default being the storage of everything.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Another example of a tag-like thing is the way we use K T x to store<br>
&gt;&gt;&gt; arbitrary terms x in a theory so that the term can be referred to by the<br>
&gt;&gt;&gt; LaTeX machinery we have.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Michael<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On 08/12/11 21:32, Ramana Kumar wrote:<br>
&gt;&gt;&gt;&gt; Can we make a comprehensive list of the kind of stuff we might want to<br>
&gt;&gt;&gt;&gt; store in a theory package?<br>
&gt;&gt;&gt;&gt; I suspect there will be different recovery methods suitable for<br>
&gt;&gt;&gt;&gt; different kinds of data, and looking at the requirements will help see<br>
&gt;&gt;&gt;&gt; if and how opentheory might have to be modified or extended.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; - Tag-free theorems, definitions, low-level proofs.<br>
&gt;&gt;&gt;&gt; : already handled by article format<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; - theory name and description and dependencies<br>
&gt;&gt;&gt;&gt; : already handled by theory package format<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; - NUMERAL tags<br>
&gt;&gt;&gt;&gt; : reconstructible on reading?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; - Abbrev tags<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; - Other tags? (Such as?)<br>
&gt;&gt;&gt;&gt; : An alternative approach might be to store terms in an article as-is<br>
&gt;&gt;&gt;&gt; (with tags) and then have different processing options for cleaning up<br>
&gt;&gt;&gt;&gt; an article like do-nothing, remove all tags, remove all of the<br>
&gt;&gt;&gt;&gt; following tags, or even possibly introduce tags for a specific prover<br>
&gt;&gt;&gt;&gt; (if they are inferable).<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; - theorem names<br>
&gt;&gt;&gt;&gt; : could be stored in a separate file mapping names to statements?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; - automatic rewrites<br>
&gt;&gt;&gt;&gt; : could be stored in a separate file containing a list of theorems?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; - parsing and printing rules, and overloads<br>
&gt;&gt;&gt;&gt; : also could be in a separate file?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; - derived rules and other functionality associated with a theory<br>
&gt;&gt;&gt;&gt;   - tactics, provers/decision procedures<br>
&gt;&gt;&gt;&gt;   - syntax manipulation functions<br>
&gt;&gt;&gt;&gt;   - what else?<br>
&gt;&gt;&gt;&gt; : again, could be in a separate file of code, possibly using<br>
&gt;&gt;&gt;&gt; opentheory article format to interface with the required<br>
&gt;&gt;&gt;&gt; constants/theorems in the theory?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; - what else?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; At the moment it looks like almost everything could be handled by<br>
&gt;&gt;&gt;&gt; extra files that would be mentioned in a theory package but wouldn&#39;t<br>
&gt;&gt;&gt;&gt; interfere with article files in their current form. Only tag constants<br>
&gt;&gt;&gt;&gt; are a problem because they change the terms the article is dealing<br>
&gt;&gt;&gt;&gt; with.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Are there examples of tags that are definitely not reconstructible if<br>
&gt;&gt;&gt;&gt; they are thrown away during cleanup?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On Thu, Dec 8, 2011 at 9:50 AM, Michael Norrish<br>
&gt;&gt;&gt;&gt; &lt;<a href="mailto:michael.norrish@nicta.com.au">michael.norrish@nicta.com.au</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt; On 07/12/2011, at 20:01, Ramana Kumar &lt;<a href="mailto:ramana.kumar@gmail.com">ramana.kumar@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; It would be worth thinking about how to do all that with opentheory.<br>
&gt;&gt;&gt;&gt;&gt; I wouldn&#39;t want to compromise the goal of storing prover-independent<br>
&gt;&gt;&gt;&gt;&gt; theories without a good reason, though...<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; My concern is that the resulting system might forget things that can&#39;t<br>
&gt;&gt;&gt;&gt;&gt; be<br>
&gt;&gt;&gt;&gt;&gt; recovered.  Then it will never be usable as a theory storage mechanism.<br>
&gt;&gt;&gt;&gt;&gt;   Is<br>
&gt;&gt;&gt;&gt;&gt; it possible to create a faithful representation of what&#39;s there that<br>
&gt;&gt;&gt;&gt;&gt; does<br>
&gt;&gt;&gt;&gt;&gt; support getting back exactly what was put in, and to *then* work on<br>
&gt;&gt;&gt;&gt;&gt; forgetting stuff that doesn&#39;t belong in theories meant for sharing with<br>
&gt;&gt;&gt;&gt;&gt; other systems?<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Michael<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt; opentheory-users mailing list<br>
&gt;&gt;&gt;&gt;&gt; <a href="mailto:opentheory-users@gilith.com">opentheory-users@gilith.com</a><br>
&gt;&gt;&gt;&gt;&gt; <a href="http://www.gilith.com/mailman/listinfo/opentheory-users" target="_blank">http://www.gilith.com/mailman/listinfo/opentheory-users</a><br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt; opentheory-users mailing list<br>
&gt;&gt;&gt;&gt; <a href="mailto:opentheory-users@gilith.com">opentheory-users@gilith.com</a><br>
&gt;&gt;&gt;&gt; <a href="http://www.gilith.com/mailman/listinfo/opentheory-users" target="_blank">http://www.gilith.com/mailman/listinfo/opentheory-users</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; opentheory-users mailing list<br>
&gt;&gt;&gt; <a href="mailto:opentheory-users@gilith.com">opentheory-users@gilith.com</a><br>
&gt;&gt;&gt; <a href="http://www.gilith.com/mailman/listinfo/opentheory-users" target="_blank">http://www.gilith.com/mailman/listinfo/opentheory-users</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; opentheory-users mailing list<br>
&gt;&gt; <a href="mailto:opentheory-users@gilith.com">opentheory-users@gilith.com</a><br>
&gt;&gt; <a href="http://www.gilith.com/mailman/listinfo/opentheory-users" target="_blank">http://www.gilith.com/mailman/listinfo/opentheory-users</a><br>
&gt;&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; opentheory-users mailing list<br>
&gt; <a href="mailto:opentheory-users@gilith.com">opentheory-users@gilith.com</a><br>
&gt; <a href="http://www.gilith.com/mailman/listinfo/opentheory-users" target="_blank">http://www.gilith.com/mailman/listinfo/opentheory-users</a><br>
<br>
_______________________________________________<br>
opentheory-users mailing list<br>
<a href="mailto:opentheory-users@gilith.com">opentheory-users@gilith.com</a><br>
<a href="http://www.gilith.com/mailman/listinfo/opentheory-users" target="_blank">http://www.gilith.com/mailman/listinfo/opentheory-users</a><br>
</div></div></blockquote></div><br>