<div dir="ltr"><div>It would be helpful, but I don't think it's urgent.<br><br></div>I have made the HOL4 writer detect when a call to defineConstList could be done via defineConst, and use that instead.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On 30 October 2015 at 14:52, Joe Leslie-Hurd <span dir="ltr"><<a href="mailto:joe@gilith.com" target="_blank">joe@gilith.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Ramana,<br>
<br>
Version 5 of the article standard comprises a non-redundant set of<br>
commands (as far as I know), so one way of achieving your goal is to<br>
downgrade a version 6 article to version 5 as follows:<br>
<br>
opentheory info --article -o output5.art --output-version 5 input.art<br>
<br>
This also converts the version 6 defineTypeOp command into the<br>
incompatible version 5 defineTypeOp command, so it's exactly what you<br>
asked for. Also, the inverse transformation from version 5 articles to<br>
version 6:<br>
<br>
opentheory info --article -o output6.art --output-version 6 input.art<br>
<br>
is rather simple-minded and doesn't implement the cool pattern<br>
recognition to create version 6 derived commands from the<br>
non-redundant set of version 5 commands.<br>
<br>
To help developers using the article format, I had been thinking of<br>
adding recipes to the description of the redundant version 6 commands<br>
in the article standard showing how to implement them in terms of the<br>
non-redundant commands, but I never got around to it. Do you think<br>
that would be helpful?<br>
<br>
Cheers,<br>
<br>
Joe<br>
<div><div class="h5"><br>
On Thu, Oct 29, 2015 at 4:25 PM, Ramana Kumar <<a href="mailto:ramana@member.fsf.org">ramana@member.fsf.org</a>> wrote:<br>
> (Also, my simulation of defineConst was totally wrong, but I think you get<br>
> the idea. It just needs to use typeOf(t) in more places, and make the<br>
> variable twice.)<br>
><br>
> On 30 October 2015 at 10:23, Ramana Kumar <<a href="mailto:ramana@member.fsf.org">ramana@member.fsf.org</a>> wrote:<br>
>><br>
>> Even cooler would be to go in the other direction :)<br>
>> (I mean see an article snippet that looks like it's doing defineConst or<br>
>> trans or something, in terms of more primitive commands, and turn it into a<br>
>> call to the derived command instead.)<br>
>><br>
>> On 30 October 2015 at 10:08, Ramana Kumar <<a href="mailto:ramana@member.fsf.org">ramana@member.fsf.org</a>> wrote:<br>
>>><br>
>>> I was originally going to suggesting retiring defineConst, but I have<br>
>>> realised that what I'm really asking is about redundant commands.<br>
>>><br>
>>> The defineConst command is subsumed by the defineConstList command.<br>
>>><br>
>>> Unfortunately, I can't write an implementation of defineConst purely in<br>
>>> terms of other article commands, because the virtual machine provides no<br>
>>> mechanism for retrieving the type of a term, or for keeping track of<br>
>>> available keys in the dictionary. However, any article writer will be able<br>
>>> to do these things.<br>
>>><br>
>>> Then simulating a defineConst command is as easy as doing<br>
>>><br>
>>> defineConstList(assume(mk_eq(varTerm(var n),t)),cons n nil)<br>
>>><br>
>>> where mk_eq corresponds to making an equality between two terms, and n<br>
>>> and t correspond to the arguments to defineConst.<br>
>>><br>
>>> I guess there are already redundant commands in the virtual machine,<br>
>>> though (like trans).<br>
>>><br>
>>> I guess it would be nice (to readers) if there were some switches in the<br>
>>> opentheory tool to produce an article with certain redundant commands<br>
>>> expanded out into a minimal non-redundant core set of commands.<br>
>><br>
>><br>
><br>
><br>
</div></div>> _______________________________________________<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/opentheory/mailing-list" rel="noreferrer" target="_blank">http://www.gilith.com/opentheory/mailing-list</a><br>
><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/opentheory/mailing-list" rel="noreferrer" target="_blank">http://www.gilith.com/opentheory/mailing-list</a><br>
</blockquote></div><br></div>