Hi all, How about defining:
OMIT x = x in markerScript.sml and making it print as ... and adjust HOL so that a theorem with a top-level OMIT does not show up in DB searches. Cheers, Magnus On 12 January 2018 at 00:00, <michael.norr...@data61.csiro.au> wrote: > I was thinking along these lines, yeah. Such theorems could also be stopped > from appearing in the Theory.sig file. > > Michael > > On 12/1/18, 07:31, "Konrad Slind" <konrad.sl...@gmail.com> wrote: > > Theorems that need to persist between sessions are most easily stored by > name > in theories. Maybe some kind of PolyML database magic could also be > used, I don't > know. As far as DB searches, it wouldn't be hard to implement a > refined DB search > mechanism that first discarded all theorems that met some kind of > naming convention > (e.g., those starting with an underscore or something like that) and > then did the usual > search (which can be on name fragment or pattern). > > Konrad. > > > On Wed, Jan 10, 2018 at 7:09 PM, Magnus Myreen <myr...@chalmers.se> wrote: > > Ah, I didn't realise this existed. Thanks for the pointers! > > > > How does storing of theorems work in this setting? One can't construct > > a theorem from a string in a decode function. > > > > I guess the string could refer to a theorem name that's stored in the > > theory, but this is a bit inconvenient because some of the theorems in > > the translator's state are currently not stored in the theory (other > > than in the automatically produced theorem that is an encoding of the > > entire state). I guess an encode function could invent an unused name > > and store the theorem while it's producing the encoding. This can lead > > to some strange things turning up in DB searches (as is the case with > > the current approach). > > > > Cheers, > > Magnus > > > > > > On 11 January 2018 at 11:24, <michael.norr...@data61.csiro.au> wrote: > >> That level of generality is already possible, and has always been a > desideratum for the design. (The grammar update information stored is about > that complicated for example; consider the types that occur in a call to > add_rule.) > >> > >> The painful part is that you have to write functions to encode and > decode the types into and out of strings (because these strings are written > into the theory files). There are functions for doing basic SML types in > src/parse/Coding, and the handling of terms is handled by writing functions > that take functions for doing this as parameters. See the bottom of > src/parse/term_grammar for the encoding and decoding, and > src/parse/GrammarDeltas for the way this is put together for the grammar > example. > >> > >> You can see the fundamental building blocks at the LoadableThyData > structure in src/postkernel/Theory. > >> > >> Certainly, providing a method for going through a generic s-expression > type might be easiest for users to understand, so perhaps I can build that as > well as term lists. > >> > >> Michael > >> > >> On 11/1/18, 11:08, "Magnus Myreen" <myr...@chalmers.se> wrote: > >> > >> Hi Michael, > >> > >> I see that you are considering to add a TermSetData feature. Could > you > >> please add something more general? I'd appreciate a feature that > can > >> store the CakeML translator's state in theories. Currently, the > CakeML > >> translator stores its state in a single theorem so that the other > >> theories can load the state and continue from previous states. > >> > >> As far as I can tell, the ThmSetData machinery (and probably the > >> TermSetData equivalent) won't help with the translator. The reason > is > >> that the translator's state is a collection of lists of list of > tuples > >> of combinations of strings, type, terms and theorems. > >> > >> The current approach encodes all of these structures into a single > >> unreadable theorem. This works but it seems a bit ad hoc and causes > >> huge unreadable theorems to pop up in various DB searches. > >> > >> Suggestion: could we have a way to store a s-expression-like data > into > >> theories? If the s-expressions would allow strings, types, terms, > >> theorems and, of course, pairs/lists of s-expressions, then I think > >> the translator's state could very naturally be stored in theories. > >> > >> Cheers, > >> Magnus > >> > >> > There is generic machinery for adding values of various forms to > theories so > >> > that future theories and ML code can see them. The smoothest > instantiation > >> > is in ThmSetData (in src/1) which allows storage of sets of > theorems in a > >> > “2D matrix” indexed by theory-name and set-name. For example, > the automatic > >> > rewrites behind the “simp” attribute are implemented this way. > >> > > >> > The storage of grammar updates is handled with the same > technology. > >> > > >> > A hacky way to store terms would be to use theorems with > conclusions of the > >> > form > >> > > >> > K T (myterm) > >> > > >> > and to then use ThmSetData. > >> > > >> > A better way, which, now that I’ve been prodded, I may implement > soon, would > >> > be to write a TermSetData. > >> > > >> > I hope this helps. I’m happy to discuss the details of this > relatively > >> > undocumented feature further if you want more help. > >> > > >> > Best wishes, > >> > Michael > >> > > >> > On 11/1/18, 01:51, "Heiko Becker" <hbec...@mpi-sws.org> wrote: > >> > > >> > Hello everyone, > >> > > >> > suppose I have a custom tactic that depends on a list of > terms and I > >> > want to keep adding elements to the list throughout my > development. > >> > I tried to achieve this using a :term list ref on the ML > level. However, > >> > it is the case that if I add some term in theory A and > inspect the list > >> > in theory B, where A is in the theory graph before B, all > elements added > >> > in A are not in the list anymore. > >> > > >> > Can someone give me a hint on why this is the case or tell > me a better > >> > way to "share" a list of terms from a theory with theories > depending on > >> > it? > >> > > >> > Cheers, > >> > > >> > Heiko > >> > > >> > > >> > > ------------------------------------------------------------------------------ > >> > Check out the vibrant tech community on one of the world's > most > >> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > >> > _______________________________________________ > >> > hol-info mailing list > >> > hol-info@lists.sourceforge.net > >> > https://lists.sourceforge.net/lists/listinfo/hol-info > >> > > >> > > >> > > ------------------------------------------------------------------------------ > >> > Check out the vibrant tech community on one of the world's most > >> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > >> > _______________________________________________ > >> > hol-info mailing list > >> > hol-info@lists.sourceforge.net > >> > https://lists.sourceforge.net/lists/listinfo/hol-info > >> > > >> > >> > >> > ------------------------------------------------------------------------------ > >> Check out the vibrant tech community on one of the world's most > >> engaging tech sites, Slashdot.org! http://sdm.link/slashdot > >> _______________________________________________ > >> hol-info mailing list > >> hol-info@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/hol-info > > > > > ------------------------------------------------------------------------------ > > Check out the vibrant tech community on one of the world's most > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > > _______________________________________________ > > hol-info mailing list > > hol-info@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/hol-info > > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ hol-info mailing list hol-info@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/hol-info