<div dir="ltr">I was mainly just being lazy about trying to generate an article for a theorem that I "know must be somewhere as an intermediate in the standard library" (although maybe it actually wasn't). I ended up generating an article for it in HOL4, so I don't have a particularly strong need for these features any more. Thanks for your help though - the tips for putting together packages with exact dependencies etc. were useful.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 2, 2015 at 7:31 PM, 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>
What you're proposing is certainly possible, but first I'd like to<br>
understand a bit more about your use-case for accessing intermediate<br>
theorems.<br>
<br>
At present the article standard and opentheory tool conspire to create<br>
an illusion that the intermediate theorems of the theory are<br>
irrelevant, and that only the imported assumptions and exported<br>
theorems are important. As a consequence of this abstraction, tools<br>
that process articles may feel free to replace any or all intermediate<br>
theorems so long as the assumption/theorem interface is maintained.<br>
<br>
Supporting post-hoc extraction of intermediate theorems and promoting<br>
them to exported theorems goes against this philosophy, because an<br>
article processing tool that changed intermediate theorems could break<br>
something downstream that was relying on them having a particular form<br>
to extract and export.<br>
<br>
Given the above, could you please elaborate on your use-case for<br>
accessing intermediate theorems of articles?<br>
<br>
Cheers,<br>
<br>
Joe<br>
<div class="HOEnZb"><div class="h5"><br>
On Sat, Dec 20, 2014 at 9:31 PM, Ramana Kumar <<a href="mailto:Ramana.Kumar@cl.cam.ac.uk">Ramana.Kumar@cl.cam.ac.uk</a>> wrote:<br>
> Hi Joe,<br>
><br>
> On Sat, Dec 20, 2014 at 9:09 PM, Joe Leslie-Hurd <<a href="mailto:joe@gilith.com">joe@gilith.com</a>> wrote:<br>
>><br>
>> > Show me the intermediate (i.e. unexported) theorems that arise when<br>
>> > running<br>
>> > an article.<br>
>><br>
>> No, unfortunately not. The best it can do is tell you *how many*<br>
>> theorems are generated, by using the --inference option.<br>
>><br>
>> Did you have any thoughts on a way to present intermediate theorems to the<br>
>> user?<br>
><br>
><br>
> What would be useful to me is if I could search for intermediate theorems<br>
> with a pattern. I'd guess you'd rather stay away from specifying parsing of<br>
> such patterns. I wouldn't mind, however, writing my pattern as OpenTheory<br>
> article commands for creating a term. I'd then like to get back all<br>
> intermediate theorems that match.<br>
><br>
>><br>
>> > Create an article that exports a previously unexported theorem, taking<br>
>> > an<br>
>> > existing article as input.<br>
>><br>
>> Also no I'm afraid.<br>
><br>
><br>
> That's a pity. Would it be hard to add? Presuming we solve the problem above<br>
> of specifying an intermediate theorem.<br>
><br>
> I guess for the moment I can get around this by using a custom reader that<br>
> looks for the theorem I want and cuts off the article as soon as it finds it<br>
> (and adds on an export). It would be nice if the opentheory tool had enough<br>
> features to support this itself, but maybe it's a little outside your design<br>
> goals? On the other hand, I think a good suite of powerful manipulations on<br>
> OpenTheory packages for a variety of purposes would help buy-in.<br>
><br>
>><br>
>> > Minimise an article for what is required for a particular theorem (I<br>
>> > think<br>
>> > the answer here is yes, by creating a package with the desired theorem<br>
>> > and<br>
>> > then asking for an article for it to be generated...?)<br>
>><br>
>> Indeed. Suppose article foo.art exports a set of theorems containing a<br>
>> theorem T of interest, then you can create an article bar.art that<br>
>> proves T by axiom, and then run<br>
>><br>
>> echo 'a { article: "foo.art" } main { import: a article: "bar.art" }'<br>
>> | opentheory info --article -o baz.art theory:-<br>
>><br>
>> to get a minimal article baz.art proving T.<br>
><br>
><br>
> Great, thanks.<br>
><br>
</div></div><div class="HOEnZb"><div class="h5">> _______________________________________________<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" 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" target="_blank">http://www.gilith.com/opentheory/mailing-list</a><br>
</div></div></blockquote></div><br></div>