#
3b81b48b |
|
25-Jul-2019 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Change INDUCT_THEN to cope with more induction theorem shapes In particular, it previously assumed that outermost universal variables in assumptions that were implications were always of the same type as the induction variable. E.g., in a binary tree induction axiom, the branch IH would be !t1 t2. P t1 /\ P t2 ==> !a. P (Nd a t1 t2) (note how the !a is under the implication). The magic done by INDUCT_THEN would then change the variables t1 and t2 to match the name of the induction variable in the actual goal (one would be primed). But if you have a snazzier principle with an IH such as !ts. (!t. MEM t ts ==> P t) ==> !fnm. P (Fn fnm ts) the outermost variable (which has to be outermost), is not of the "right" type. The fix allows for this, and also copes if the fnm quantification floats out to the top-level. This facility is only relevant if a non-standard induction theorem is installed for a type (see previous commit). The standard theorems generated by Datatype are shaped as INDUCT_THEN required.
|
#
77d295e8 |
|
07-Jun-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix bug in generation of case_eq theorem for 'a itself
|
#
ef86af12 |
|
30-Nov-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Fix bug in prove_case_elim_thm Test-case tweaks old bug, which was caused by conflicting names. If the first constructor in the type was C ty and a later constructor was D (ty -> bool), then the code would end up with a theorem of the form x = D f /\ ... |- caseconst x f f1 f2 where the f in the hypotheses corresponded to the argument to the D, and the f in the conclusion corresponded to the function passed to the case-constant, taking a ty and returning (in this case) a bool. Then, when CHOOSE tried to wrap an existential around the f in the hypothesis, it would fail because we'd inadvertently identified two variables that were supposed to be different. Fix is to be even more paranoid about choice of variable names when stripping the existentials arising in type's nchotomy theorem. Bug was apparent in examples/lambda/typing/type_schemasScript.sml
|
#
beec8de4 |
|
24-Oct-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Remove TABs in some source code, replacing them with spaces Use Emacs's conception of how many spaces the TAB was representing (and the M-x untabify command). This may not line up with the author's original conception, but then, using TABs makes it impossible to tell just what the original conception was in the first place anyway. Should probably script this over all of repository (excluding makefiles of course), and use standard expand or col utilities rather than emacs.
|
#
4888f523 |
|
15-Oct-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Remove eqtype declaration for term type
|
#
8f169224 |
|
17-Aug-2014 |
Michael Norrish <michael.norrish@nicta.com.au> |
New prove_case_eq_thm entrypoint for Prim_rec
|
#
214d72b4 |
|
07-Aug-2014 |
Michael Norrish <michael.norrish@nicta.com.au> |
Implement function to prove a case-constant elimination rewrite
|
#
9d480c01 |
|
07-Aug-2014 |
Michael Norrish <michael.norrish@nicta.com.au> |
Implement and document a new prove_case_rand_thm function in Prim_rec. This will be the basis for a general tool that moves case-constants up within a term and then eliminates them, subsuming, for example, the functionality in boolSimps.COND_elim_ss, which does this but only for the boolean case-constant (aka if-then-else).
|
#
9fd06068 |
|
09-Dec-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Clean up code that relies on constant and theorem names for case constants. Rather than code having to know that the constant is called “type_CASE” and that its definition is stored in “type_case_def”, use ML entrypoints in Prim_rec to abstract these details. This is progress with github issue #97.
|
#
db046fee |
|
13-Nov-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Start of project to flip argument order in case constants. One scary (but probably optional) change is to do away with bool_case constant because it is now identical to COND. This could be reversed, but having two constants with exactly the same type and semantics does seem silly. I think the parsing/pretty-printing behaviour can be made sensible even in the face of this unification. Prim_rec’s functions for defining case constants and proving case congruence theorems have been adjusted appropriately. This is relevant to Github issue #97.
|
#
ea66c07d |
|
12-Jan-2012 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Correct a minor typo in a comment in Prim_rec.sml
|
#
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.
|
#
1bc9f344 |
|
13-Jan-2011 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Change src/bool to src/1 as a prelude to experimentation!
|