| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2019-04-29 | SMT: Refactor overflow checks into generic event checking system | Alasdair Armstrong | |
| Have assert events for assertions and overflow events for potential integer overflow. Unclear how these should interact... The order in which such events are applied to the final assertion is potentially quite important. Overflow checks and assertions are now path sensitive, as they should be. | |||
| 2019-04-29 | SMT: Support arbitrary tuple sizes | Alasdair Armstrong | |
| 2019-04-27 | Merge branch 'sail2' into smt_experiments | Alasdair | |
| 2019-04-26 | Fix some broken interpreter tests | Alasdair Armstrong | |
| 2019-04-26 | More constructor monomorphisation support | Brian Campbell | |
| - handle multiple bitvector length variables - more fine-grained unnecessary cast insertion checks - add tuple matching support to constant propagation (for the test) | |||
| 2019-04-25 | Fill in missing map_..._annot case | Brian Campbell | |
| 2019-04-25 | More read/write function updates | Brian Campbell | |
| 2019-04-25 | Get basic constructor monomorphisation working again | Brian Campbell | |
| - updates for type checking changes - handle a little more pattern matching in constant propagation - fix bug where false positive warnings were produced - ensure bitvectors in tuples are always monomorphised (to catch the case where the bitvectors only appear alone with a constant size) | |||
| 2019-04-25 | Make constructor splitting in monomorphisation obey -dall_split_errors | Brian Campbell | |
| 2019-04-25 | Don't try to insert monomorphisation casts when the types are the same | Brian Campbell | |
| 2019-04-25 | lem gen_lib: update read/write functions to take (dummy) addrsize argument ↵ | Jon French | |
| as in other places | |||
| 2019-04-25 | SMT: Provide a more useful error message when topsort fails | Alasdair | |
| 2019-04-24 | SMT: Make sure we clear overflow checks between generating properties | Alasdair Armstrong | |
| 2019-04-24 | SMT: Can now recheck some simple models via the interpreter | Alasdair | |
| Probably need to clean-up the implementation and merge new_interpreter into this branch before supporting re-checking counterexamples with more things. | |||
| 2019-04-23 | SMT: Add some comments | Alasdair | |
| 2019-04-23 | SMT: Only check counterexamples automatically with -smt_auto flag | Alasdair Armstrong | |
| 2019-04-23 | SMT: Add parser for generated models | Alasdair Armstrong | |
| Simple parser-combinator style parser for generated models. It's actually quite tricky to reconstruct the models because we can have: let x = something $counterexample function prop(x: bits(32)) -> bool = ... where the function argument becomes zx/1 rather than zx/0, which is what we'd expect for the argument of a property. Might need to do something smarter with encoding locations into smt names to figure out what SMT variables correspond to which souce variables exactly. The above also previously generated incorrect SMT, which has now been fixed. | |||
| 2019-04-23 | SMT: Add signed builtin | Thomas Bauereiss | |
| 2019-04-20 | SMT: Support writing to register references | Alasdair Armstrong | |
| Add a new AE_write_ref constructor in the ANF representation to make writes to register references explicit in Jib_compile | |||
| 2019-04-20 | Fix: Reduce constant-fold time for ARM from 20min+ to 10s | Alasdair Armstrong | |
| With the new interpreter changes computing the initial state for the interpreter does some significant work. The existing code was re-computing the initial state for every subexpression in the specification (not even just the ones due to be constant-folded away). Now we just compute the initial state once and use it for all constant folds. Also reduce the time taken for the simple_assignments rewrite from 20s to under 1s for ARMv8.5, by skipping l-expressions that are already in the simplest form. | |||
| 2019-04-19 | Coq: when replacing n_constraints in types allow for some rearrangement | Brian Campbell | |
| (in particular, to cope with Type_check.simp_typ) | |||
| 2019-04-17 | SMT: Automatically get model when $counterexample is used rather than $property | Alasdair Armstrong | |
| 2019-04-17 | Coq: support pure loops with termination measures | Brian Campbell | |
| 2019-04-17 | SMT: Support register references | Alasdair Armstrong | |
| 2019-04-17 | SMT: Support generic vectors and handle lets between specs and functions | Alasdair Armstrong | |
| If we have e.g. $property val prop : ... let X = 0 function prop(...) = X == ... then we need to ensure that let X is included when we generate the property. | |||
| 2019-04-17 | SMT: Unroll simple foreach loops | Alasdair Armstrong | |
| 2019-04-17 | Build libsail again (removed Bytcode and Share_directory) | Shaked Flur | |
| 2019-04-16 | Temporarily remove Makefile part that is making Jenkins fail | Alasdair Armstrong | |
| Comment out some interpreter tests that go into infinite loops because those will cause issues for Jenkins. | |||
| 2019-04-16 | Fix: Don't repeat ctyp_of_typ call | Alasdair Armstrong | |
| 2019-04-16 | Remove unnecessary assert | Thomas Bauereiss | |
| 2019-04-16 | SMT: Support toplevel letbindings | Alasdair Armstrong | |
| 2019-04-16 | SMT: Fix inlining issues | Alasdair Armstrong | |
| 2019-04-16 | Coq: don't record assertions in the context if Sail doesn't | Brian Campbell | |
| This can massively reduce Coq's typechecking time on assertion heavy code, such as the builtins tests. | |||
| 2019-04-16 | Also allow "repeat" in loop termination measure syntax | Brian Campbell | |
| 2019-04-16 | Bugfixing | Thomas Bauereiss | |
| 2019-04-16 | SMT: Take care to not generate duplicate labels | Thomas Bauereiss | |
| 2019-04-16 | SMT: Add struct value literals | Alasdair | |
| Generates much better SMT that assigning each field one-by-one starting with an undefined struct. | |||
| 2019-04-15 | Add more SMT builtins | Thomas Bauereiss | |
| 2019-04-15 | SMT: Allow partial specializations | Alasdair Armstrong | |
| Change specialisation so we only specialize integer parameters when they are constant. This makes ensures that the integer-specialised code is always type-correct. | |||
| 2019-04-15 | Merge branch 'sail2' of github.com:rems-project/sail into sail2 | Jon French | |
| 2019-04-15 | Merge branch 'sail2' into rmem_interpreter | Jon French | |
| 2019-04-15 | Fix: Allow zero-length vector literals | Alasdair Armstrong | |
| 2019-04-15 | Basic loop termination measures for Coq | Brian Campbell | |
| Currently only supports pure termination measures for loops with effects. The user syntax uses separate termination measure declarations, as in the previous recursive termination measures, which are rewritten into the loop AST nodes before type checking (because it would be rather difficult to calculate the correct environment to type check the separate declaration in). | |||
| 2019-04-13 | SMT: Add count_leading_zeros and more builtins | Alasdair | |
| 2019-04-13 | SMT: More builtins | Alasdair | |
| Add some tests for arithmetic operations. Some tests fail in either Z3 or CVC4 currently, due to how overflow is handled. | |||
| 2019-04-12 | ToFromInterp_backend: print type annotations for abbrevs of unquantified ↵ | Jon French | |
| types, to help out ocaml (hack) | |||
| 2019-04-12 | ToFromInterp_backend: don't generate converters for cache_op_kind | Jon French | |
| 2019-04-12 | ToFromInterp_backend: better handling of nexps | Jon French | |
| 2019-04-12 | Interpreter: remove debug printing (oops) | Jon French | |
| 2019-04-12 | update libsail.mllib with more jib modules | Jon French | |
