#
698d4c1b |
|
04-May-2019 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix examples/lambda/barendregt for tight equality
|
#
17d9dcb4 |
|
09-Dec-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Fix some bare case constant applications in examples/lambda. This is progress with github issue #97.
|
#
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.
|
#
bc294d17 |
|
02-Sep-2011 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Extract a usable half-way point from nominal_datatype branch. This replaces the is_perm predicate with a type embodying that predicate. It doesn't include the subsequent work on allowing multiple 'atom' types.
|
#
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.
|
#
621359f7 |
|
13-Jun-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix barendregt/chap2Script.sml so that set_MLname is no longer required. Also fix annoying choice of names while I'm at it.
|
#
e3d2a94e |
|
01-Mar-2010 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Proof fixes given general incorporation of LIST_EQ_SIMP_ss.
|
#
36fe42db |
|
17-Nov-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
New, powerful, automatic rewrite in optionScript. Rewrite is |- ((if P then SOME x else NONE) = SOME z) = P /\ (x = z) and all variants there-on. A number of changes were necessary in other theories. This change affects not just srw_ss() but also std_ss. In finite_map, I created a couple of new Unicode variants for SUBMAP and FUNION. I also tidied up some proofs, and the statement of some goals (indentation, column limits).
|
#
1271d3b1 |
|
09-Nov-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Move some theorems around; mainly to put cfindleast into churchnumTheory.
|
#
30a5afd9 |
|
03-Nov-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Prove that K is not recursive.
|
#
9b32d943 |
|
29-Sep-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Demonstrate the easy closure properties for recursive sets (empty, UNIV, and finite sets are recursive; they are closed under union, complement and intersection). Make much use of the fact that it is legitimate to rewrite with beta-reduction under the bnf_of function: M == N ==> (bnf_of M = bnf_of N) Adding this to my weakening congruences did break the proof of one of my Halting Problem theorems, but a little abbreviation hackery solved that.
|
#
027b2608 |
|
19-May-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Prove another easy consequence of the general result about the degree to which weak-head evaluation mimicks normal order evaluation: that if M -n->* v, with v a variable, then M -w->* v too.
|
#
edb14cee |
|
27-Apr-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Some additional rewrites of "general utility".
|
#
d8319d52 |
|
26-Apr-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Prove some theorems about normal order reduction to weak-head normal forms (abstractions, or variables in the head position of a series of applications). Basically, if something can normal reduce to such a thing, then it can weak-head reduce to something that shares the key aspects of the shape. Either, it can weak-head reduce to an abstraction, or it can weak-head reduce to a series of applications, where the head is the variable that is in that position at the end of the normal order reduction. Along the way, invent a notation for FOLDL (@@) t ts where t is a term, and ts a list of terms. The notation is (t @* ts) in ASCII. This is a "series of applications" with t in the head position. Prove a bunch of theorems about these forms. All this stuff goes into basics/appFOLDLTheory.
|
#
e4599942 |
|
21-Apr-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
More support for weak head reduction, including a simpset for rewriting with it.
|
#
5b53e531 |
|
17-Apr-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Introduce weak-head reduction very sketchily in order to show that there's a sort-of congruence rule with it and normal order reduction. Unfortunately, you don't have M1 -n->* M2 ==> M1 @@ N -n->* M2 @@ N because the reductions undergone by M1 might produce an abstraction, in which case the M1 reductions have to stop for the higher level redex to be reduced. But weak head reduction will never happen at all once an abstraction is produced so all is well.
|
#
41b75e9c |
|
14-Apr-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add a more complete characterisation of what it means when the bnf_of while loop terminates.
|
#
874ff76b |
|
14-Apr-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Add a constant bnf_of that "calculates" the beta-normal form of a term, returning SOME t, if t is that form, NONE if there is no such bnf. The calculation is done with a while loop that doesn't terminate if there isn't a beta-normal-form.
|
#
8b162453 |
|
06-Apr-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Two minor results showing that permutations and substitution of variables for variables commute with the noreduct function.
|
#
d2800ab2 |
|
22-Mar-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Changes so that the weakened rewriting of lambda-terms now happens with respect to beta-equality (==), rather than beta-reduction (-b->*). This gives us access to more rewrites. In particular, we get things like church (SUC n) @@ z @@ f == f @@ (church n @@ z @@ f) which is a nice recursive characterisation of what church numerals do, and saves us from having to do too many ghastly things with FUNPOW. With the above equation, neither side reduces to the other (they have a common reduct of course), and so it wasn't a usable rewrite when using -b->*. In addition, to the above, I set up a natrec combinator, which would get typed : 'a -> (num -> 'a -> 'a) -> num -> 'a if we were in a typed world. This combinator gets access to the value of the recursive argument, making predecessor easier to define. Also, give an equation like the one above for church for the cDB function. Many proofs are shorter. Some are slower, but the shortness of expression won me over.
|
#
6ee0f460 |
|
14-Mar-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
More facts about normal order reduction paths, including the fact that the self-looping Omega term has an infinite one, and thus, by another theorem just proved, has no beta-normal-form.
|
#
fced617a |
|
13-Mar-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Symbolic evaluation for beta and normal order reduction is coming along well. The proofs in bool are much nicer. The churchnumScript.sml is broken until I get implement conditional rewriting in my rewriter for beta-reduction (should be easy). The proofs there should become considerably nicer.
|
#
cfaa2343 |
|
12-Mar-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fully support weaker relations than equality that aren't also constants. Start to implement a reduction engine for beta-reduction in the lambda-calculus. Still some wrinkles to work out.
|
#
536b8ebd |
|
03-Mar-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Some useful theorems about normal order reduction, and conversion of the development of Church numerals to use normal order reduction as the basic notion. FRESH_TAC proves useful. Doing symbolic evaluation of lambda-terms is still not all it might be.
|
#
2b2a6705 |
|
27-Feb-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fiddle and prettify basic presentation of beta-reduction. Using syntactic patterns, I can now have ``compat_closure beta M N`` (the "compatible closure of the beta-relation) appear as ``M -b-> N``. Also use syntactic patterns to get rid of constants reduction and conversion. Finally, provide Unicode versions of the various arrow symbols so that with the Unicode flag on, the above will come out as M -β-> N Even in just ASCII, I think the theorems look a deal prettier.
|
#
bb953e2f |
|
27-Feb-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Prove the key fact about normal order reduction: if M can beta-reduce to a normal form N in any way, then normal order reduction can get to the same place.
|
#
f68c645a |
|
26-Feb-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
More changes to the lambda-calculus theories about reduction, including a new theorem giving a coinduction principle for the notion of being a standard reduction. Also prove that every normal-order reduction is standard, and that every head reduction is a normal-order reduction. Also change the okpath_co_ind theorem in pathTheory so that it doesn't force the user to consider a useless case. This has some knock-on effects in the barendregt directory.
|
#
294cc3d9 |
|
25-Feb-2009 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Make a start on a theory of normal order reduction (= "topmost leftmost reduction"). I've decided that this is the best notion of reduction to be the basis for the computability development.
|