Commit Graph

741 Commits

Author SHA1 Message Date
Daniel Matichuk 7dc01b557a make fold_subgoals not prefix by default
fix case where flex-flex pairs would prevent subgoal folding
2016-01-20 14:41:41 +11:00
Daniel Matichuk 45291a6219 Isabelle2016: fix SimpStrategy for changes in simproc setup 2016-01-18 16:44:42 +11:00
Daniel Matichuk b214ac035f resurrected "defs" command for Isabelle2016-RC1 2016-01-18 15:10:47 +11:00
Daniel Matichuk ca808130e6 repair ARM proofs up to Refine after factoring out architecture 2016-01-13 12:02:12 +11:00
Daniel Matichuk 8981f9d5aa removed deleted theories from imports 2016-01-12 18:10:16 +11:00
Daniel Matichuk d37a344783 cleanup for prod and when keyword 2016-01-12 16:07:28 +11:00
Daniel Matichuk b7563eb788 fix lib for isabelle 2016 2016-01-12 14:58:16 +11:00
Gerwin Klein a0131b5f3d WP 2016-01-10 17:59:09 +11:00
Gerwin Klein 8079c795da partial progres in Rule_By_Method 2016-01-10 17:49:15 +11:00
Gerwin Klein 5ba3c5e6e4 solves_tac 2016-01-10 17:49:01 +11:00
Gerwin Klein b5a4c185d5 NonDetMonad 2016-01-09 18:57:59 +11:00
Gerwin Klein d17345a801 Isabelle2016-RC0 up to WordLemmaBucket modulo Eisbach 2016-01-09 18:52:07 +11:00
Japheth Lim a918b41163 Merge pull request #1 in SEL4/l4v from ~JALIM/l4v:etanercept-reloaded to master
* commit '28e6511148e7daeec3803465ca50294e2840ed4d':
  etanercept: remove user config for CFLAGS; it could inject shell commands. Added -fwrapv to default CFLAGS.
  etanercept: tweak header documentation.
  etanercept: revert accidental change to int and nat translation.
  etanercept: use term_pat antiquote, just for fun.
  etanercept: search for C compiler at run time, not at init time.
  etanercept: use HOLogic.
  etanercept: improve exception throwing and messages.
  etanercept: refactor variable handling. Uses Termtab for simplicity.
  etanercept: add a couple more examples.
  etanercept: refactor type lookup code.
  etanercept: avoid unnecessary floating point code.
  etanercept: add options: debug, timeout, and CFLAGS.
  etanercept: rename user command to "word_refute".
2015-12-08 05:47:40 +00:00
Japheth Lim 28e6511148 etanercept: remove user config for CFLAGS; it could inject shell commands.
Added -fwrapv to default CFLAGS.
2015-12-04 16:37:25 +11:00
Japheth Lim 4c982bd80b etanercept: tweak header documentation. 2015-12-04 16:18:56 +11:00
Thomas Sewell 7ac0157bba Oops. 2015-12-04 14:24:20 +11:00
Thomas Sewell f54964a05d More fixes, hopefully closer. 2015-12-04 14:01:38 +11:00
Japheth Lim c5496f869e etanercept: revert accidental change to int and nat translation. 2015-12-02 16:14:59 +11:00
Japheth Lim 36cc252bd4 etanercept: use term_pat antiquote, just for fun. 2015-12-02 16:14:59 +11:00
Japheth Lim 508e6b1968 etanercept: search for C compiler at run time, not at init time. 2015-12-02 16:14:59 +11:00
Japheth Lim f59bc9e826 etanercept: use HOLogic. 2015-12-02 16:14:59 +11:00
Japheth Lim 58e5303315 etanercept: improve exception throwing and messages. 2015-12-02 16:14:59 +11:00
Japheth Lim 8d35708666 etanercept: refactor variable handling. Uses Termtab for simplicity.
Also remove translation for Var. Vars in a proof state are interpreted
as existentially- rather than forall-quantified.
2015-12-02 16:14:59 +11:00
Japheth Lim 2c299c07fa etanercept: add a couple more examples. 2015-12-02 16:14:58 +11:00
Japheth Lim 310d5fdc84 etanercept: refactor type lookup code. 2015-12-02 16:14:58 +11:00
Japheth Lim a03c0fa046 etanercept: avoid unnecessary floating point code. 2015-12-02 16:14:58 +11:00
Japheth Lim 169f66bd1e etanercept: add options: debug, timeout, and CFLAGS. 2015-12-02 16:14:58 +11:00
Japheth Lim e4826d0616 etanercept: rename user command to "word_refute". 2015-12-02 16:14:58 +11:00
Japheth Lim 2bb62173e5 Merge pull request #15 from mfernandez/bdb0dc61-c039-4651-89b1-3d72a8b07fd3
lib: Add a new nitpick-style command for refuting word problems.
2015-12-02 16:10:02 +11:00
Thomas Sewell 043a69c81b Fix Orphanage from array changes, refactor.
Some generalisation is done in finaliseSlot_invs'' to avoid
duplicating it in Orphanage and PageTableDuplicates.

Finally cleanup in haskell translation.
2015-12-02 09:15:32 +11:00
Thomas Sewell 375b526b0c Finally done with array assertions. 2015-12-02 09:08:27 +11:00
Thomas Sewell 22f5f2f005 Further work on array assertions. 2015-12-02 09:07:15 +11:00
Thomas Sewell 4fd43512bb WIP on handling array assertions. Up to Retype_C.
This is quite a lot of work in the end. I've had to gut most of
Retype_C along the way. Nearly done there.
2015-12-02 09:06:06 +11:00
Thomas Sewell 6fa0909124 Partial progress on using array assertions. 2015-12-02 09:05:04 +11:00
Thomas Sewell 91ff60c978 Adjust Strengthen, split out ProvePart. 2015-11-30 10:58:11 +11:00
Matthew Fernandez 53376140e0 lib: Add a new nitpick-style command for refuting word problems. 2015-11-27 14:25:29 +11:00
Corey Lewis f0ce95aa11 Fix wp_del for crunch. 2015-11-23 17:46:50 +11:00
Daniel Matichuk 3af6a6b0da added timing methods 2015-11-20 16:02:13 +11:00
Corey Lewis a2cc6ab301 Added wp_del and simp_del arguments to crunch. 2015-11-12 12:23:04 +11:00
Japheth Lim 55c6cca7fb lib: add term_pat: ML antiquotation for pattern matching on terms. 2015-11-11 18:57:46 +11:00
Thomas Sewell cb6234a718 Move strengthen rules to Strengthen; adjust WPBang. 2015-10-29 11:27:54 +11:00
Thomas Sewell aab5d41436 Facelift Strengthen; introduce WPBang.
Give Strengthen its own theory and a much more robust and general
implementation. However take away its ability to do elimination, maybe
to be restored.

Introduce a new theory, WPBang, for applying wp safe rules, with possible
attribute wp! (attribute yet to be implemented).

Still testing out both adjustments.
2015-10-29 11:27:54 +11:00
Daniel Matichuk b1cd097849 Eisbach_WP: Added wp_drop_imp and wp_strong_drop_imp 2015-10-26 15:39:15 +11:00
Daniel Matichuk 040c6be903 Eisbach_WP: extra "end" 2015-10-26 15:39:15 +11:00
Daniel Matichuk 6ba1095d66 Eisbach_WP: Renamed WPU to WPI and changed the default behaviour to be safe (not ever dropping antecedents) 2015-10-26 15:39:15 +11:00
Matthew Fernandez e9257ae5b0 lib: Many helpers about `fold op ++`. 2015-10-23 11:54:04 +11:00
Matthew Fernandez 36c5cb6860 lib: Another CAmkES helper lemma. 2015-10-23 11:36:39 +11:00
Rafal Kolanski c1eb235105 Merge 'verification/master' into priority-bitmap
Green build except for:
CParserTest (WTF Duplicate fact declaration "dc_20081211.dc_20081211.test_modifies")
AutoCorresSEL4 (waiting on result)

There is still a carefully managed sorry in Schedule_R, waiting on the C
parser FNSPEC+DONT_TRANSLATE fix.
2015-10-21 06:19:20 +11:00
Rafal Kolanski 930a2ff179 priority-bitmap: Update Haskell->C refinement
(modulo clz_spec locale problem)
2015-10-20 23:52:07 +11:00
Rafal Kolanski 950705bf42 priority-bitmap: let lib/CTranslation see word_clz
Move word_clz and word_log definitions into WordLib;
have CTranslationNICTA import WordLib.
2015-10-20 23:51:42 +11:00
Rafal Kolanski 7860bd4351 priority-bitmap: move word_log2/clz to WordLemmaBucket
Resolves some FIXMEs in Schedule_R.
2015-10-20 23:50:37 +11:00
Rafal Kolanski 2a9d3022f2 priority-bitmap: Update abstract->Haskell refinement
Added word_log2 and word_clz (inline for now, will migrate them out to
lib later).

Proved most important properties of word_log2 and some basic
count leading zeros properties (word_clz). The former were painful.

Thanks to Thomas, we have a nice tactic for dealing with complicated
obj_at' predicates in conclusion: normalise_obj_at'
2015-10-20 23:40:44 +11:00
Matthew Fernandez ad1718d040 lib: More random helpers brought to you by CAmkES. 2015-10-20 17:15:29 +11:00
Daniel Matichuk a9549337cd Eisbach_WP: Added "wpu" as the next iteration of "wpstr". Re-written from the ground up for some performance
gains and in order to deal with quantifiers in the postcondition.
2015-10-15 20:02:47 +11:00
Daniel Matichuk a5ad151a63 Eisbach_WP: Made wpstr_unsafe to ignore safety heuristics. Some cleanup. 2015-10-13 14:55:13 +11:00
Daniel Matichuk bdb810c9be Eisbach_WP: Avoid introducing inconsistent preconditions while strengthening.
By extension this also avoids some unsafe rules in the wp set and trying to lift "False" out of the postcondition.
2015-10-13 12:00:08 +11:00
Daniel Matichuk e44027536d Eisbach_WP: Cleaned up with a few comments. Added another safety condition for lifting in wpstr, as well
as an override for forcing postconditions through despite being apparently unsafe.
2015-10-12 20:11:24 +11:00
Daniel Matichuk d7f8306a62 Eisbach_WP: Avoid extra backtracking by only "try"ing on search leaves. 2015-10-12 20:11:24 +11:00
Daniel Matichuk 2a36f6d038 Eisbach_WP: Made more self_contained wpstr. Sped things up by explicitly decomposing the goal. 2015-10-12 20:11:24 +11:00
Daniel Matichuk 60ae9fe9af Added post_strengthen for strengthening post conditions using wp (by guessing strengthening
candidates with subterm selection from the post condition).
2015-10-12 20:11:24 +11:00
Daniel Matichuk 15bbed6958 Changed safe folding to use custom meta-conjunction to avoid negative
interactions with standard tools.
2015-10-12 20:11:24 +11:00
Daniel Matichuk a8ee4ae508 Merge remote-tracking branch 'verification/master' into aep-merge
Conflicts:
	lib/Eisbach_Methods.thy
	lib/wp/Eisbach_WP.thy
2015-09-30 13:56:30 +10:00
Daniel Matichuk 59e61472cf Added hoare_decompose method for transforming hoare triples with conjunctions in the post condition.
Generalized "post" method into "post_strong" which attempts to simplify postconditions
by assuming the others.
2015-09-30 13:34:16 +10:00
Daniel Matichuk 7fccb56197 cleanup of Eisbach_Methods. Adding some documentation and some more methods 2015-09-30 13:34:16 +10:00
Daniel Matichuk 1fe15853eb added conjuncts attribute/dynamic theorem for decomposing meta-conjunctions into proper facts 2015-09-30 13:34:16 +10:00
Daniel Matichuk ec51ebde42 addressed issue with meta-quantifiers
JIRA VER-458
2015-09-21 17:18:37 +10:00
Daniel Matichuk 87447665c0 added find_goals method and rewrote focus method to just use match. 2015-09-21 17:18:37 +10:00
Daniel Matichuk e45ee104c9 removed dead code 2015-09-21 17:18:36 +10:00
Daniel Matichuk 31752e8e50 refined find_theorems filter to compare names rather than props 2015-09-21 17:18:36 +10:00
Daniel Matichuk d88e48ea7a added optional find_theorems query to filter output of Apply_Trace 2015-09-21 17:18:36 +10:00
Daniel Matichuk b3422bb155 fixed Apply_Trace (removed broken mentioned_facts feature) 2015-09-21 17:18:36 +10:00
Matthew Fernandez b54587e19e lib: Some pair-related lemmas for LemmaBucket. 2015-09-21 17:18:36 +10:00
Daniel Matichuk 143073d55a addressed issue with meta-quantifiers
JIRA VER-458
2015-09-21 10:41:33 +10:00
Daniel Matichuk f9060af219 added find_goals method and rewrote focus method to just use match. 2015-09-21 10:41:33 +10:00
Daniel Matichuk effa148920 removed dead code 2015-09-17 14:33:13 +10:00
Daniel Matichuk 8da0aece25 refined find_theorems filter to compare names rather than props 2015-09-17 14:25:58 +10:00
Daniel Matichuk c0d750559b added optional find_theorems query to filter output of Apply_Trace 2015-09-17 14:03:47 +10:00
Daniel Matichuk 50dbd02212 fixed Apply_Trace (removed broken mentioned_facts feature) 2015-09-16 17:02:50 +10:00
Ramana Kumar 0fb88ea01c Merge branch 'master' into aep-merge
This commit should at least remove merge conflict markers, and the idea
is that at least refine, crefine, drefine, and infoflow (with sorrys)
build. Subsequent commits may be required to fix build issues that I
have not picked up.
2015-09-10 17:06:45 +10:00
Matthew Fernandez bcdadb1816 lib: Some pair-related lemmas for LemmaBucket. 2015-09-09 18:44:19 +10:00
Ramana Kumar d88a931ec7 history squashed patch for aep-binding 2015-09-02 15:43:39 +10:00
Matthew Fernandez 88b01788b3 lib: Fix import in Eisbach. 2015-08-19 17:59:15 +10:00
diekmann 780dc272fb WordLemmaBucket: mehr lemma ist mehr gut 2015-08-19 15:14:31 +10:00
Matthew Fernandez 8f50ba4893 lib: Some more trivial map-related lemmas. 2015-08-15 12:17:26 +10:00
Matthew Fernandez e5340b5cca lib: More trivial helpers from CAmkES. 2015-08-12 13:54:56 +10:00
Matthew Fernandez 5073d065ad lib: Fix: Rename duplicate lemma.
...and now back to our regularly scheduled program.
2015-08-11 17:27:09 +10:00
Matthew Fernandez 10f963db36 lib: Another trivial lemma for supporting CAmkES. 2015-08-11 15:53:28 +10:00
Matthew Fernandez 3f20d24822 lib: Import various helper lemmas from CAmkES. 2015-08-11 12:25:22 +10:00
Matthew Fernandez f253415a9f lib: Add a trivial lemma about `dom`.
This comes in handy when reasoning about large maps.
2015-08-07 12:16:46 +10:00
Thomas Sewell e9180d5cb5 Repair refine/crefine for WCET annotations. 2015-07-14 14:23:29 +10:00
Thomas Sewell ca4391881c WIP on WCET annotations. 2015-07-14 14:23:29 +10:00
Daniel Matichuk 5c1e998b3a Fixed theory import for Eisbach_WP 2015-07-09 21:49:47 -06:00
Daniel Matichuk d9bef8965c Moved wp-specific eisbach methods higher up import chain 2015-07-10 12:51:15 +10:00
Gerwin Klein 10bb7b39e3 remove NonDetMonad from C-Parser import chain
Including NonDetMonad too early introduces too many name clashes.
2015-07-09 14:47:25 +10:00
Daniel Matichuk 5c6a3371c4 Removed unused "Noting" 2015-07-08 17:05:19 +10:00
Daniel Matichuk 12a3fd829b Point to correct (existing) Rule_By_Method 2015-07-08 16:59:40 +10:00
Daniel Matichuk f1303ea5a6 Added hotfix for rule instantiation attributes (of/where) 2015-07-08 16:58:14 +10:00
Daniel Matichuk 30db9bb7a5 ArchAcc_AI checks with new subgoal command 2015-07-08 15:44:34 +10:00
Daniel Matichuk b2d3cd6ebb Added Rule_By_Method (@ and # attributes) 2015-07-08 15:44:33 +10:00
Daniel Matichuk 88d9281987 Updated to most recent version of subgoal focus (to match official version) 2015-07-08 15:44:33 +10:00
Daniel Matichuk 1f0f989498 updated to newest version of subgoal_focus 2015-07-08 15:44:33 +10:00
Daniel Matichuk 9882205e15 Most recent version of subgoal focus tools 2015-07-08 15:44:33 +10:00
Daniel Matichuk 173a4411b1 importing Eisbach by default, with some boilerplate 2015-07-08 15:44:33 +10:00
Daniel Matichuk 2423f01fdf Added "subgoal" infrastructure 2015-07-08 15:44:33 +10:00
Daniel Matichuk 876e528a92 removed stale version of eisbach (now included in Isabelle2015). 2015-07-08 15:44:33 +10:00
Matthew Fernandez ec7c8bd815 lib: Various trivialities related to CAmkES/CapDL proofs.
This commit contains a grab bag of lemmas used in CAmkES↔CapDL correspondence
proofs. Some of them are exceedingly brain dead. This is, in most cases,
because they have been extracted from automated proofs in order to avoid
generated proofs repeatedly proving the same trivial facts.
2015-06-30 12:26:08 +10:00
Gerwin Klein 0f943ec13c clib: 2015 update 2015-05-17 22:24:25 +10:00
Gerwin Klein a09c92bdce lib/Focus: 2015 update 2015-05-16 21:47:45 +10:00
Gerwin Klein f2cfeb2a0c lib: fewer warnings in crunch and wps 2015-05-16 21:46:45 +10:00
Gerwin Klein 12fa86863a fewer warnings 2015-05-16 19:52:49 +10:00
Gerwin Klein 7072c8e4a9 lib/sep_algebra: 2015 update 2015-05-14 11:40:55 +02:00
Gerwin Klein eccc345f67 make unused-wp-warning a config option; false by default 2015-05-11 09:05:17 +02:00
Gerwin Klein 60c0573cf0 remove warnings 2015-05-11 09:04:59 +02:00
Gerwin Klein be52a7c684 lib: more 2015 update 2015-05-09 13:03:30 +02:00
Gerwin Klein 17826f9b49 more Isabelle2015 update; AInvs up to (excluding) Syscall_AI
also includes some global replacements
2015-04-18 21:51:26 +01:00
Gerwin Klein 9c17bd32a4 some more lib updates for Isabelle2015 2015-04-17 22:06:38 +01:00
Gerwin Klein 190e7c38d6 start work on Isabelle 2015 update 2015-04-17 16:19:32 +01:00
Matthew Fernandez eca7cbe5e7 lib: Instantiate WPC for validNF. 2015-03-11 16:40:21 +11:00
Matthew Fernandez 02c2f749b8 lib: Add a hoare_assume_pre variant for validNF. 2015-02-24 10:11:59 +11:00
Daniel Matichuk a221a52350 Added new proofcount tool to "tools" and removed old one from "lib".
Removed reference to old proof_counting from proof/ROOT and spec/ROOT
2015-02-11 17:46:34 +11:00
Matthew Fernandez 1c2034d3c7 lib: Remove malformed comment.
This comment looks like a typo, in that it doesn't add to comprehension of this
theory, and it trips up LaTeX when generating a document.
2014-12-19 13:07:31 +11:00
Matthew Fernandez bfb121594c lib: Add some word helpers. 2014-12-17 11:58:15 +11:00
Matthew Fernandez d6a211c86a lib: Add a couple of WP lemmas for dealing with conjunts in postconditions. 2014-12-05 14:55:54 +11:00
David Greenaway 536a72bdad lib: set: Add "filter" function for sets.
Can be more efficient than "Symset.dest x |> filter |> Symset.make"
because we know that the ordering is unmodified by filter.
2014-12-03 14:49:12 +11:00
Daniel Matichuk 7340fd048d Renamed "focus" to "subgoal". Used correct keyword tag (prf_goal) to fix batch processing. 2014-12-02 13:56:43 +11:00
David Greenaway b22a384931 lib: Add "solves" tactic.
Essentially does a "find_theorems solves" and automatically applies the
result.

The author makes no guarantees about the maintainability of proofs using
such a tactic.
2014-12-01 11:08:34 +11:00
Gerwin Klein e4d8fb5dba GHC 7.8 update (bitSize -> finiteBitSize) 2014-11-28 08:58:57 +11:00
Matthew Fernandez 6026d54cd7 lib: Misc helper lemmas. 2014-11-21 19:23:33 +11:00
Matthew Fernandez 687df6dc51 lib: misc masking lemma. 2014-11-20 14:58:11 +11:00
Thomas Sewell e924e0758c lib: Add 'word_bitwise_signed' tactic.
Works like 'word_bitwise' but on signed words.
2014-11-20 14:48:36 +11:00
Matthew Fernandez 9e3d5febf4 lib: More 64-bit jigsaw lemmas. 2014-11-19 16:53:24 +11:00
David Greenaway 474666b710 lib: Remove redundant shift-left/shift-right/div0 word lemmas.
Matt is always one step ahead of me.
2014-11-19 13:40:16 +11:00
Matthew Fernandez fad90782c8 lib: Fix: Remove call to 'smt'.
Surprisingly tedious.
2014-11-19 12:26:27 +11:00
David Greenaway 01490fd1f2 lib: Random word lemmas about shift-left / shift-right / divide-by-zero.
Existing lemmas are (all?) conditional on the word size. These lemmas
are unconditional, albeit only work in the special case of "x >> 1" and
"x << 1".
2014-11-19 12:26:06 +11:00
Matthew Fernandez b5e8695737 Merge branch 'master' of ssh://github.inside.nicta.com.au/seL4/l4v
Conflicts:
	lib/WordLemmaBucket.thy
2014-11-19 07:39:46 +11:00
Matthew Fernandez b053ce7647 lib: Helper lemmas for simplifying writes via char pointers. 2014-11-18 23:32:52 +11:00
Matthew Fernandez 7850af557b lib: Rephrase popcount into def with to_bl. 2014-11-15 15:04:11 +11:00
Matthew Fernandez 46f96f5501 lib: more word helper lemmas. 2014-11-15 14:52:28 +11:00
Matthew Fernandez 43645bc0a0 lib: Add a function for talking about word popcounts. 2014-11-15 11:11:03 +11:00
Matthew Fernandez 2141c8cb50 lib: Add collection of misc word helpers. 2014-11-15 11:10:39 +11:00
Matthew Fernandez 7b7538b0a0 lib: Generalise word_div_mult to operate on all words. 2014-11-15 11:04:10 +11:00
Matthew Fernandez 2990ede08c lib: Prove we can chop a word in half and put it back together. 2014-11-14 17:59:43 +11:00
David Greenaway 14581617f0 nicta-tools: Add "solved" tactic.
Ensures that all subgoals have been solved. If not, the tactic will fail
(causing backtracking).

Useful for creating proofs of the form:

    apply ((make_lots_of_subgoals, auto, solved)[1])

where you can be sure that the current subgoal will either be entirely
discharged or left untouched.
2014-11-14 17:24:49 +11:00
Matthew Fernandez 64dd0b8f63 lib: Generalise fst_enumerate, snd_enumerate; add some more helpers. 2014-11-12 18:47:11 +11:00
Matthew Fernandez 281cbebe00 lib: Helper for message register offsets. 2014-11-12 17:02:16 +11:00
Matthew Fernandez 93e8a15d53 lib: misc lemmas. 2014-11-12 11:05:00 +11:00
Matthew Fernandez fb56249d2c lib: trivial helper for dealing with ∀ and pairs.
Comes in handy when juggling validNF_make_schematic_post in combination with a
Hoare triple with multiple bound variables.
2014-11-07 15:17:53 +11:00
Matthew Fernandez 28c30a9cc0 lib: yet more helper lemmas. 2014-11-07 12:53:21 +11:00
Matthew Fernandez 93cba84f09 lib: add some more bit manipulation helper lemmas. 2014-11-07 11:54:17 +11:00
David Greenaway a58bdf0576 Trace_Attribs: Remove hooks in "Corres_UL" to allow "lib/" to build once more. 2014-11-05 18:16:23 +11:00
David Greenaway 3c01f08242 NICTACompat: Disable "Trace_Attrib".
Loading "Trace_Attrib" causes strange, unexplained lock-ups in
Isabelle/jEdit (and possibly Isabelle build). In particular, at random
times shortly after Trace_Attrib is loaded, everything will stop
processing with the CPU at 0%.

The root cause of this is currently unknown. This patch disables it
until the problem can be tracked down further.
2014-11-04 15:30:12 +11:00
Matthew Fernandez ba83e00e7a lib: Another bitfield helper lemma. 2014-11-04 11:53:30 +11:00
Matthew Fernandez 63346b52ed lib: Add various word helper lemmas for bitfield proofs. 2014-11-04 09:11:35 +11:00
Matthew Fernandez 9d90bcf82c lib: Fix some names from previous commit; couple more helpers. 2014-10-30 15:00:55 +11:00
Matthew Fernandez 36a0be9f26 lib: Add some misc helper lemmas. 2014-10-30 10:32:18 +11:00
David Greenaway b737c6ba2a focus: Get "Focus.thy" working on Isabelle 2014.
Was investigating if Focus could help solve a particular problem
(involving "apply subst" not being able to work with bound variables).
Didn't solve the particular problem I was facing, but committing the fix
to Focus none-the-less.
2014-10-20 15:04:33 +11:00
David Greenaway e9dde6477a autocorres: Move generic "set.ML" to "lib/" directory. 2014-10-15 11:11:20 +11:00
deang 6df2eb6cf9 infoflow: weakened assumptions for c refinement of infoflow adts
The fact that the C infoflow adt refines the abstract infoflow adt now only requires that given user operation is nonempty and not sane (nonempty and doesn't return an interrupt).
Also added some more general lemmas about fw_sim and refinement to lib/Simulation.thy.
2014-10-14 17:01:11 +11:00
David Greenaway 6c915fa629 infoflow: Move "EquivValid" out of "infoflow/", into "lib/".
More importantly, remove seL4 from the dependencies of "EquivValid", so
others can use it.

Also, we fixup the fallout.
2014-10-13 11:05:31 +11:00
David Greenaway e0b7e21d56 attribute tracing: Mechanism to work out changes in simpsets across revisions.
The idea of this file is to allow users to determine how the simpset,
cong set, intro set, wp sets, etc. have changed from an old version of
the repository to a new version.

The process is as follows:

  1. A user runs "save_attributes" on an old, working version of the
     theory.

  2. This tool will write out a ".foo.attrib_trace" file for each
     theory processed.

  3. The user modifies imports statements as required, possibly
     breaking the proof.

  4. The user can now run "diff_attributes" to determine what
     commands they should run to restore the simpset / congset /etc
     to something closer to the old version.

The tool is not complete, in that it won't always suggest the full set
of "simp add", "simp del", etc commands. Nor does it know that a rule
added to the simpset is causing a problem. It merely lists
a hopefully-sensible set of differences.
2014-10-13 11:05:31 +11:00
Daniel Matichuk 7577306226 Fixed apply trace for Isabelle 2014 2014-10-13 11:05:21 +11:00
David Greenaway 2e305baf24 lib: Add experimental "distinct" command.
The "distinct" command takes a list of 'n' terms, and generates O(n^2)
lemmas for you to prove that the 'n' terms are all distinct. These
proofs can typically be carried out by an "apply auto" command, giving
you O(n^2) distinctness theorems.

These new theorems can then be thrown into a simpset to avoid having to
constantly unfold definitions merely to prove distinctness.

This brings quite significant speedups in the "Example_Valid_State"
proof (demonstrated in the next commit), for example, as it means that
raw definitions need not be unfolded, and hence automated tactics don't
get side-tracked with their numerical definitions.

The "distinct" command is not really scalable, due to its O(n^2) proof
terms generated. If we wanted to use this in a larger example, we would
probably want a "ordered" command, which forces you to show that 'n'
terms have some ordering, and then automatically derive the O(n^2)
possible proof terms on-the-fly in a simproc (possibly using Isabelle's
existing "order_tac").
2014-10-07 08:59:17 +11:00
David Greenaway 37bfd30de6 NICTATools: Re-enable NICTATools import from NICTACompat.
NICTATools contains the occassionally-useful "unused meta-foralls"
warning, and the very-useful-but-still broken "apply_trace" command.

Add the import back, hoping that someone (Hi Dan!) comes and fixes the
"apply_trace" tool.
2014-10-01 16:03:15 +10:00
David Greenaway ea63ccd7ed HOLLemmaBucket: Add some random proofs. 2014-10-01 10:57:58 +10:00
David Greenaway e3b893e7d6 Merge 'master' into 'isabelle-2014'.
Conflicts:
	lib/Apply_Trace.thy
2014-09-18 09:23:12 +10:00
David Greenaway d521a81232 lib: More Isabelle 2014 updates. 2014-09-18 09:21:11 +10:00
David Greenaway 5073f46533 apply_trace: Add lower-level interface for clearing/reading deps.
The lower-level interface is useful for ML hackers, trying to debug
their own ML tactics.
2014-09-17 16:38:16 +10:00
David Greenaway cf0d1abce6 Merge 'master' into 'isabelle-2014'.
Conflicts:
	proof/crefine/Fastpath_C.thy
	proof/drefine/KHeap_DR.thy
	proof/infoflow/Noninterference.thy
	spec/design/version
	sys-init/DuplicateCaps_SI.thy
	sys-init/InitTCB_SI.thy
	sys-init/Proof_SI.thy
	tools/asmrefine/SimplExport.thy
	tools/autocorres/tests/examples/SchorrWaite.thy
2014-09-17 14:21:13 +10:00
David Greenaway 0547cb707b crunch: Reduce tracing messages, use "writeln" instead of "tracing".
Excessinve tracing messages cause jEdit to pause, waiting for the user
to click "Show more tracing output. We eliminate the debugging tracing
messages by default, and use "writeln" instead for the remainder.
("writeln" doesn't cause jEdit to pause.)
2014-09-16 11:14:09 +10:00
Andrew Boyton 97166be5a5 sys-init: Update sys-init and separation logic tactics for Isabelle 2014. 2014-09-12 17:48:39 +10:00
David Greenaway 730825abe5 capDL-api: Port to Isabelle 2014. 2014-09-12 11:40:28 +10:00
David Greenaway 03b1952aaa crefine: Port CRefine to Isabelle 2014. 2014-09-11 16:57:59 +10:00
David Greenaway 4cb3f753a3 clib: ctac-method: Fix whitespace.
Remove tabs, delete trailing whitespace.
2014-09-10 17:27:41 +10:00
Andrew Boyton 7167ea42ac CapDL: Made IRQ Nodes a new object type, not a small CNode.
IRQ Nodes are now their own object type in capDL. This makes it much easier
to distinguish between "real" CNodes and IRQ Nodes.

Updated:
 * the capDL refinement,
 * the access proofs, and
 * the system initialiser.
2014-09-09 14:07:50 +10:00
Thomas Sewell caf0529c7f Move burden of 'halt' proof, use less modifies.
In detail:
  - add a general user-specified exception to c_exntype
    (for use in tools like Substitute)
  - wrap calls to 'halt' in Guard {}, making it clearer that
    halt is never called, simplifying asmrefine
  - repair halt changes in crefine
  - avoid use of some suspicious 'modifies' properties in crefine
    which were generated by the parser for functions where inline
    ASM blocks have been elided, and which may be inaccurate.
2014-08-29 13:57:28 +10:00
Thomas Sewell 0346fb20b6 SIMPL->Graph proofs largely working. 2014-08-27 15:30:34 +10:00
David Greenaway 5ab730970b autocorres: Remove unnecessary rule from "whileLoop_results".
Thanks Tom for spotting this while proofing my thesis.
2014-08-13 12:18:46 +10:00
Thomas Sewell fc6e57716a Proof updates, working as far as AInvs. 2014-08-11 14:50:56 +10:00
Gerwin Klein e8d1ed6ded ported lib/* theories to Isabelle2014-RC0 2014-08-09 21:08:47 +10:00
Gerwin Klein 3c0b704ff2 retire unused theories
Upto is broken by the removal of the finite_intvl_succ class
2014-08-09 20:02:02 +10:00
Gerwin Klein 8d2cfe7417 CParser and lib tweaks; AutoCorres builds
CParser not finished yet, though: getting errors in cparser_test about linear
theory updates at end of thy.

Found more instances where we should be using Local_Theory.exit_global, but
might be besides the point (didn't help). Also might be overshooting the goal.
2014-08-09 19:23:17 +10:00
Gerwin Klein 12b1b0d16f move isAligned to HaskellLib
Isabelle2014 doesn't like defs to be less general than the consts declaration.
2014-08-09 15:59:24 +10:00
Gerwin Klein 1af1d2b67b some of the global Isabelle2014 renames
option_case -> case_option
sum_case -> case_sum
prod_case -> case_prod
Option.set -> set_option
Option.map -> map_option
option_rel -> rel_option
list_all2_def -> list_all2_iff
map.simps -> list.map
tl.simps -> list.sel(2-3)
the.simps -> option.sel
2014-08-09 15:39:20 +10:00
Lars Noschinski fe36a97b4d Port AutoCorres to Isabelle 2014-RC0 2014-08-08 17:29:54 +10:00
Corey Lewis ffb0d165f6 Some more cleanup of drefine. 2014-07-23 15:29:20 +10:00
Gerwin Klein 154da63715 remove old levity and taint-mode comments 2014-07-22 18:10:28 +02:00
Gerwin Klein 50dda7708c comment cleanup 2014-07-22 18:10:20 +02:00
Corey Lewis d52d8ad148 Fix previous commit. 2014-07-19 00:04:21 +10:00
Corey Lewis 07b85fe034 Move some more lemmas into lib. 2014-07-18 17:23:07 +10:00
Gerwin Klein 84595f4233 release cleanup 2014-07-17 18:22:50 +02:00
Gerwin Klein 2a03e81df4 Import release snapshot. 2014-07-14 21:32:44 +02:00