Commit Graph

68 Commits

Author SHA1 Message Date
Matthew Brecknell e3d209eb24 Isabelle2017: update SimplExportAndRefine for RC0 2017-10-30 12:23:26 +11:00
Thomas Sewell dbd888ad3e asmrefine: add one README.md, update another.
Better documentation of what's in the proof/asmrefine and
tools/asmrefine directories.
2017-08-16 18:15:21 +10:00
Matthew Brecknell 045744843a asmrefine: revert simplification of ghost_assertions
The previous simplfication broke SimplExportAndRefine.
2017-08-09 17:02:50 +10:00
Matthew Brecknell 238e8b307e x64: merge master 2017-07-21 11:27:12 +10:00
Alejandro Gomez-Londono 796887d9b1 Removes all trailing whitespaces 2017-07-12 15:13:51 +10:00
Thomas Sewell 8f9695b705 Tweak use of choice axiom in GraphRefine. 2017-07-05 15:27:38 +10:00
Thomas Sewell 971c6782e5 Support extra specs, ctzl, clzl in SimplExport.
This patch permits the user to supply additional specs for functions
whose bodies were not imported (DONT_TRANSLATE or not present in parsed
C source). Those specs are exported by SimplExport.

The existing apparatus can import builtin functions like ctzl/clzl in C
sources by admitting them without bodies (DONT_TRANSLATE) and giving
them axiomatic Hoare triples (FNSPEC).

Translation validation then requires export of useful semantics. The user
can supply a made-up body, and show that it is a refinement of the body
that the parser created (derived from the FNSPEC and MODIFIES clauses).
The body must export out the graph language correctly. For ctzl/clzl etc
this is easy.
2017-07-05 15:27:38 +10:00
Thomas Sewell 6cda8f50d0 Update GraphProof, slightly bitrotted.
This isn't part of any official proof at the moment, but it's a
notable next step, and I'm starting to write it up for my PhD.
2017-07-05 15:27:38 +10:00
Matthew Brecknell ce748b7522 x64: create arch-specific CKernel 2017-06-22 17:24:53 +10:00
Rafal Kolanski cfd2eefe3d Merge pull request #159 in SEL4/l4v from ~TSEWELL/l4v:length-1-array to master
* commit 'dbd226f899c83ae0b44d58446b88d2dd0fb67a83':
  SimplExportAndRefine: length 1 arrays.
2017-02-17 15:08:46 +11:00
Thomas Sewell dbd226f899 SimplExportAndRefine: length 1 arrays.
This creates an issue because "unat x < 1" is reduced to "unat x = 0"
by the simplifier, meaning the unat_mono tactic doesn't get to operate on
it. The fix is pretty easy. Also includes some extra investigation material.
2017-02-17 14:58:22 +11:00
Matthew Brecknell 30122b5d80 Isabelle2016-1: update to new ML API
Update references to renamed ML constants; supply default arguments to
functions with additional parameters; etc.
2017-01-05 14:26:14 +11:00
Matthew Brecknell 511c6b2d3a Isabelle2016-1: rename free variables to avoid capture 2017-01-05 14:24:36 +11:00
Matthew Brecknell 41d4aa4f1d Isabelle2016-1: update references to renamed constants and facts 2017-01-05 14:23:05 +11:00
Thomas Sewell 77d86cfc5f GraphRefine + CRefine: handle slightly more cases.
New testfile for graph-refine export with new handling code. Also
some slight tweaks to some CRefine proofs that will be needed to
remove DONT_TRANSLATE markers from certain key places in the seL4
code. These proofs are also compatible with previous seL4.
2016-12-08 16:12:17 +11:00
Thomas Sewell 8e7c55c1a5 Handling of AsmStmt in c-parser, more tests.
The C-parser contains a full parser for __asm__ syntax but
up until now hasn't done anything with it. Instead we export
some semantics. It's unspecified exactly what these semantics
are but they are parametrised with the __asm__ semantics that
went in to them, so the translation validation has something
to reason about.

Tweak modifies proofs as a result, and add some more test files.
2016-12-01 17:07:54 +11:00
Rafal Kolanski 4262cc231a asmrefine: teach div and sdiv handling to graph refine tactic 2016-11-15 12:11:01 +11:00
Thomas Sewell edddf623ec ProveGraphRefine: Handle power operations w/sign.
Support some more kinds of power operations in the C code when
proving the export to Simpl is OK.
2016-11-02 11:19:09 +11:00
Thomas Sewell 0128e3b66d Handle another operation in SimplExport.
Handle pointer comparison operations in SimplExport.
2016-11-02 11:19:09 +11:00
Thomas Sewell 7236874353 Support some more signed word cases in asmrefine. 2016-08-09 13:31:29 +10:00
Alejandro Gomez-Londono 93adccc141 license-tool: missing license headers + .licenseignore [VER-551] 2016-07-14 16:34:31 +10:00
Rafal Kolanski 27607011cd verification update for seL4 arm_hyp merge to master 2016-06-22 22:28:36 +10:00
Japheth Lim 40570bc4fe regression: add test to check theory import paths
This commit also fixes all bad imports reported by the test script.
Jira issue VER-560
2016-05-27 16:17:13 +10:00
Joel Beeren 6a2692abc6 lib: fix theory includes for arch-splitted WordSetup 2016-05-20 12:31:10 +10:00
Gerwin Klein 322f1023f5 word_lib: adjust theory dependencies 2016-05-16 21:11:40 +10:00
Matthew Brecknell 84d2889d45 Isabelle2016: merge master into 2016 2016-02-19 16:17:26 +11:00
Gao Xin d2130dc985 GraphRefine: improve while-condition guard stuff.
The existing code only captured a single Guard in the body of a while.
Replace it with some ML for capturing the intersection of all guards.

(Thomas typing on Xin's keyboard.)
2016-02-17 11:18:03 +11:00
Thomas Sewell 228d2d1971 Strengthen prove_ptr_safe.
Handles some signed inequalities, this should solve the issue that
Xin is seeing.
2016-02-12 01:28:31 +11:00
Matthew Brecknell 10ac05453f Isabelle2016: SimplExportAndRefine updated for RC3 2016-02-11 11:16:00 +11:00
Rafal Kolanski b44959a108 CRefine: fix simp loop in Invoke_C
Also make use of prod.collapse & prod_eq_iff, dropping old versions.
2016-02-11 11:15:59 +11:00
Ramana Kumar 66747fe2fc remove some cpat
gets CKernel to build
2016-02-11 11:15:59 +11:00
Thomas Sewell 29648ac243 Reduce verbosity in GraphRefine. 2015-12-08 19:36:28 +11:00
Thomas Sewell 15d09a093a Parallelise GraphRefine in its default run. 2015-12-08 17:39:07 +11:00
Thomas Sewell f54964a05d More fixes, hopefully closer. 2015-12-04 14:01:38 +11:00
Thomas Sewell 175eb2da2d More fixes for pointer array assertions. 2015-12-03 17:30:08 +11:00
Thomas Sewell df40425731 Repair SimplExport/GraphRefine. 2015-12-03 16:34:11 +11:00
Thomas Sewell e2c5e1eb3d Treat guarded_spec_body like Spec in asmrefine.
The parser now emits guarded_spec_body for underspecified functions,
not Spec. SimplExport now treats them the same.
2015-11-24 17:52:53 +11:00
Thomas Sewell cc7cf154a5 Fiddling const global unfold in graph refine. 2015-08-18 17:24:23 +10:00
Thomas Sewell bd928d1793 Try to avoid emitting const-globals via memory.
Sometimes it's simpler to access an unknown field of a const
global by just computing the offset from its symbol in memory
and assuming the relevant words are in the .rodata section. But
for known fields, it's easier to just figure out what the
constant value is. This complicates the proof slightly, since
it has to guess which case it is in.
2015-08-17 23:35:06 +10:00
Thomas Sewell 99e7f82d0d Space out the CFunDump.txt file.
It's much easier to read that way.
2015-08-10 18:31:17 +10:00
Thomas Sewell 5f4a25b078 Improve guard handling in GraphRefine.
Needed for recent changes to how global validity assertions are
generated.
2015-07-28 22:43:03 +10:00
Thomas Sewell e4ab39f0a6 Repair merge. 2015-07-28 18:12:53 +10:00
Thomas Sewell a0b3a569df Really add all necessary PGlobalValid assertions. 2015-07-28 17:40:21 +10:00
Thomas Sewell 0b5182bd84 More adjustments to graph export/refine. 2015-07-16 13:44:25 +10:00
Thomas Sewell 4211cd2b1a Progress on upgrading GraphRefine.
Needed to handle new concepts being exported from Simpl.
2015-07-15 21:41:07 +10:00
Thomas Sewell 53e1c0c7df Update to SimplExport, fixes. 2015-07-15 11:48:39 +10:00
Thomas Sewell 44799b7663 Really add all necessary PGlobalValid assertions. 2015-07-15 11:48:39 +10:00
Thomas Sewell ca4391881c WIP on WCET annotations. 2015-07-14 14:23:29 +10:00
Gerwin Klein a9bebcfed5 asmrefine: 2015 udpate 2015-05-22 10:21:22 +10:00
Gerwin Klein e09f88d2e7 2015 update for CBaseRefine 2015-05-17 10:42:15 +10:00