summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2018-04-26Lem: Add Size class annotations for nested bitvector typesThomas Bauereiss
2018-04-26Fix bug in rewriting of loopsThomas Bauereiss
Take into account existential types when determining bounds for the loop variable
2018-04-26Avoid adding explicit type annotations with generated type variablesThomas Bauereiss
2018-04-26Make effect propagation in rewriter more efficientThomas Bauereiss
Use non-recursive fix_eff_exp instead of recursive propagate_exp_effect, assuming that the effects of subexpressions have already been fixed by the recursive calls of the rewriter.
2018-04-26Lazily evaluate debugging messagesThomas Bauereiss
This is meant to increase performance; for example, generating debug messages that include pretty-printed expressions can be very costly, if those expressions are complex (e.g. deeply nested E_internal_plet nodes representing a long sequence of monadic binds).
2018-04-26Add a new SHARE_DIR argument to use when doing opam build. For non-opam ↵Robert Norton
builds this defaults to git root.
2018-04-26Make ocamlbuild assume lem is in path instead of relative to current directory.Robert Norton
2018-04-26Opam packaging: add install and uninstall targets and code to find various ↵Robert Norton
files in installed location.
2018-04-26Remove obsolete mips/cheri rules from sail makefile. These are now built in ↵Robert Norton
their respective subdirectories.
2018-04-25Simplify subtyping checkAlasdair Armstrong
This should make subtyping work better for tuples containing constrained types. Removes the intermediate type-normal-form representation from the subtyping check, and replaces it with Env.canonicalize from the canonical branch.
2018-04-25Start working on documentationAlasdair Armstrong
2018-04-23Merge branch 'rmn30_latex' into sail2Robert Norton
2018-04-20Allow instantiation of type or order type variables without kind declarationBrian Campbell
2018-04-20Have sign_extend in common Sail Lem library, use it and zero_extend inBrian Campbell
mono rewrites
2018-04-19Gloss over UInt/unsigned name difference in monomorphisationBrian Campbell
2018-04-19Fix bug with function being applied to tuplesAlasdair Armstrong
For some reason there was a desugaring rule that mapped f((x, y)) to f(x, y) in initial_check.ml, this prevented functions and constructors from being applied to tuples.
2018-04-18Add first draft of Isabelle library documentationThomas Bauereiss
2018-04-18Fix bug in pretty-printing loops to LemThomas Bauereiss
2018-04-18Add some lemmas about bitvectorsThomas Bauereiss
Also clean up some library functions a bit, and add some missing failure handling variants of division operations on bitvectors.
2018-04-18Move a few printing functions to sail_values.lemThomas Bauereiss
They are used in various specs and test cases.
2018-04-18Fix another reference to BK_natAlastair Reid
2018-04-18Fix build on linuxAlasdair Armstrong
Turns out that BSD sed is not a subset of GNU sed, GNU sed doesn't allow a space after the -i option.
2018-04-18Port to Mac: BSD sed != GNU sedAlastair Reid
For GNU sed, the extension is optional in sed -i ... But in BSD sed, the extension is mandatory sed -i .bak ...
2018-04-18Move Lem shl_int, shr_int implementations from aarch64_extras to sail libBrian Campbell
(note that they're already declared in lib/arith.sail)
2018-04-18add some experimental support for latex output in multiple files.Robert Norton
2018-04-18Rename BK_nat to BK_int to be consistent with source syntaxAlasdair Armstrong
2018-04-18Updates to latex mode for documentationAlasdair Armstrong
2018-04-17Fix slicing in constant propagationBrian Campbell
2018-04-17Move some Lem library vector operations so that we also have mword versionsBrian Campbell
2018-04-13Check all patterns inside functions with -dsanityBrian Campbell
2018-04-12Fill in some minor missing cases in monomorphisationBrian Campbell
2018-04-11Avoid unnecessary rechecking in remove numeral pats rewriteBrian Campbell
(especially as the environment previously used was a bit dodgy)
2018-04-11Use more robust method of finding deps of new tyvars in mono analysisBrian Campbell
2018-04-11Make the atom to singleton type rewriter replace literals with guardsBrian Campbell
(previously the typechecker did this for all literal patterns, but now it's only necessary for the rewritten arguments)
2018-04-10Porting some minisail changes to sail2 branchAlasdair Armstrong
This commit primarily changes how existential types are bound in letbindings. Essentially, the constraints on both numeric and existentially quantified types are lifted into the surrounding type context automatically, so in ``` val f : nat -> nat let x = f(3) ``` whereas x would have had type nat by default before, it'll now have type atom('n) with a constraint that 'n >= 0 (where 'n is some fresh type variable). This has several advantages: x can be passed to functions expecting an atom argument, such as a vector indexing operation without any clunky cast functions - ex_int, ex_nat, and ex_range are no longer required. The let 'x = something() syntax is also less needed, and is now only really required when we specifically want a name to refer to x's type. This changes slightly the nature of the type pattern syntax---whereas previously it was used to cause an existential to be destructured, it now just provides names for an automatically destructured binding. Usually however, this just works the same. Also: - Fixed an issue where the rewrite_split_fun_constr_pats rewriting pass didn't add type paramemters for newly added type variables in generated function parameters. - Updated string_of_ functions in ast_util to reflect syntax changes - Fixed a C compilation issue where elements of union type constructors were not being coerced between big integers and 64-bit integers where appropriate - Type annotations in patterns now generalise, rather than restrict the type of the pattern. This should be safer and easier to handle in the various backends. I don't think any code we had was relying on this behaviour anyway. - Add inequality operator to lib/flow.sail - Fix an issue whereby top-level let bindings with annotations were checked incorrectly
2018-04-10Avoid rejecting reasonable pattern matches in monomorphisationBrian Campbell
(when they're not relevant)
2018-04-10Add basic reference support to monomorphisationBrian Campbell
2018-04-09Remove unnecessary restriction on complex nexp rewritingBrian Campbell
2018-04-09Stop vector_typ_args_of from failing when order is a variableBrian Campbell
Now it just returns the actual arguments and a separate function calculates the start index when required.
2018-04-06Fix some error msg typos.Prashanth Mundkur
2018-04-06Generate better tyvar names for complex nexps in monomorphisationBrian Campbell
2018-04-06Update sail.tex for wip latex outputAlasdair Armstrong
Fix a bug in initial check which caused X() = y to expect an additional parameter. Some tweaks to sail2 emacs mode
2018-04-05Fix precedence printing and update aarch64 specAlasdair Armstrong
More work on Latex output
2018-04-05More work on latex outputAlasdair Armstrong
Now generate commands for each toplevel definition, such that e.g. the function clause for execute LOAD could be inserted using \sailexecuteLOAD. Tries to generate fairly intuitive names while avoiding clashes where possible.
2018-04-05Cleanup repository by removing old and generated filesAlasdair Armstrong
Rename l2.ott to sail.ott
2018-04-05Add generic prelude library that pulls in various basic sailAlasdair Armstrong
definitions from sail/lib.
2018-04-04Make Type_check.solve do obvious cases immediatelyBrian Campbell
2018-04-04Use solver properly to simplify nexps in mono analysis, Lem printingBrian Campbell
Turn on complex nexp rewriting for mono by default (NB: solving is currently quite slow, will optimise)
2018-04-04Instantiate type properly when introducing mono castsBrian Campbell
(also reorder the phases a little)
2018-04-04Use valspec equations in monomorphisation analysisBrian Campbell