#
f5bd5abc |
|
07-Sep-2018 |
Chun Tian (binghe) <binghe.lisp@gmail.com> |
Merged hol-light's cardTheory (rich_cardinalTheory) with HOL4's cardinalTheory
|
#
b4b8e85c |
|
18-Aug-2018 |
Andreas Lööw <AndreasLoow@users.noreply.github.com> |
Don't export ERR from HolKernel
|
#
23b90bc2 |
|
16-Aug-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Prove two simple results about isPREFIX (x <<= y) More complicated results about this constant are ending up in rich_list.
|
#
e2637ef2 |
|
04-Jun-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Define SHORTLEX lexicographic ordering over lists Unlike the traditional dictionary order, this one is a wellorder if the order over the elements is wellfounded.
|
#
6a81a039 |
|
21-May-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Remove TABs from src Will also make selftest to check that they aren't introduced
|
#
376cf5e8 |
|
06-May-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Provide machinery for declaring/exporting monad information Declare options, lists, state-transformers (bad name!) and errorStateMonads as monads. For the moment, this infrastructure is not used, but next step will be to link it into the parsing and printing machinery.
|
#
1e0d2028 |
|
11-Apr-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Re-implement Datatype package with TypeBase sexps (not adjoin)
|
#
4b0a9597 |
|
25-Mar-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix multi-line list forms (incl. records)
|
#
56147e6b |
|
27-Nov-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Prove two simple theorems about OLEAST (one becomes automatic) The automatic rewrite is |- ((OLEAST) P = NONE) <=> !n. ~P n This breaks a proof in listScript, that does become simpler thanks to these theorems now being available.
|
#
84a8966a |
|
26-Nov-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add some theorems from CakeML pred_set: to do with bijections and surjections list: MAP2 and LIST_REL results pair: rewrites with (FST x = y) and (SND x = y) as LHSs other changes are fixes for broken proofs.
|
#
4e468787 |
|
13-Nov-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add oHD and oEL (option-valued) functions from CakeML oEL was called LLOOKUP in CakeML but I don't much like that name.
|
#
194d07c2 |
|
31-Oct-2017 |
Ramana Kumar <ramana@member.fsf.org> |
Add congruence rule for OPT_MMAP From Thomas Tuerk, see #491
|
#
c50549af |
|
19-Oct-2017 |
Chun Tian (binghe) <binghe.lisp@gmail.com> |
Added TeX_notation for "++" in listTheory
|
#
8cc14bfa |
|
09-Oct-2017 |
Magnus Myreen <magnus.myreen@cl.cam.ac.uk> |
Define ZIP with all cases specified The new definition is called ZIP_def. The old definition has the same old name, i.e. ZIP. Closes #463
|
#
4ae6d0a4 |
|
06-Oct-2017 |
Chun Tian (binghe) <binghe.lisp@gmail.com> |
Moved UNIQUE_FILTER and UNIQUE_LENGTH_FILTER to listTheory
|
#
b85ee887 |
|
05-Oct-2017 |
Chun Tian (binghe) <binghe.lisp@gmail.com> |
Uniqueness of list elements (UNIQUE) and 3 alternative definitions
|
#
95d60bd3 |
|
02-Oct-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Remove -- as an alias for Term parser. As per comment in release notes this has long been replaced as appropriate style.
|
#
ac7236c2 |
|
22-Aug-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Provide a Unicode ++ symbol for APPEND Happy to revert this if people hate the look of it - this is mostly an experiment.
|
#
70e6ee11 |
|
10-Aug-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Switch order of listform/::-as-infix declarations in listScript This ensures that list-forms are preferred when possible. Previously the preference for list-forms was hard-coded into the pretty-printing code; now the most recent rule is preferred. Of course, if you write “h::t” that's how it will be printed, as the listform rule doesn't apply.
|
#
4896b7e5 |
|
06-Jun-2017 |
Ramana Kumar <ramana@member.fsf.org> |
Move list thms from multiword to list
|
#
55622e44 |
|
24-Apr-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Get core HOL to build with new definition of "by" Progress with github issue #407
|
#
f52fd90e |
|
26-Mar-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add INJ_MAP_EQ_IFF to listTheory from CakeML's miscTheory
|
#
645ed83c |
|
26-Mar-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix inaccurate comment about dependencies at head of list script
|
#
42004298 |
|
06-Feb-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add monadic map for the option monad (OPT_MMAP) to listScript With type (α → β option) → α list → α list option it maps the function over the list, and if any element maps to NONE, the overall result is NONE. Otherwise, it's SOME of the list of all the "successful" results that appeared under the SOMEs.
|
#
83d939b6 |
|
27-Nov-2016 |
Ramana Kumar <ramana@member.fsf.org> |
Fix proofs in listTheory for LENGTH_NIL rewrites
|
#
0b553410 |
|
27-Nov-2016 |
Ramana Kumar <ramana@member.fsf.org> |
Make LENGTH_NIL rewrites automatic As requested in issue #346.
|
#
9a822fc3 |
|
28-Oct-2016 |
Ramana Kumar <ramana@member.fsf.org> |
Tweak automatic rewrites for TAKE and DROP The previous rewrites introduce COND (if), which is often undesirable. The new rewrites are more constrained but desirable in more contexts. See https://sourceforge.net/p/hol/mailman/message/35184168/
|
#
c2ef1d87 |
|
15-Aug-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Merge operatorTheory into combinTheory This was far too small a theory to live an independent existence. It was included by listTheory so the constant name-space contamination isn't any different for eventual clients.
|
#
5954c68f |
|
14-Aug-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix listLib.FLAT_CONV Include some tests. Closes #358
|
#
e6075cd2 |
|
03-Aug-2016 |
Jeremy Dawson <jeremy@cecs.anu.edu.au> |
listTheory.CARD_LIST_TO_SET_ALL_DISTINCT
|
#
bb06ae24 |
|
28-Jul-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix pre-boss theories in light of pat_assum renaming
|
#
ed192c99 |
|
27-Jun-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Strengthen statement of TAKE_SUM Also tidy up listScript, removing a big local-in-end that made bit cut-and-pastes painful. (If you put your point down in the middle of a local-in-end, and do a cut-and-paste, you will get an syntax error.) For this many theorems at once, better just to export the local declarations to the top-level and deal with the consequent changes. One theorem needed to have its proof adjusted. Closes #330.
|
#
28cc93c6 |
|
04-May-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add new useful rewrite theorems (in list theory) In particular: EL_APPEND_EQN : EL n (l1 ++ l2) = if n < LENGTH l1 then EL n l1 else EL (n - LENGTH l1) l2 LAST_MAP l <> [] ==> (LAST (MAP f l) = f (LAST l)) Make the latter an automatic rewrite. EL_APPEND_EQN is then used to simplify proofs of EL_APPEND1 and EL_APPEND2 in rich_listTheory. From Joseph Chan.
|
#
1f63d5fa |
|
02-May-2016 |
Ramana Kumar <ramana@member.fsf.org> |
Add various theorems from CakeML
|
#
e8457c3a |
|
23-Mar-2016 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Add Theory.quote_adjoin_to_theory. Use this in llistTheory. This should close #304. This has been implemented using a new function Portable.quote_to_string_list. Other uses of adjoin_to_theory under src/ have been updated.
|
#
4e766e8f |
|
23-Mar-2016 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Delete *_tuple constants after they have been used. This one line change seems to address issue #99.
|
#
598a4d32 |
|
17-Mar-2016 |
Ramana Kumar <ramana@member.fsf.org> |
Improve logging of listTheory, axiomatise construction Preivously, the construction via ind_type was leaking out via an induction theorem in TypeBase that was never saved. The fix is to save it (list_INDUCT0) and then use the otd file to delete its proof. It would probably be possible to delete the binding at some point in export_theory, to prevent it actually occurring in the final exported theory, but that may not be worth the trouble.
|
#
9524847d |
|
10-Mar-2016 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Remove some duplicates of the theorem TRUTH. These are: • INFINITE_DEF and IN_LIST_TO_SET (replaced with overloadings) • IN_APP_applied and IN_ABS_applied (inadvertently generated) Also, made changes to try to avoid new definitions in listTheory accidentally having a "_DEF" suffix instead of "_def". Old naming inconsistencies still remain in listTheory (e.g. EXISTS_DEF, FIND_def and FLAT). These changes will break a few proofs but patches should be trivial (i.e. removing references to these TRUTH theorems and/ or renaming "_DEF" to "_def").
|
#
f04b11be |
|
03-Nov-2015 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Remove Unicode under src/
|
#
687a5102 |
|
29-Oct-2015 |
Ramana Kumar <ramana@member.fsf.org> |
add some more OpenTheory names to listTheory also alphabetise the list. list$EL cannot be mapped to Data.List.nth directly because it takes its arguments in the other order.
|
#
fda6dec3 |
|
20-Oct-2015 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Clean src/ to remove Unicode (or to mark it as OK) Marking Unicode as OK is done by putting the UOK tag on the same line of the relevant file.
|
#
0c661e03 |
|
19-Oct-2015 |
Ramana Kumar <ramana@member.fsf.org> |
move some theorems from lprefix_lub into src
|
#
e93d1e09 |
|
20-Sep-2015 |
Konrad Slind <konrad.slind@gmail.com> |
miscellaneous fixes
|
#
75775e50 |
|
20-Sep-2015 |
Ramana Kumar <ramana@member.fsf.org> |
LLEX_CONG not LEX_CONG, also delete some trailing whitespace
|
#
55f466ed |
|
20-Sep-2015 |
Konrad Slind <konrad.slind@gmail.com> |
cong for llex (closes #219)
|
#
03f5ea14 |
|
20-Sep-2015 |
Ramana Kumar <ramana@member.fsf.org> |
add LLEX_MONO (this and 191963d related to #219)
|
#
5e6555a6 |
|
15-Sep-2015 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Rewrites about terms of form ``MAP f t1 = t2`` When t2 is involves a standard list function (CONS, APPEND etc), there are useful possible rhses. When t2 = [x], the rewrite seems sufficiently useful to warrant making the rewrite automatic. Moved from grammarTheory in examples/parsing
|
#
90a608c9 |
|
15-Sep-2015 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Move 2 open declarations to head of listScript.sml
|
#
c9d2272a |
|
13-Aug-2015 |
Ramana Kumar <ramana@member.fsf.org> |
more list theorems from CakeML
|
#
d229eea2 |
|
12-Aug-2015 |
Ramana Kumar <ramana@member.fsf.org> |
mark some theorems as automatic rewrites selection taken from CakeML
|
#
92317114 |
|
08-Jan-2015 |
Michael Norrish <michael.norrish@nicta.com.au> |
Change API of Q's MATCH...RENAME_TACs. Now rather than a string list hanging off the end specifying which variable bindings aren't supposed to induce a renaming, just put underscores into the pattern in those positions. Documentation and release notes updated.
|
#
d2c33299 |
|
05-Nov-2014 |
Michael Norrish <michael.norrish@nicta.com.au> |
Remove some Unicode in src/
|
#
5db1c01a |
|
23-Oct-2014 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Attempt to tidy-up some proof scripts. Much of this has come from CakeML. Removed Unicode and tried to eliminate lines longer than 80 characters. Also added a few new constants to listTheory: INDEX_FIND, FIND and INDEX_OF. Added "nub" to listSyntax.
|
#
48f1b34c |
|
09-Sep-2014 |
Ramana Kumar <ramana@member.fsf.org> |
add new dropWhile constant to listTheory, and various lemmas
|
#
bb871b28 |
|
13-Aug-2014 |
Scott Owens <S.A.Owens@kent.ac.uk> |
Improve nub_set lemma As suggested by Michael Norrish
|
#
9e3f3748 |
|
12-Aug-2014 |
Ramana Kumar <ramana@member.fsf.org> |
move theorems out of finite_mapTheory into (rich)_listTheory they have nothing to do with finite maps
|
#
932238d6 |
|
12-Aug-2014 |
Scott Owens <S.A.Owens@kent.ac.uk> |
Added CakeML list theorems to listScript.sml Added a new function, nub, which removes all duplicates. I'm not sure how to decide what goes in list and in rich_list, so I put everything in list that I could. That is, everything but theorems about rich_list only constants and theorems whose proofs depend on rich_list theorems.
|
#
cd009509 |
|
07-Aug-2014 |
Michael Norrish <michael.norrish@nicta.com.au> |
Fix order of the existentially quantified vars in list_nchotomy thm. This makes the theorem conform to the pattern used by types in the TypeBase. This theorem is stated explicitly here to override the datatype package's choice of variable names, which make a difference when you use Cases_on or Cases.
|
#
76a134f9 |
|
02-Jun-2014 |
Michael Norrish <michael.norrish@nicta.com.au> |
Define the "dictionary order" for lists. Some properties also, including the fact that it isn't usually wellfounded.
|
#
227f847e |
|
19-Feb-2014 |
Michael Norrish <michael.norrish@nicta.com.au> |
Get LIST_APPLY to use <*> syntax via APPLICATIVE_FAPPLY name.
|
#
a945e13f |
|
18-Feb-2014 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Make listTheory's (short-lived) SINGL constant an overload to ``\x. [x]`` It's nice to have SINGL to hand as an abbreviation for the above abstraction (particularly as writing the abstraction will usually require enclosing parentheses, lifting the character count to 9, compared to SINGL's 5). But one doesn't want to see SINGL 3, when [3] is so much nicer. Use the new feature "ignore-for-printing" feature of overload_on (see ac4806d), so this happens. Somewhat sadly, this does mean that although one can write MAP SINGL l, one will get back MAP (\x. [x]) l.
|
#
ac4806d9 |
|
18-Feb-2014 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Implement "ignore overloads for printing" feature. Demonstrate with change to list, so that ``~MEM a l`` prints that way rather than as ``a NOTIN set l``. Selftest checks this, and also that ``x NOTIN {2;3;4}`` continues to print the right way. Closes #95.
|
#
ee233ef6 |
|
06-Feb-2014 |
Michael Norrish <michael.norrish@nicta.com.au> |
List monad related definitions (mimicking what's in option) Also adding the "apply" operator, which is the analogue of what on options would be APPLY (SOME f) (SOME x) = SOME (f x) APPLY _ _ = NONE Prove some relevant theorems.
|
#
a2c23027 |
|
06-Feb-2014 |
Michael Norrish <michael.norrish@nicta.com.au> |
Move export_rewrites of MAP and FLAT earlier in listScript.
|
#
3f5be1d0 |
|
10-Jan-2014 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Syntax support for PAD_LEFT and PAD_RIGHT.
|
#
a28c1f5a |
|
18-Nov-2013 |
Ramana Kumar <ramana@member.fsf.org> |
Revert to using LENGTH instead of LEN Based on some performance experiments done by Anthony. This partially reverts aeb5670.
|
#
aeb56702 |
|
16-Nov-2013 |
Ramana Kumar <ramana@member.fsf.org> |
add tail-recursive SUM for EVAL, and use the tail-rec LENGTH this modifies list_compset, and what is added to the_compset by listTheory. LEN appeared to have been defined but not used.
|
#
3cc8fffb |
|
03-Nov-2013 |
Michael Norrish <michael.norrish@nicta.com.au> |
Minor lemmas about TAKE, DROP and splitAtPki.
|
#
bb667880 |
|
13-Aug-2013 |
Michael Norrish <michael.norrish@nicta.com.au> |
Some new useful theorems from CakeML work.
|
#
49c4c4d7 |
|
15-May-2013 |
Michael Norrish <michael.norrish@nicta.com.au> |
Define a general “split at first element satisfying P” function on lists. Perhaps unnecessarily generic in its use of predicates that also get the indexes of the element and taking a continuation, but the index argument to the predicate can be ignored with K, and to return a pair you just need to pass $, so that splitAtPki (K P) $, is a function that returns the pair of lists where the first element of the second list satisfies P unless there is no such in all of the list, in which case the second list will be empty.
|
#
6fcbc4eb |
|
20-Apr-2013 |
Ramana Kumar <ramana.kumar@gmail.com> |
add various more constants to OpenTheoryMap
|
#
e3fa657e |
|
31-Mar-2013 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Make EVERY2 an alias for the LIST_REL constant. Preserve the EVERY2 theorems, at least for the moment. This issue was first identified in discussion around github issue #98
|
#
dd45cd8e |
|
25-Nov-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Fix lists in world of flipped arguments for case constants. Things like using lazyfy of list_case_compute in EVAL are probably now wrong. Define and case-parsing are generating the right code for the new form of case constant. Pretty-printing is not working correctly yet. Progress with github issue #97.
|
#
47f146b5 |
|
23-Nov-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
add some more OpenTheory names to the map
|
#
0da0732a |
|
08-Nov-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Move rich_listTheory.FLAT_APPEND to listTheory; make it an automatic rewrite. Keep a SML-level alias in rich_listTheory. FLAT_APPEND says |- FLAT (l1 ++ l2) = FLAT l1 ++ FLAT l2
|
#
f0ab91f9 |
|
31-Oct-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Adjust way LIST_TO_SET is defined so it can go into emitted listML
|
#
49e9e963 |
|
30-Oct-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Manually delete {EVERY2,MAP2,FOLDL2}_tupled constants from listTheory. See #98 (clean up listTheory) and #99 (automatically delete unneeded _tupled constants).
|
#
de3324ff |
|
30-Oct-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Delete unused listRel constant from listTheory. It’s identical to LIST_REL, which *is* used in a variety of places. Retain listRel as an overloading for LIST_REL just in case someone ever used that name. LIST_REL stays as the preferred printing form.
|
#
76f4e458 |
|
24-Oct-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Make listTheory.IN_LIST_TO_SET a trivial rwt for backwards compatibility. Its old statement was x IN set l <=> MEM x l but that is now an instance of reflexivity given MEM's overloading.
|
#
b033ece3 |
|
21-Oct-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Build all of src/list/src and up to integer_word. See #52. listSyntax loses mem_tm, but retains a mk_mem and a dest_mem that do the obvious thing.
|
#
d1e604d3 |
|
21-Oct-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Get listTheory to build in features/mem-abbrev branch. See #52.
|
#
f42df6bf |
|
19-Oct-2012 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Start of work to replace MEM with λx l. x ∈ set l. See #52.
|
#
ce8660a0 |
|
15-Oct-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
Theorem characterising NULL (FILTER P ls)
|
#
c3828082 |
|
15-Oct-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
Theorem characterising (SUM ls = 0)
|
#
a038559d |
|
10-Oct-2012 |
Magnus Myreen <magnus.myreen@cl.cam.ac.uk> |
REPLACE_ELEMENT --> LUPDATE Thomas showed me that REPLACE_ELEMENT is the same as LUPDATE. In this commit, I moved REPLACE_ELEMENT from rich_listTheory to listTheory and rename it LUPDATE -- deleting the old definition of LUPDATE. I also updated examples/machine-code which uses LUPDATE.
|
#
a571fb7c |
|
02-Oct-2012 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Minor tweaks to list compset.
|
#
5a262a93 |
|
01-Oct-2012 |
Magnus Myreen <magnus.myreen@cl.cam.ac.uk> |
LUPDATE added to listTheory
|
#
d46b841e |
|
20-Sep-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
move some theorems about DROP and LIST_REL into listTheory
|
#
0536d07d |
|
11-Sep-2012 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Change EVAL behaviour for TAKE and DROP. Following check-in 994d485, rich_listTheory no longer adds compute theorems for TAKE and DROP to the_compset (they were added by the Define in listTheory). Before that check-in EVAL ``DROP 0 x``; EVAL ``TAKE 0 x``; would give |- DROP 0 x = x |- TAKE 0 x = [] when rich_listTheory was loaded. However, after that check-in these terms would remain unchanged. This check-in ensures that the former behaviour is restored.
|
#
994d4858 |
|
27-Aug-2012 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Overhaul to rich_listTheory (it had become a bit of a disaster area). Some points: 1. rich_listTheory now uses the same constant names that are used in listTheory, e.g. TAKE instead of FIRSTN. 2. listTheory theorems are no longer replicated (saved again) in rich_listTheory. This avoids DB.match returning multiple instances of the same theorem. It also avoids saving around 100 theorems twice — in some cases after re-proving them. 3. Compatibility is now maintained though a bunch of SML "val" assignments added using adjoin_to_theory, e.g. val ZIP_FIRSTN_LEQ = ZIP_TAKE_LEQ val ALL_DISTINCT_SNOC = listTheory.ALL_DISTINCT_SNOC 4. Some incompatibilities are introduced: * FRONT___LENGTH is deleted, since it is the same as rich_listTheory.LENGTH_FRONT. * COUNT_LIST___ADD -> COUNT_LIST_ADD * COUNT_LIST___COUNT -> COUNT_LIST_COUNT * The compute theorems for COUNT_LIST and SPLITP have been renamed. * Some other theorems are no longer saved, e.g. rich_listTheory.list_INDUCT 5. Some theorems in listTheory have gained quantifiers.
|
#
fa6472be |
|
31-Jul-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
Revert "make patricia play nice..." This reverts commit da47401d5163b28a320790e7acca897d8374880c. Reason: qualified names in the list of add_persistent_funs exports are supposed to work. See comments on #73. The reason why they probably weren't working before is that you need to use a name like: "pred_set.FINITE_EMPTY" not "pred_setTheory.FINITE_EMPTY" Conflicts: src/list/src/listScript.sml src/patricia/patriciaScript.sml src/patricia/patricia_castsScript.sml src/pred_set/src/pred_setScript.sml (Conflicts all due to change in add_persistent_funs interface.)
|
#
0fc75877 |
|
30-Jul-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
change interface to add_persistent_funs (#73) and fix more calls The new interface takes a list of strings naming theorems. (The old interface took a list of (string * thm) pairs.) The new way better ensures consistency of theory development and theory load behaviour: you can no longer pass a name with a theorem that isn't actually saved under it. Theorems are looked up with DB.theorem, or failing that, DB.definition or DB.axiom. Alas, I found more examples using add_persistent_funs to add theorems in ancestor theories. Rather than modify the ancestor theories, I have opted to make the offending theories save the theorems they want to add to computeLib themselves so they have a name in the current theory to pass to add_persistent_funs. If this behavior was appropriate for patricia too (da47401) change it. Alternatively, if the ancestor theories should have exported those things for computeLib anyway, search this commit for new instances of "save_thm" to see what needs fixing.
|
#
da47401d |
|
30-Jul-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
make patricia play nice with new add_persistent_funs (#73) Some theories in src/patricia were calling add_persistent_funs for definitions from other theories (list and pred_set) and using the arbitrary code string to refer to those theorems with fully qualified names. The fix adopted here is to call add_persistent_funs for those constants in the theories where they are defined.
|
#
0d7816e7 |
|
03-Jul-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
add more automatic rewrites to listTheory in particular LENGTH_ZIP, and other stuff involving ZIP and UNZIP
|
#
eecd2db0 |
|
01-May-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
theorem about FOLDR of a function that does CONS (this generalises rich_listTheory.FOLDR_CONS_NIL)
|
#
9c8c1009 |
|
18-Apr-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
theorem: MAP preserves injectivity Maybe the statement/name should match my commit summary better? Also, proved a simple lemma about replacing the set arguments to INJ with super/subsets.
|
#
dbd46cf7 |
|
18-Apr-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
theorem: ALL_DISTINCT (MAP f ls) ==> ALL_DISTINCT ls
|
#
81e98a1b |
|
18-Apr-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
rewrites for MAP/FOLDLing a list ZIPped with itself
|
#
efb68c09 |
|
18-Apr-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
theorems relating FOLDL2/EVERY2 back to FOLDL/EVERY also, export FOLDL2_def as a rewrite, and provide an alias ("MAP2_MAP") for the analogous theorem (also called "MAP2_ZIP") for MAP2.
|
#
af74bc0a |
|
18-Apr-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
theorems validating computation of BIGUNION by FOLDL of UNION
|
#
6d0e6187 |
|
13-Apr-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
new theorems about SORTED The most interesting concludes that two lists are equal if they are both sorted and are permutations of each other. Another characterises SORTED R ls as !m n. m < n ==> R (EL m ls) (EL n ls).
|
#
bc4e157f |
|
12-Apr-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
Some "ListPair" functions: FOLDL2 and EVERY2
|
#
1847c865 |
|
02-Apr-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
totalize MAP2 and export a congruence theorem for it and use it in the miniml compiler
|
#
3ca77ea9 |
|
19-Mar-2012 |
Ramana Kumar <ramana.kumar@gmail.com> |
theorem about SUM of MAP
|
#
10dd63f2 |
|
16-Mar-2012 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Support list_compset evaluation of TAKE, DROP, PAD_LEFT, PAD_RIGHT and isPREFIX. Also make evaluation of REVERSE more efficient.
|
#
7d1efb5f |
|
01-Mar-2012 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
New results about "splitting" lists up with append. Also prove SNOC's injectivity, and make more of SNOC's rewrites automatic.
|
#
c5ad0239 |
|
21-Feb-2012 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Remove unnecessary reference to prim_recTheory.PRIM_REC_THM. I'm tempted to simplify prim_recTheory; its internal PRIM_REC and SIMP_REC constants aren't really necessary for the proof of num_Axiom, and they're not used externally.
|
#
79d7cf13 |
|
08-Feb-2012 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Some more theorems about LIST_REL. LIST_REL_MAP1 uses composition and allows for anything in the R position. LIST_REL_MAP2 requires an abstraction in the R position and so can directly apply the f to an abstracted variable. There is a version of this that looks like LIST_REL R l1 (MAP f l2) = LIST_REL (combin$C ($o $o R) f) l1 l2 and this can be made to do the right thing when R is an abstraction with subsequent rewrites from combinTheory, but it looks so confusing that I thought we might as well restrict it to the case when R is already an abstraction.
|
#
f8fd8324 |
|
02-Oct-2011 |
Ramana Kumar <ramana.kumar@gmail.com> |
add various names to the OpenTheory map This is in preparation for logging llistTheory. Notes: - Sent combin$C to Function.Combinator.c (same for combin$S). Another name might be preferred on the OpenTheory side. - Not sure what bool$BOUNDED is about; dumped it in the HOL4 namespace. - Put lots of pred_set constants in the Set namespace, but in the standard (OpenTheory) library it seems like Set is for constants operating on an abstract type of sets (rather than predicates). I'm not sure whether we should use a different namespace when working with sets-as-predicates or just pretend predicates are the abstract type and do a bit of magic on article reading/writing as necessary (don't know what that would be exactly yet). - Similar for constants in set_relation, which I'm currently putting in the Relation namespace. Although it looks like currently OpenTheory doesn't use an abstract type of relations (but probably it will later). - Sent marker$Cong and marker$Abbrev to Unwanted.id, but not sure if Unwanted.id is supposed to be polymorphic (whereas those are identity functions restricted to bool). Similar for numeral$iZ - sent GSPEC to Set.specification; maybe not an obvious name... - Using top-level "While" namespace for whileTheory - dumped numeral$iiSUC in HOL4 namespace; not sure what to do with it - BIT2 is going to Number.Numeral.bit2; this is in line with wanting the base library to be liberal, i.e. a union of all useful basic constants and theorems (so has bit0, bit1 and bit2)... but I think there may be competing goals for base
|
#
a2328149 |
|
23-Sep-2011 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Adopt ML-style syntax for case expressions and use freed up "||" for bitwise-or. See issue #24.
|
#
1af7dc8b |
|
16-Sep-2011 |
Ramana Kumar <ramana.kumar@gmail.com> |
better match intended semantics of OpenTheory names rather than using strings, now have a type abbreviation otname for string list * string. it might be worth writing more operations on this type (like for manipulating the namespace).
|
#
8043890e |
|
31-Aug-2011 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Minor tweaks to evaluation.
|
#
25da727d |
|
24-Jul-2011 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Terms and labelled terms now derived from generic terms. This is a big change that points to the implementation of a complete nominal datatype package. The use of generic terms means that we only need to do one hairy quotient, and one hairy derivation of a recursion principle. The recursion principle in question features a new "FCB" (one of the side-conditions that need to be proved in order to get a recursive function admitted). Though I think it's better, it can be a little fiddlier to prove. It's also stronger, so in theory, there may be reasonable functions that the new FCB rejects. It should certainly be possible to automate the bulk of the new fiddly proofs.
|
#
0bbd2a7e |
|
21-Jun-2011 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Rename TruePrefix to Prefix; use fixity options with NONE for what was Prefix. 90+% of this work was done by Ramana Kumar. The following list are the commits for a series of individual commits that have been squished into one big change: * remove mention of TruePrefix from the add_rule docfile * first batch of changes removing TruePrefix from src/parse * replace TruePrefix by Prefix in boolScript.sml * remove TruePrefix from Rsyntax is a fixity ever required for new_specification? * some more Prefix -> NONE and TruePrefix -> Prefix in theories * TruePrefix changes for datatype * TruePrefix changes for res_quan * TruePrefix->Prefix in a TeX selftest * TruePrefix changes for quotient * TruePrefix changes for integer and real * fix quotient examples for TruePrefix removal * more fixes for quotient examples * fixes for lambda example for TruePrefix removal * Reword description manual in light of removal of TruePrefix. * Fix msgTheory quotient example; Poly 5.3 had problems with monotypes. * Fixes for files in examples/lambda given removal of TruePrefix. * Fix in examples/unification given removal of TruePrefix. * Fix in examples/HolCheck given removal of TruePrefix. * Fixes in examples/acl2 given removal of TruePrefix.
|
#
8f4796ed |
|
06-Jun-2011 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Some extra list theorems.
|
#
c1ab31ef |
|
04-May-2011 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Remove some Unicode that has crept into scripts.
|
#
b5e57bd0 |
|
08-Mar-2011 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Move PAD_LEFT and PAD_RIGHT from stringTheory to listTheory. Also, patch up emit scripts following GENLIST moving from rich_list to listTheory.
|
#
34d0d4a4 |
|
16-Jan-2011 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Prove and export thm that SET_TO_LIST {} = [].
|
#
557a0bbb |
|
11-Jan-2011 |
Ramana Kumar <ramana.kumar@gmail.com> |
Add an OpenTheoryMap analogous to TexTokenMap Also, add names for various type operators and constants in boolTheory, listTheory, and numTheory so that the Opentheory selftests now pass without having to set up those name mappings themselves.
|
#
0294e4ff |
|
02-Jan-2011 |
Ramana Kumar <ramana.kumar@gmail.com> |
Theorem about adding items in chunks of equal size That is, SIGMA f (count (k * n)) = SIGMA g (count n), where g adds k-sized chunks of f. Also moved SUM_APPEND to listTheory.
|
#
e3ef7188 |
|
17-Dec-2010 |
Ramana Kumar <ramana.kumar@gmail.com> |
New theorem REVERSE_GENLIST, and moved EL_REVERSE to listTheory Used DECIDE_TAC at the end of EL_REVERSE's proof instead of also moving another lemma from rich_listTheory.
|
#
ad70bd92 |
|
14-Dec-2010 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Restore support for evaluation of GENLIST, which was broken by recent changes.
|
#
78a27a83 |
|
09-Dec-2010 |
Ramana Kumar <ramana.kumar@gmail.com> |
Couple of equivalences about GENLIST In particular MEM and ALL_DISTINCT on GENLISTs. Proof of the latter is messy - probably can be done better. Moved another SNOC theorem to listTheory.
|
#
df6f42db |
|
09-Dec-2010 |
Ramana Kumar <ramana.kumar@gmail.com> |
Couple of theorems about SUM (MAP f l) Also moved 2 requirements from rich_list to list
|
#
84c56547 |
|
09-Dec-2010 |
Ramana Kumar <ramana.kumar@gmail.com> |
Move SNOC_INDUCT and SNOC_CASES into listTheory
|
#
14ffc72c |
|
09-Dec-2010 |
Ramana Kumar <ramana.kumar@gmail.com> |
Prove ITSET is indeed a fold-like operation
|
#
d360c7b9 |
|
21-Aug-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
New theorem relating LIST_TO_SET and FILTER.
|
#
291b0279 |
|
17-Aug-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Move LIST_REL from quotient_list to list, and make it more polymorphic. The extra polymorphism makes LIST_REL usable in inductive definitions, as I have done in the generic_terms example. It doesn't interfere with the use made of it in the quotient library.
|
#
72bdc926 |
|
17-Aug-2010 |
Ramana Kumar <ramana.kumar@gmail.com> |
Two theorems about SUM of lists.
|
#
947adf60 |
|
17-Aug-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Put GENLIST computation with numerals back into automatic simpset. This broke one proof of Anthony's that didn't want GENLIST f 16 expanded (for good reason). Fixed it by abbreviating the 16 into a variable.
|
#
f48c6820 |
|
16-Aug-2010 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Fixes and tweaks following check-in 8434 (GENLIST moving to listTheory).
|
#
8c19eff0 |
|
14-Aug-2010 |
Ramana Kumar <ramana.kumar@gmail.com> |
Moved GENLIST from rich_list to list. Also moved some theorems about SNOC and about MAP.
|
#
1a2269a1 |
|
20-Jul-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Give isPREFIX symbols TeX equivalents.
|
#
7b73c8d7 |
|
16-Jul-2010 |
Konrad Slind <konrad.slind@gmail.com> |
src/num/theories/SingleStep.{sig,sml} is gone. The defininitions of Cases, Cases_on, Induct, Induct_on, CASE_TAC (and co.) are now in basicProof/BasicProvers. completeInduct_on and measureInduct_on are now in numLib. recInduct is now in src/tfl/Induction.sml. All these are collected in bossLib, so the changes should be invisible to ordinary users. SingleStep.*.doc has been changed accordingly. BasicProvers.NORM_TAC should now automatically perform all case splits (from if-then-else expressions as well as case expression) arising anywhere in the goal.
|
#
0e2788b5 |
|
22-Jun-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
INFINITE is now an abbreviation for ``\s. ~FINITE s``.
|
#
38724691 |
|
14-Jun-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Prove some results about the finite-ness or otherwise of some universal sets.
|
#
47126bc5 |
|
18-Mar-2010 |
Thomas Tuerk <Thomas.Tuerk@cl.cam.ac.uk> |
Modications to simpsets and compsets for lists with respect to the evaluation of EL. This requiered some minor additions to listTheory. I used the change to add some more simple rewrites and definition that I use in my separationLogic example. As discussed on the HOL-developers mailing list (18 March 2010, 3:33 pm, "Simpsets and compsets for lists / evaluation of EL"), I had trouble with the standard compsets and EL. If applied to a term "EL n l" where "n" was not a ground term these compsets diverged. That is changed now. For ground terms the evaluation should behave the same, for non-ground ones it will now terminate. The simpsets terminated, but evaluated EL as long as possible. For example ``EL 5 (x1::x2::xs)`` got converted to "|- EL 5 (x1::x2::xs) = HD (TL (TL (TL xs)))". That has been changed and now the result is "|- EL 5 (x1::x2::xs) = EL 3 xs". The main additional definition I added is "LIST_COUNT" to rich_listTheory. ``LIST_COUNT n`` evaluates to the list [0;1;...;(n-1)].
|
#
62556f94 |
|
07-Mar-2010 |
Ramana Kumar <ramana.kumar@gmail.com> |
Added a couple of theorems about ALL_DISTINCT of a ZIP to listTheory.
|
#
ee521823 |
|
01-Mar-2010 |
Ramana Kumar <ramana.kumar@gmail.com> |
Added LIST_TO_SET_SNOC to listTheory.
|
#
8140fac1 |
|
01-Mar-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Move Thomas' list_eq_simp_ss to listSimps and make it automatic. This requires the movement of SNOC and some theorems from rich_list to list. Making the simpset fragment automatic may break proofs by solving more than expected.
|
#
58f60751 |
|
20-Jan-2010 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Add evaluation support for FCP index and update. This has required fixing a problem with the evaluation of EL, namely EVAL ``EL i x`` didn't terminate.
|
#
6ee59f2d |
|
19-Jan-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add automatic, obvious rewrites about REVERSE to listTheory. * Make duplicates in rich_list just point to listTheory * Minor change to a proof in patricia_casts also required.
|
#
85857b85 |
|
25-Dec-2009 |
Ramana Kumar <ramana.kumar@gmail.com> |
New constant LRC which is like NRC but records the list of nodes in the path between two nodes linked by the transitive closure of a binary relation, rather than just the number of steps
|
#
1453bd58 |
|
24-Dec-2009 |
Ramana Kumar <ramana.kumar@gmail.com> |
removed utf-8 from my last commit
|
#
53242af3 |
|
22-Dec-2009 |
Ramana Kumar <ramana.kumar@gmail.com> |
some theorems about LIST_TO_BAG and LIST_TO_SET
|
#
79310022 |
|
17-Nov-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add a new theorem |- (LIST_TO_SET l = {}) <=> (l = []) Actually add a version of this to cover the lhs's equality the other way 'round. Make this an automatic rewrite. Clean-up some proofs about ALL_DISTINCT, and reorder things to put LIST_TO_SET and SET_TO_LIST stuff together.
|
#
049bd76d |
|
15-Oct-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Two theorems about lists suggested by Ramana Kumar.
|
#
217f5e95 |
|
14-Oct-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add a couple of theorems about LAST, inspired by a suggestion from Ramana Kumar.
|
#
4761143b |
|
10-Aug-2009 |
Tjark Weber <Tjark.Weber@cl.cam.ac.uk> |
Removed trailing whitespace from all .sml and .sig files. This affects over 900 files and was done using emacs's delete-trailing-whitespace function in batch mode. Building the system with Poly/ML and Moscow ML seems to work, so I'm hoping these changes don't break anything. Please complain if they do!
|
#
38c83a4b |
|
24-Mar-2009 |
Thomas Tuerk <Thomas.Tuerk@cl.cam.ac.uk> |
Theorem MEMBER_NOT_NIL is renamed to NOT_NULL_MEM and it's syntax is slightly changed, because it did not fit into the naming schema.
|
#
7cbc6783 |
|
23-Mar-2009 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Remove some theorems that Thomas added to listTheory. Also added TRAVERSE_AUX which is now used to evaluate TRAVERSE and KEYS.
|
#
d223cfaa |
|
19-Mar-2009 |
Thomas Tuerk <Thomas.Tuerk@cl.cam.ac.uk> |
theorems by Anthony Fox and Thomas Tuerk added
|
#
8654de63 |
|
07-Feb-2009 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Attempt to tidy up (fix) EmitML and finish off the transition that Scott started. EmitML has been moved to the end of the build sequence. "Hooks" have been eliminated and all EmitML related stuff has been removed from the various theory directories. All code for generating ML/Caml is now self-contained within src/emit. I've not tested the generated Caml code but the SML seems to build fine. The directories: src/theoryML src/theoryOcaml src/emitScript have been replaced by src/emit/theories/ML src/emit/theories/Caml src/emit/theories
|
#
168f13e5 |
|
01-Feb-2009 |
Scott Owens <Scott.Owens@cl.cam.ac.uk> |
Started moving EmitML code out of source scripts and into a single source script "libraryScript.sml" in src/emitScript, adding calls to emitCAML alongside the emitML calls in libraryScript.sml.
|
#
db8ac187 |
|
04-Dec-2008 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Create an isPREFIX constant in listTheory, and subsequently: * use <<= as an infix version of isPREFIX, with Unicode version the LaTeX symbol \preceq (U+227C) * map rich_listTheory's IS_PREFIX to be the same, but with the arguments reversed (i.e., IS_PREFIX -> \x y. isPREFIX y x). Take care to make rich_listTheory.IS_PREFIX look exactly the same as before in terms of variable names, universal quantification etc * map stringTheory's isPREFIX to just be listTheory's. Next steps: * move across some of rich_listTheory's theorems about isPREFIX to be in listTheory * maybe move across IS_SUFFIX, perhaps once I've figured out what the order of the arguments should be, and what the infix operator should look like
|
#
d9003833 |
|
26-Nov-2008 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fairly dramatic change, supporting the use of "syntactic patterns". It is now possible to overload a name to term (typically a lambda-abstraction) in order to create syntax-only definitions. For example, there is a definition of not-equals now in the system: val _ = overload_on ("<>", ``\x y. ~(x = y)``) val _ = set_fixity "<>" (Infix(NONASSOC, 450)) This definition is parsed and pretty-printed. Two other annoying changes. The interface for adding unicode variants has changed, and I have made precedence level 450 of the parser non-associative. This latter change has caused most of the (minor) adjustments to the files below. The regression test doesn't go through yet. (Currently there is a failure in quotient/examples/sigma that I don't understand.)
|
#
effc431b |
|
01-Oct-2008 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Change export_rewrites back to its old API (without requiring an extra string). When exported, the resulting simpset fragment always picked up the name of the theory to be the base of its name, so there didn't seem much point in giving users a false impression of naming power.
|
#
aed05f4e |
|
20-Jul-2008 |
Konrad Slind <konrad.slind@gmail.com> |
A whole mess of small changes intended at making simpsets prettyprint informatively in the interactive loop. Very possibly I haven't updated all the files in the examples directories.
|
#
6492698b |
|
18-Jul-2008 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add a proof of (REVERSE l = []) = (l = []) (also already proved in rich_listTheory), and make it an automatic rewrite with srw_ss().
|
#
ed09dad7 |
|
17-Feb-2008 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Move pred_set to be earlier in the build sequence, making it an ancestor of listTheory, and available in bossLib. The various LIST_TO_SET and SET_TO_LIST theorems are now available in listTheory. Also introduce the set abbreviation for LIST_TO_SET that I've found very useful. Documented in release notes as an incompatibility. Incidentally reckon containerTheory might be something we could do away with entirely.
|
#
71f60b68 |
|
13-Jan-2008 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
* Add TAKE and DROP constants to listTheory, along with a few simple theorems about them * Make FIRSTN and BUTFIRSTN in rich_listTheory aliases for the above, though the constants are now more defined than they were * Preserve theorem forms in rich_listTheory * Preserve FIRSTN_CONV and BUTFIRSTN_CONV behaviours (adding selftest too)
|
#
9a4cd0f5 |
|
15-Mar-2007 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Prove a tfl-congruence theorem for OPTION_MAP so that recursion can happen underneath it OK and give plausible termination requirements. Also provide an additional "export" interface for adding to the DefnBase. This saves having to write adjoin_to_sml code in Script files. Use this new style for OPTION_MAP and the congruence rules in listTheory. (We now have three databases of this form (monotonicity results for inductive relations, simplification rewrites, congruences for tfl); there may be an elegant generalisation possible...)
|
#
611d3a31 |
|
13-Sep-2006 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
These extra monotonicity results should help get more inductive definitions made.
|
#
b458dfe5 |
|
12-Sep-2006 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Change to the inductive relations definition code to support a global, and updated "monoset", which can be updated as theories load, thereby invisibly increasing the capabilities of Hol_reln. Also simplify the implementation of derive_strong_induction, and move the entrypoint to IndDefLib. New test in src/IndDef/selftest.sml wouldn't have passed before (I believe). It is more onerous than Peter's original monoset example, which didn't feature recursion under the EVERY operator. Documented in Description and release notes. Still to update theories with appropriate calls to export_mono. (export_mono and export_rewrites are now part of bossLib's interface.)
|
#
3f19462e |
|
21-Aug-2006 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
The change to the interface of derive_strong_induction hits these scripts - the fix makes the call easier to make.
|
#
4cb49006 |
|
12-Jul-2006 |
Konrad Slind <konrad.slind@gmail.com> |
Changes having to do with generating ML. System should build again.
|
#
1a7e87bc |
|
26-Jun-2006 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Want to make this part of the InductiveDefinitions package (which will need to be told that listRel is monotone). Currently the default interface there uses a fixed monotonicity set, rather than one that can be updated with new monotonic constants like this one.
|
#
5c8f5906 |
|
22-Jun-2006 |
Konrad Slind <konrad.slind@gmail.com> |
Minor changes and bugfixes to ML code generation. Have renamed EmitML.exportML to EmitML.emitML, since exportML is used in SML/NJ to dump the image. Also renamed Globals.exportMLPath to Globals.emitMLDir (since it's a directory and not a path). Also fixed bug in code generated for constructors and tuples.
|
#
d67d1999 |
|
14-May-2006 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Extend the add_listform interface so that the user can specify a printing "consistency" for the block of list elements. Previously, it was just assumed that the user always wanted (INCONSISTENT,0). This is the value now specified in the various places where add_listform is used.
|
#
014f6140 |
|
15-Feb-2006 |
Konrad Slind <konrad.slind@gmail.com> |
Changed the TypeBase to be indexed by types. Originally it was indexed by a single string (representing the type operator), then Michael changed it to a pair of strings (precise representation of the type operator). The latest change allows non-datatypes to be added to the TypeBase. This will allow case analysis and termination proofs to be supported for non-datatypes. I reckon there are still a few bugs left after the massive revision, so you might want to wait a while before upgrading.
|
#
13f030c2 |
|
07-Feb-2006 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Wide-ranging change to make the TypeBase export an interface forcing users to be concerned about which theory their types are from. Interactive users of the "induction_of", "axiom_of" and similar functions are thrown the only bone: they can effectively omit the theory parameter by using "" instead of a theory name. Prompted by a bug found by Tom Ridge where it was impossible to define a pattern matching function on a type with the same name as another type because the pattern-matching code was using dest_type and TypeBase.read on just the type-operator name.
|
#
9a1c3cfb |
|
03-Nov-2005 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add simplifier-safe treatment of EL (and use this in lbtreeScript).
|
#
adf911c8 |
|
25-Jul-2005 |
Konrad Slind <konrad.slind@gmail.com> |
Revised exportML so that it takes a path parameter, which tells where the ML corresponding to a theory is to be written. This has been propagated to all the theories that already export ML, and the mkword.exe tool has been upgraded to also take a path where it should write the generated ML. This is useful, because doing an exportML to the same directory as the theory files will end up confusing Holmake.
|
#
8477a081 |
|
16-Jan-2005 |
Konrad Slind <konrad.slind@gmail.com> |
Had the wrong name.
|
#
f81bb340 |
|
16-Jan-2005 |
Konrad Slind <konrad.slind@gmail.com> |
Added equality versions of induction theorems. Sometimes this can let you do induction proofs by rewriting. For example, !L1 L2. LENGTH (L1 ++ L2) = LENGTH L1 + LENGTH L2 can be proved by RW_TAC list_ss [FORALL_LIST]. But just as often it doesn't do the right thing ...
|
#
d83dac8e |
|
10-Sep-2004 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Alter the fixity information for ++ so that it is looser than :: Thus, the theorem for APPEND becomes h::t ++ l = h::(t ++ l) rather than (h::t) ++ l = h::t ++ l where the RHS of the latter is quite misleading. Also fix fixedPointTheory to be compatible with all this.
|
#
134841c4 |
|
20-Aug-2004 |
Konrad Slind <konrad.slind@gmail.com> |
Small changes.
|
#
c0acefca |
|
20-Aug-2004 |
Konrad Slind <konrad.slind@gmail.com> |
Per Michael's suggestion, "++" is now infix for APPEND. Let me know if that causes problems. VS: Committing in .
|
#
80fcfcc4 |
|
19-Aug-2004 |
Konrad Slind <konrad.slind@gmail.com> |
Added tail-recursive versions of REVERSE and LENGTH. Neglected, however, to add them into various simplification sets ...
|
#
138d26bb |
|
04-Aug-2004 |
Konrad Slind <konrad.slind@gmail.com> |
ML code generation for finite_map now added. Also, a whole host of minor changes and robustifications have been applied.
|
#
efe9e0b4 |
|
29-Jul-2004 |
Konrad Slind <konrad.slind@gmail.com> |
*** empty log message ***
|
#
4f847b90 |
|
28-Jul-2004 |
Konrad Slind <konrad.slind@gmail.com> |
Ignore this ... I'm just using CVS to transfer files from home to work.
|
#
e1ce48c7 |
|
27-Jul-2004 |
Konrad Slind <konrad.slind@gmail.com> |
Added a bit of FAIL-related theorem proving. More still to be added here for things like FRONT, LAST, MAP2, and ZIP.
|
#
1f3dbeaf |
|
21-Jul-2004 |
Konrad Slind <konrad.slind@gmail.com> |
Minor changes.
|
#
f76f6195 |
|
19-Jul-2004 |
Konrad Slind <konrad.slind@gmail.com> |
Some useful lemmas.
|
#
24fffbcf |
|
13-Jul-2004 |
Konrad Slind <konrad.slind@gmail.com> |
Misc. tweakery.
|
#
1eadaac4 |
|
07-Jul-2004 |
Konrad Slind <konrad.slind@gmail.com> |
Upgrades to ML code generation. It now works for numerals, although the results of a computation will be incomprehensible usually. Writing a prettyprinter needs to be done.
|
#
56060992 |
|
04-Jul-2004 |
Konrad Slind <konrad.slind@gmail.com> |
Export ML from list theory.
|
#
e346bdd2 |
|
28-Jun-2004 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add EXISTS_DEF to the set of things automatically expanded by srw_ss(). (EVERY_DEF is already there.)
|
#
b2a45780 |
|
01-Jun-2004 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Move LIST_TO_SET into listTheory from containerTheory as part of my general campaign to move set "things" as early as possible into the build sequence. Also add various theorems about lists and bags.
|
#
efc5d2c3 |
|
13-Jan-2004 |
Konrad Slind <konrad.slind@gmail.com> |
Added LAST to the functions known to EVAL.
|
#
97dd94d0 |
|
30-Oct-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
This theorem had been missed out as a useful rewriting export.
|
#
9d63eb9e |
|
02-Oct-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Sorry! I've realised that there's a better way of doing what I want within the netsem code-base, and that I don't need to make any changes to the way HOL currently does things. More, that letting HOL stay just the way it was is probably better. So, this change is to put the code I meddled with over the last couple of days back the way it was originally. (Minor exceptions include changes to comments, elimination of unnecessary infix declarations, and revealing a PAIR0_ss that is equal to PAIR_ss minus LET_ss.)
|
#
ca0a8d5e |
|
29-Sep-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
A new approach to handling LETs for the stateful rewriter. Introduces an incompatibility in that bool_ss no longer rewrites LET f x to f x (std_ss still does though). The new strategy is: Don't put LET_THM into any of the simpsets, but rather put in specialised versions of this that allow "values" to be substituted into the body. Thus ``let v = e1 in e2`` will only reduce to e2[e1/v] when e1 has been reduced to a proper value. Better, allow partial substitution to happen when e1 has become partially value-like. For example, if we get to let v = SUC e in v + v and e isn't necessarily evaluated, we can still move this to let v = e in SUC v + SUC v The rewrite for this is |- LET f (SUC e) = LET (\v. f (SUC v)) e Comparable rewrites for constructors of any type are easy to state and prove. Arguably, these theorems should be generated when new types are defined, and stored in the TypeBase. Because I know Konrad will be (is already?) messing with the TypeBase to support ML lifting, I haven't done this for Hol_datatype (it's not quite so easy to see how to capture the notion of "record value"). I have written the appropriate theorems for the obivous built-in types. This strategy gives the simplifier a notion of "value" that is different from "can't reduce any more by the given rewrites" (which is what CBV_CONV uses). The problem with CBV_CONV, or a congruence rule that always performs the reduction from LET f e to f e is that you can get big explosions in term size, which is particularly bad if you are doing symbolic evaluation. Have fixed problems arising in probability (which was using its own version of std_ss, and those places where srw_ss() is being used. The examples/lambda directory uses SRW_TAC pretty extensively, so there are fixes required there. The easiest way is to just put LET_THM back into the stateful simpset and to forget about it. The general problem with the stateful system as it stands is that it is very easy to put things into it, but impossible to pull them out. Isabelle has some way of doing this that might be worth looking into.
|
#
fb863eae |
|
03-Sep-2003 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Modify the add_listform function in line with a suggestion of Lockwood Morris's to provide slightly more flexibility in the way that list forms are pretty-printed. Previously, the format was fixed as <left-delimiter> el1 <sep> <a space> el2 <sep> <a space> ... Now, the spacing is more directly under user-control.
|
#
364b2d3d |
|
31-Jul-2003 |
Konrad Slind <konrad.slind@gmail.com> |
Support for ML evaluation of HOL terms. Preliminary.
|
#
bb654e4b |
|
26-Jun-2003 |
Konrad Slind <konrad.slind@gmail.com> |
Many small changes, most associated with boolification or lifting.
|
#
d6b08f6b |
|
16-Aug-2002 |
Konrad Slind <konrad.slind@gmail.com> |
Change to type of new_specification, and made it tell that parser about the introduced constants. Lots of knock-on (trivial) mods.
|
#
dedb235b |
|
09-Aug-2002 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add ALL_DISTINCT to those functions that automatically added to the global evaluator (EVAL).
|
#
1806ee25 |
|
08-Aug-2002 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Forgot to include ALL_DISTINCT in the exported automatic updates.
|
#
facb0926 |
|
08-Aug-2002 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
For a long time I believed that any wish to have a predicate ALL_DISTINCT for lists was a sure indication that the user was foolishly using lists rather than sets. But no, my work on finite maps has found me a situation where I really do need to use this notion (with FUPDATE_LIST, it's important, for one result I want, to know that the list of key-value pairs doesn't contain any duplicated keys: i.e., ALL_DISTINCT (MAP FST kvl)). Note use of two new features: (=) x rather than $=, and the call to METIS_TAC. Joe will be pleased to know that MESON_TAC can't do it, but METIS can. All hail METIS.
|
#
234fb251 |
|
07-Aug-2002 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
A couple of additions to the stateful rewriter: I got thoroughly sick of having to write combinTheory.o_THM, and was also surprised to see that FILTER P (h::t) wasn't being dealt with automatically (though it does introduce a case-split).
|
#
1adc6aba |
|
17-Jul-2002 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Added some trivial theorems about EXISTS and EVERY and exported some of them too.
|
#
6f860fee |
|
29-Oct-2001 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Added definitions of FOLDL and FOLDR to list_ss (and related simpsets).
|
#
368cea6e |
|
18-Oct-2001 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
I'd missed a couple of theorems in transcribing the list from listSimps.sml
|
#
ad8ce638 |
|
18-Oct-2001 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Exported some SRW rewrites, using the theorems that go into listSimps.LIST_ss. In fact, made listSimps.LIST_ss just refer back to listTheory.list_rwts.
|
#
208a808c |
|
02-Jul-2001 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Added a trivial theorem about MEM and APPEND.
|
#
3d2f9ce3 |
|
20-Jun-2001 |
Konrad Slind <konrad.slind@gmail.com> |
Change stemming from split of TypeBase into TypeBasePure and TypeBase.
|
#
75e6bfb9 |
|
18-Jun-2001 |
Konrad Slind <konrad.slind@gmail.com> |
Changing arithLib to numLib.
|
#
d2e91ccb |
|
07-Jun-2001 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Added FRONT and LAST to listTheory. These constants are also available in rich_list; but there FRONT becomes aliased with BUTLAST.
|
#
eed31398 |
|
07-Jun-2001 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Made the :: operator a little tighter binding, taking it out of the domain of "logical operators" and into the weak arithmetic area (<=, etc).
|
#
008a9e32 |
|
12-Apr-2001 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Changes to add REVERSE to the automatic tools.
|
#
95fa0b86 |
|
11-Apr-2001 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Moved REVERSE from rich_list to list.
|
#
cfdc1706 |
|
11-Apr-2001 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Modifications caused by change of TypeBase signature.
|
#
54bc857a |
|
01-Apr-2001 |
Konrad Slind <konrad.slind@gmail.com> |
Not sure what this was.
|
#
77efd725 |
|
04-Feb-2001 |
Konrad Slind <konrad.slind@gmail.com> |
New work aimed at making a single global EVAL function, with an underlying compset.
|
#
141dc5a0 |
|
20-Nov-2000 |
Konrad Slind <konrad.slind@gmail.com> |
Upgraded to build in Kan. 0.
|
#
1f47c76a |
|
09-Nov-2000 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Made directory Kananaskis compatible; added listSyntax library.
|
#
5f52eb34 |
|
14-Sep-2000 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Improved pretty-printing for :: (cons) by allowing a break to come after it.
|
#
caa231e3 |
|
29-Aug-2000 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Added APPEND_11 theorem.
|
#
1d0f028d |
|
09-Aug-2000 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
A couple more theorems for listTheory (EVERY_APPEND and EXISTS_APPEND). Also put these into the standard simpset. Put entries for ZIP and UNZIP into rich_list to preserve some modicum of backwards compatibility. Of course, these will be theorems now rather than definitions, but who's going to notice?
|
#
a3cf4813 |
|
07-Aug-2000 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Moved ZIP and UNZIP into listTheory. Proved a bunch of theorems about them and also EVERY and EXISTS.
|
#
d5f35f40 |
|
22-Mar-2000 |
Konrad Slind <konrad.slind@gmail.com> |
Minor change.
|
#
67e46c26 |
|
20-Mar-2000 |
Konrad Slind <konrad.slind@gmail.com> |
Added standard congruences for higher order recursion on lists to things that Tfl knows about.
|
#
1efbda6a |
|
08-Feb-2000 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Now that the datatype axioms produced by the datatype package are more reasonable in their choice of type variable names, the proof of list_Axiom_old is slightly simplified.
|
#
b6a894e1 |
|
10-Dec-1999 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Changes due to the incorporation of John Harrison's datatype definition package.
|
#
756c059f |
|
08-Dec-1999 |
Konrad Slind <konrad.slind@gmail.com> |
New additions to listSimps, to track all the relevant definitions made in listScript.
|
#
a78a1ee6 |
|
08-Dec-1999 |
Bruno Barras <barras@lix.polytechnique.fr> |
added list_rws to work with computeLib
|
#
11f6b6a6 |
|
08-Nov-1999 |
Konrad Slind <konrad.slind@gmail.com> |
Movement of some of the more useful list functions (FOLDL,FOLDR, EXISTS,MEM) from rich_list to list. Also, proved congruence theorems for higher-order functions (supports bossLib.Define).
|
#
0a2dfdcb |
|
02-Sep-1999 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
ConstrProofs has been moved to Prim_rec given my development of alternatives for prove_constructors_distinct and prove_constructors_one_one that don't need numbers or pairs.
|
#
82437087 |
|
18-Aug-1999 |
Konrad Slind <konrad.slind@gmail.com> |
ConstrProofs.sml : changed ZERO to 0 listScript.sml : added a proof that the predecessor relation on lists is wellfounded.
|
#
d34cbd27 |
|
06-Aug-1999 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Updates for new pretty-printing support.
|
#
0d378140 |
|
28-Jul-1999 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Changes necessary to make :: an infix operator representing CONS as well as the restricted quantification operator. This change has required some changes to the basic design of the parser; it's now not possible to have more than one res. quan. operator.
|
#
0058df84 |
|
28-Jun-1999 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fixed to bring it up to date with Taupo release 0. (Changes have come across from parse_branch development.)
|
#
58841e67 |
|
29-Apr-1999 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Initial revision
|