#
dbcf5197 |
|
04-Aug-2016 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Add function Defn.Hol_multi_defns. This involves moving some code from TotalDefn to Defn.
|
#
c13a00c1 |
|
20-Nov-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Remove tfl/src/Functional.{sig,sml}; redirect to src/1/Pmatch instead. This preliminary check-in doesn’t bring across all of the differences between Functional and Pmatch. On the assumption that the differences are important, I’ll patch Pmatch as necessary on this branch before merging back into master. Intention is to have this done before proceeding with work on features/case-const-argflip. Given that, this is progress of a sort with Github issue #97.
|
#
845531b5 |
|
14-Sep-2011 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Remove trailing whitespace in source files.
|
#
dea61e3e |
|
30-Aug-2011 |
Scott Owens <Scott.Owens@cl.cam.ac.uk> |
Add hooks in Defn to support termination proofs in other Script files. The new tgoal_no_def and tprove_no_ind functions take the (terminiation condition constrained) equation and induction theorems as stored in a theory by Defn.save_defn and start a termination proof. This seems to work because the existing tgoal and tprove functions do not look at then Defn.defn object other than to get the equation and induction theorems. This allows me to write a Hol_defn and save_defn in one Script file and carry out the termination proof in a different Script file. It might be better to add the defn object itself to the Theory file, but there doesn't appear to be any immediate practical benefit (the defn object seems to be undocumented).
|
#
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!
|
#
d2eed5a0 |
|
18-Oct-2008 |
Konrad Slind <konrad.slind@gmail.com> |
Added support for making multiple definitions in one invocation.
|
#
7b11d4a6 |
|
14-Jun-2008 |
Konrad Slind <konrad.slind@gmail.com> |
Added proofManagerLib. This adds a type of "goal trees" as an alternative to goalstacks. Relevant entrypoints: gt ` .... ` -- start a goaltree proof, analogous to g eq ` ... ` -- expand a tactic, analogous to e (except that the text of the tactic is delimited by quotes). A goaltree manages the construction of the final tactic, so should ease some of the script maintenance that the goalstack requires. Backup and restart are just as for goalstacks. All the entrypoints for goalstacks are just as they were before; there shouldn't be any difference.
|
#
0ed151ff |
|
13-Aug-2007 |
Konrad Slind <konrad.slind@gmail.com> |
Fixed a subtle bug in termination condition extraction, whereby multiple let-bindings for a variable would cause Define to be unpredictable and sometimes broken. Now variables get renamed in order to make the definition process succeed. So the definition Define `field_exp_aux (r5:word32,r6:word32,r7:word32,r10) = if r6 = 0w then (r7,r10) else if r6 && 1w = 0w then let r6 = r6 >>> 1 in let r2 = r5 in let r3 = r5 in let (r4,r10) = field_mult (r2,r3,r10) in let r5 = r4 in field_exp_aux (r5:word32,r6:word32,r7:word32,r10) else let r6 = r6 >>> 1 in let r2 = r7 in let r3 = r5 in let (r4,r10) = field_mult (r2,r3,r10) in let r7 = r4 in let r2 = r5 in let r3 = r5 in let (r4,r10) = field_mult (r2,r3,r10) in let r5 = r4 in field_exp_aux (r5:word32,r6:word32,r7:word32,r10)`; will, in the second recursive call, rename r7,r2,r3,r4,r5,r6, and r10 (twice): |- field_exp_aux (r5,r6,r7,r10) = (if r6 = 0w then (r7,r10) else (if r6 && 1w = 0w then (let r6' = r6 >>> 1 in let r2 = r5 in let r3 = r5 in let (r4,r10') = field_mult (r2,r3,r10) in let r5' = r4 in field_exp_aux (r5',r6',r7,r10')) else (let r6' = r6 >>> 1 in let r2 = r7 in let r3 = r5 in let (r4,r10') = field_mult (r2,r3,r10) in let r7' = r4 in let r2' = r5 in let r3' = r5 in let (r4',r10'') = field_mult (r2',r3',r10') in let r5' = r4' in field_exp_aux (r5',r6',r7',r10'')))) : thm Thanks to Magnus for bringing this to my attention.
|
#
bb896b6b |
|
30-Jan-2007 |
Konrad Slind <konrad.slind@gmail.com> |
Support for tDefine.
|
#
20133481 |
|
23-Oct-2006 |
Konrad Slind <konrad.slind@gmail.com> |
Define now handles simple definitions defined by pattern-matching against (numeric) constants, e.g. Define `(f 0 = 1) /\ (f 1 = 1) /\ (f n = f (n-1) + f (n-2)`; But more testing/robustification needs to be done.
|
#
73093559 |
|
04-Aug-2004 |
Konrad Slind <konrad.slind@gmail.com> |
Moved TotalDefn to num/termination. Also, fixed up "dec-suc-ification" used in Defn.sml, to use a hook.
|
#
e57ad10f |
|
15-Oct-2002 |
Keith Wansbrough <keith@lochan.org> |
Make Hol_defn and friends report location of the definition at fault. Sorry, can't be more precise at the moment.
|
#
5bc90516 |
|
19-Dec-2001 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Defn.sig needs to change to reflect changed type of tstore_defn.
|
#
344c1826 |
|
18-Dec-2001 |
Konrad Slind <konrad.slind@gmail.com> |
Minor mods to persistence of things introduced via TFL. In particular, tstore_defn doesn't call add_funs twice.
|
#
8230a0db |
|
18-Dec-2001 |
Konrad Slind <konrad.slind@gmail.com> |
Made Define store its resulting equations in the compset in a persistent manner.
|
#
3d2f9ce3 |
|
20-Jun-2001 |
Konrad Slind <konrad.slind@gmail.com> |
Change stemming from split of TypeBase into TypeBasePure and TypeBase.
|
#
202f9fdc |
|
08-May-2001 |
Konrad Slind <konrad.slind@gmail.com> |
Changes to improve interface for nested definitions.
|
#
cfdc1706 |
|
11-Apr-2001 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Modifications caused by change of TypeBase signature.
|
#
54911cb6 |
|
05-Jan-2001 |
Konrad Slind <konrad.slind@gmail.com> |
Minor changes.
|
#
05fad346 |
|
06-Apr-2000 |
Konrad Slind <konrad.slind@gmail.com> |
Defn.tgoal is changed to deliver a goal of the form ?R . TC_1(R) /\ ... /\ TC_k(R) /\ WF R When the proof is finished, the finalizer in the goalstack will not return this theorem, but the specified recursion eqns. and induction theorem.
|
#
0530154d |
|
22-Mar-2000 |
Konrad Slind <konrad.slind@gmail.com> |
Things are starting to stabilize. The main change from the last update is that defns can be saved (in a sense). In the next revision, defns will be written into a persistent DefnBase.
|
#
8b23d815 |
|
20-Mar-2000 |
Konrad Slind <konrad.slind@gmail.com> |
Ongoing revisions. Defn has been split into a basic datastructure and manipulations (Defn0) and the definition entrypoints (Defn). This allows a prettyprinter for the "defn" type to be automatically installed when the std.prelude runs. Defn0 is part of basicHol90.
|
#
f039c49c |
|
17-Mar-2000 |
Konrad Slind <konrad.slind@gmail.com> |
Big re-organizational changes. Tfl and tflLib are gone ... the relevant files are instead Defn and TotalDefn.
|
#
81d90cf6 |
|
28-Nov-1999 |
Konrad Slind <konrad.slind@gmail.com> |
Re-organization, hopefully to make things clearer.
|
#
2813abd3 |
|
08-Nov-1999 |
Konrad Slind <konrad.slind@gmail.com> |
1. Added a termination interface to Defn. This takes a defn and attaches a new goalstack to the list of current proofs. There is also an analogue that wraps up a defn and a tactic and applies the tactic to the termination constraints of the definition. If the tactic proves the goal, then the unconstrained recursion equations and induction theorem are returned. tgoal : defn -> proofs tprove : defn * tactic -> thm * thm In tprove, some cleverness is used to arrange that the ultimate goal (namely the unconstrained recursion equations and induction theorem) is not what is initially seen by the user; instead the first goal appears to be something of the form ?R. TC_1 /\ ... /\ TC_n /\ WF R Proving this will deliver the top_thm() |- rec. eqns /\ ind. thm One problem with this sleight of hand is its behaviour with respect to "restart" -- restarting takes us to the ultimate goal. To regain the original state, Defn.TC_TAC <defn> may be used. 2. Halts.TC_SIMP_CONV uses a standard set of theorems about WF to simplify goals ensuing from giving the witness for R above. Typically, one would work by going val foo_defn = Hol_fun "foo" <eqns for foo> ; Defn.tgoal foo_defn; e (EXISTS_TAC <some termination relation>); e (CONV_TAC Halts.TC_SIMP_CONV);
|
#
c27fb33a |
|
22-Sep-1999 |
Konrad Slind <konrad.slind@gmail.com> |
New features in Defn and Halts.
|
#
e567b715 |
|
18-Aug-1999 |
Konrad Slind <konrad.slind@gmail.com> |
Major changes to accomodate TFL advances. Now mutual, nested, and schematic recursions can be given. Termination relations can be deferred for these (in fact, deferred definitions are the only way of making such definitions currently). WFScript.sml has been eliminated and its components have been dispersed to the appropriate theories (pairTheory, prim_recTheory, and listTheory). Defn provides a high-level interface to deferred definitions. Defn relies on very little background support, so it can be used when one does not need (or desire) the full weight of bossLib. Halts has been moved from bossLib. tflLib may soon go away, since its functionality should in the longer run be subsumed by Defn + Halts.
|