<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Joe,<div><br><div><div>On 27 Mar 2014, at 22:27, Joe Leslie-Hurd <<a href="mailto:joe@gilith.com">joe@gilith.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Hi Rob,<br><br><blockquote type="cite"><blockquote type="cite">Declare a particular name to be special (e.g., "" or "_") for definition commands, such that when a symbol of this name is defined a reader may substitute a fresh name instead. Then when articles are generated by the opentheory tool it can check which symbols appear in exported theories, and squash all the others to "". This would allow readers with global symbol tables to read articles with internal definitions with no problems.<br></blockquote><br></blockquote><font color="#007316">…</font></blockquote><br><blockquote type="cite">Typically, the next thing that happens is that the theorem and<br>constant are popped off the stack and saved in a dictionary. When a<br>term needs to be built using constant c, it is simply looked up in the<br>dictionary: the article doesn't (and indeed can't) look it up by name.<br>So for internal symbols, their name is really unimportant, and can be<br>replaced with any fresh name. …</blockquote><br><blockquote type="cite">So, do you think the proposed change will help with reading theories<br>into ProofPower?<br></blockquote></div></div><div><br></div><div><br></div><div>Thanks for explaining how this is supposed to work. I am not sure I fully understand why the opentheory tool has to have abstraction mechanisms (local definitions) that aren’t supported by other HOL implementations.</div><div><br></div><div>However, if you feel it is necessary to have a notion of local definitions, then I would suggest we be more explicit about it. I think the article spec should say that there is a local namespace: names beginning “Local.” (say) belong to the local namespace. Once a name in the local namespace has been introduced as a quoted string, all subsequent references to the name are via a dictionary access. Thus the local namespace supports overloading, the dictionary being used to resolve the overloading. A reader may make an arbitrary choice of how to map a local name when it encounters one, providing it avoids clashes with names in other namespaces.</div><div><br></div><div>To help trace what is going on, rather than replacing the name you got from HOL Light or whatever by “” or “_”, I suggest you prefix the original name with “Local.”.</div><div><br></div><div>Regards,</div><div><br></div><div>Rob.</div><div><br></div></body></html>