https://github.com/EasyCrypt/easycrypt

sort by:
Revision Author Date Message Commit Date
30bfa95 New tactic: "proc change" This tactic allows to change an expression in a statement by some other expression. When applied, the user has to prove that the two expressions are equal (generalizing over all the program variables) This tactic applies to any program logic. The syntax is: proc change <side?> <codepos> : <form> This tactic is in the TCB. Test plan: - unit test (tests/prochange.ec) 05 April 2024, 12:45:45 UTC
4ccf645 runtest: fix regexp escapes + deprecation warnings 05 April 2024, 12:31:27 UTC
ad79306 DigitalSignatures.eca library 05 April 2024, 12:21:31 UTC
41c2667 This diff removes the cost logic. The cost logic suffers the following: - it does not implement what is needed, and is then barely used, - its implementation is invasive and duplicates some internal mechanisms The latter point slows down the development of new features. In conclusion, it has been decided not to wait for the new cost logic before removing the current implementation. 02 April 2024, 15:42:03 UTC
c96ddd7 In cbn, restart reduction after a beta-reduction beta-reduction might have introduced a head-redex. 29 March 2024, 12:31:44 UTC
7bc148b Unify the behavior of simplify & /= w.r.t. auto-unfolding. Before this commit, `simplify` was not configured to unfold symbols marked for auto-unfolding. 29 March 2024, 12:31:44 UTC
5b48ec4 Stdlib: more results on `coprime` + modular equality 26 March 2024, 18:01:44 UTC
45f111d flake+opam-nix 23 March 2024, 14:14:55 UTC
a7d2b01 Use dune-site to find resources (when installed) 23 March 2024, 14:14:55 UTC
c5f30c8 Added example usage of well-founded recursion and induction (#518) to examples directory. Cleaned up various things in WF.ec, including standardizing some terminology. 08 March 2024, 23:54:43 UTC
a8274fe Optimize pretty-printing of notations The printer now does a eager filtering of notations (only notations that share the same head symbol as the printed formula are considered) The does not change the behavior of the pretty-printer, but greatly improves performance. 07 February 2024, 16:39:46 UTC
f7992e1 Remove module overriding when cloning a theory. (#458) 30 January 2024, 16:41:48 UTC
ed61f01 New tactic: "case <-" This tactic "inlines" tuple assignments, i.e. it transforms ``` (lv1,...,lvn) <- (e1,...,en); ``` in ``` lv1 <- e1; ... lvn <- en; ``` 30 January 2024, 15:30:11 UTC
5903e1f Internal: minor additions to EcLowPhlGoal & EcMatching modules - EcMatching.Zipper.map - EcLowPhlGoal.{is_program_logic,hl_set_stmt} 30 January 2024, 13:29:18 UTC
ff7b195 New tactic: `rewrite equiv` The main idea is to provide a way to rewrite a procedure call, somewhere in a program, into a different procedure call, using an equiv. There is a variant provided to handle cases where the function to be rewritten to has different arguments and/or left-value than the instance provided. Syntax and variants: - Same arguments: `rewrite equiv[{m} p d lem]` - Different arguments: `rewrite equiv[{m} p d lem (a1, a2, ... :@ lv?)]` with - `m`: 1 or 2 - `p`: code position - `d`: direction, either `-` or nothing - `lem`: equiv for the rewrite - `ai`: an expression representing a function argument - `lv`: a left-value For example usage see: `tests/rwequiv.ec` or instances in the stdlib. 29 January 2024, 14:29:12 UTC
4401490 Refactoring & simplfication of the low-level substitution. The low-level substitution is now in `EcCoreSubst` Co-authored-by: Pierre-Yves Strub <pierre-yves@strub.nu> 29 January 2024, 13:31:44 UTC
2b3bbad docker: fix opam init CL 15 December 2023, 19:16:51 UTC
12af606 New tactic: `outline` (#473) The main idea is to provide an inverse to inline when proving an equiv. Currently, it supports basic procedure unification that requires manual selection of the program slice to unify with, as well as, requiring near exact matches on program structure. An optional return value can be supplied for situations where the return expression is just a program variable and needs to be renamed/deconstructed. There is also support for statement outlining although, this is more of a transitivity * with program slicing so may require change. Syntax and variants: - Procedure outlining: outline {m} [s - e] lv? <@ M.foo - Statement outlining: outline {m} [s - e] { s1; s2; ... } with - m: 1 or 2 - s,e: code position - M.foo: path to procedure - lv: a left-value when `s = e`, one can use `[s]` instead of `[s-s]` For example usage see: tests/outline.ec 15 December 2023, 10:45:02 UTC
1733c19 Docker: bump OCaml to 5.1.0 12 December 2023, 14:58:32 UTC
943fc84 Bump provers to latest that succeeds, drop CVC4 Only Alt-Ergo needs kept back. 12 December 2023, 13:46:57 UTC
98139b7 nix-shell: remove why3 pin 12 December 2023, 12:58:20 UTC
736e322 remove a global axiom warning from the UC example (#502) 12 December 2023, 12:18:17 UTC
4c564f5 Internal API: process_Xhl_* This family of functions type-check a formula w.r.t. a memory that is infered from the program logic goal. The commit changes two things: - for prhl, its uses the same memory name as the one used in the program logic goal. (Previously, it was using `mhr`) - its returns the memory that has been used for the type-checking 11 December 2023, 12:52:51 UTC
4f02829 New command prefix: `fail` This prefix indicates that the following command should fail and that the error has to be ignored. It is an actual error if the command does not fail. In interactive mode, the error is printed (at [info] level). The main purpose of `fail` is to allow to write more precise unit tests where one can indicate which command shoud actually fail. 11 December 2023, 10:07:50 UTC
530a354 CI: do not skip successful duplicates If so, we can end with PR to protected branches that are blocked. 11 December 2023, 09:50:22 UTC
bbe5e6d CI: unit tests In the automated tests, add a section `unit`for unit tests. The unit tests are checked by the CI. They can be run using `make unit`. 11 December 2023, 09:11:50 UTC
9c1ec6b CI: skip duplicated jobs 07 December 2023, 15:57:05 UTC
1d3dcaa extend weakmem to hoare/choare/ehoare/equiv 07 December 2023, 15:56:27 UTC
6576223 Fix reduction w.r.t. memory types. This commit fixes two bugs: - the memory types (in all hoare logic constructor) were not taken into account in conversion. - the bounded memories where not substituted for alpha conversion. 07 December 2023, 10:35:52 UTC
9e85ab1 Add tactic `weakmem` This tactic allows to weaken the memory of a phoare hypothesis by adding new variables to it. This tactic is needed in the while rule for phoare, when one wants to apply the induction hypothesis & the memories are not compatible. Currently, the convertibility check does not enforce that memories are equal, but a to-come PR is going to fix that point. 07 December 2023, 10:21:48 UTC
d248e73 rndsem: new version that only computes the distribution for used variables This version was already available internally. This commits only add the needed syntax for accessing it. The syntax is: `rndsem* <options>`. closes #415 06 December 2023, 15:25:53 UTC
7c0adea In substitutions, lazyly refresh the codomain of the univar map This map is allowed to do name capture and is hence sensitive to bound variables renaming. 05 December 2023, 16:33:38 UTC
dd02a37 In view application, close cut formula after substitution If not, we are creating a capture. The bug is hidden because we are not using a refreshing substitution in this case. 05 December 2023, 14:03:35 UTC
0de7f16 Compile in `dev` mode by default. Until now, `make` was building EasyCrypt in release mode. The set of warning flags in release mode is weaker then in development mode. Switching to dev mode caused the apparition of some warnings. This commit fixes them. 04 December 2023, 15:39:51 UTC
068fdd9 nix: do not pin provers versions nix-flake should be used to pin provers to a given version. 02 December 2023, 11:10:24 UTC
c0376b7 Bump the minimal version of Why to 1.7 This allows us to use more recent versions of the provers. The docker images have been updated accordingly. Docker now comes with the following provers: - Z3 4.12.2 - CVC4 1.8 - CVC5 1.0.6 - Alt-Ergo 2.5.2 02 December 2023, 08:24:16 UTC
14a397c runtest: new option: why3 (why3 configuration file location) 01 December 2023, 21:44:34 UTC
23e603e runtest: allows to specify provers from the CLI 01 December 2023, 21:27:04 UTC
42a7841 runtest: do not try to load pyyaml when reporting is disabled 01 December 2023, 16:53:46 UTC
15f0751 Allows selecting a prover by its version number. Syntax is name@version. The selected prover is the prover with name `name` and with the lowest version that is greater (or equal) than `version`. For example, if Z3 4.8.0, Z3 4.8.2 & Z3 4.12.2 are installed, Z3@4.8 selects Z3 4.8.2. 01 December 2023, 16:15:50 UTC
27edb8a opam: allow Why3 1.7.x 30 November 2023, 08:37:08 UTC
d9d7bcf Removed two unused type declarations. 28 November 2023, 20:14:47 UTC
d43887b Share the definition of the datatypes in EcAst.ml 25 November 2023, 10:05:04 UTC
b79290f SMT timeout can now be configured in INI files The configuration key is "timeout" 24 November 2023, 17:30:52 UTC
3be7cb9 Support project-local ini files EasyCrypt now reads project-local files for getting its configuration settings. This configuration file takes precedence over the system-level configuration file. The project-local configuration file is named 'easycrypt.project'. It is identical to the system-level configuration file. When compiling a file, the configuration file is searched upward from the target file directory. When ran in interactive mode, the configuration file is searched upward from the current working directory. Note that when ProofGeneral starts EasyCrypt, the working directory is set to the directory of the focused file. 24 November 2023, 17:25:58 UTC
9fd429a When rewriting in the local env, do not fail on identity rewriting fix #463 08 November 2023, 17:06:32 UTC
ff7b698 added adversary and qselect examples 08 November 2023, 11:03:26 UTC
99ec9f4 ehoare Co-authored-by: Benjamin Grégoire <benjamin.gregoire@inria.fr> Co-authored-by: Martin Avanzini <martin.avanzini@inria.fr> 08 November 2023, 11:03:26 UTC
9275a29 Nits: choiceb induction principle 19 October 2023, 14:57:04 UTC
a214a56 opsem: generate spec lemmas 26 September 2023, 11:14:56 UTC
5e383f5 Internal: do not consider an applied abstract module as a non-functor abstract module fix #455 26 September 2023, 07:28:36 UTC
13296e5 In subst, when crossing a binding, remove the bound variable. If not, the substitution can lead to name captures. 25 September 2023, 18:44:32 UTC
8fa2f94 op: fix creation of refined operators Do the operator substitution and then close the formula. 22 September 2023, 19:27:28 UTC
50bcef7 Remove references 22 September 2023, 11:49:02 UTC
ef42e9d Fixed glob unsoundess through eager normalization of globs when type checking and substituting modules. 22 September 2023, 11:49:02 UTC
755fe93 stdlib: new lemma on summable 22 September 2023, 08:09:07 UTC
d5a04f5 Read library paths from the EC_IDIRS/EC_RDIRS env. vars. Library paths can be specified using the environment variables EC_IDIRS and EC_RDIRS. They contain each a list of specifications separated by semicolumns (;). Each said specification is a path, optionally qualified (when present, the qualifier is followed by a colon (:)). Specifications given in the EC_IDIRS variable behave the same as the ones given in the idirs configuration entry or on the command line following a -I argument. Specifications given in the EC_RDIRS variable behave the same as the ones given in the rdirs configuration entry or on the command line following a -R argument. 21 September 2023, 11:27:48 UTC
a9ae1ae add more lemmas on converto 21 September 2023, 09:32:44 UTC
c410d3c remove hyp in normrV 21 September 2023, 09:32:15 UTC
c60092d stdlib: limit of the inverse of a sequence 21 September 2023, 09:08:56 UTC
eb00ea4 Fix the printing of operator bodies fix #442 15 September 2023, 12:25:39 UTC
8746da3 cloning: fix regression bug in operators convertibilty check The check should use the full conversion. fix #437 14 September 2023, 10:51:55 UTC
287106a [nix] vendor prover derivations 13 September 2023, 20:57:12 UTC
480c0ea Operator unfolding when applied to enough arguments When declaring an operator, it is now possible to specify which arguments are mandatory before an operator application is automtically unfolded during simplification. Syntax is: ``` op name (x1 : t1) (xp : tp) / (x_p+1 : t_p+1) ... = ... ``` where the optional `/` indicated that the operator `name` will be automatically unfolded when applied to at least `p` arguments. 06 September 2023, 13:42:47 UTC
8243791 [runtest]: new CLI argument --bin This argument tells `runtest` which binary to use for EasyCrypt. It takes precedence over what is found in the INI file (in default/bin). Moreover, `easycrypt runtest` automatically set --bin to itself. This allows to select the correct version of EasyCrypt without having to tweak the INI file accordingly. 06 September 2023, 11:44:57 UTC
7d59877 hint simplify now extracts rewriting rules from <=> 05 September 2023, 12:52:06 UTC
bcdb9cb Fixed the type given to a constructor when matching directly. 04 September 2023, 16:43:08 UTC
46d6948 Operators body can now be formulas When cloning a theory, inlined operator definitions must be expressions s.t. their substitution can be done in procedures bodies. 04 September 2023, 08:59:09 UTC
35e3849 get rid of axiom in `Birthday` 30 August 2023, 11:43:29 UTC
faedf01 Additional List lemmas. Additional lemmas in StdBigop and RealSeries. 29 August 2023, 12:08:44 UTC
c13b549 [internal] EcSubst does not rely anymore on the low-level substitutions Co-authored-by: Pierre-Yves Strub <pierre-yves@strub.nu> Co-authored-by: Benjamin Grégoire <Benjamin.Gregoire@inria.fr> 28 August 2023, 10:36:37 UTC
6a203df fix smt that regressed with z3 bump to 4.12.2 all else being equal, works with 4.12.1, fails with 4.12.2 fails with all other solvers 12 August 2023, 08:57:48 UTC
ae29508 pin alt-ergo, z3 12 August 2023, 08:57:48 UTC
705bafe refactor nix to avoid repetition 12 August 2023, 08:57:48 UTC
95cabb9 add support for test config 'report' option there is currently no way of asking for a report with 'easycrypt runtest' 07 August 2023, 17:56:12 UTC
da3be5c [chore] whitespace 07 August 2023, 17:56:12 UTC
a72dada Propagate subtype changes to Word 02 August 2023, 00:47:04 UTC
917bba2 Ring/field tactics available as soon as an instance is found. 20 July 2023, 13:49:02 UTC
e75a7cf get rid of unbounded smt calls outside examples 20 July 2023, 13:22:13 UTC
1bb2e2d Additonal lemmas on fset equality establishing an equivalence, and additional lemma on perm_eq and undup (making the oflist_perm_eq lemma redundant). 19 July 2023, 08:46:42 UTC
6e066e6 Fix wording of error messages "function" -> "procedure" fix #417 13 July 2023, 11:07:33 UTC
add9232 [chore] fix more raw smt calls 11 July 2023, 20:01:13 UTC
0c60516 [chore] fix raw smt calls (theories/distributions) 11 July 2023, 20:01:13 UTC
757ec09 [chore] remove more raw smt calls 29 June 2023, 13:20:43 UTC
85d03a2 [chore] fix some warnings and flaky smt calls (#408) 29 June 2023, 11:18:26 UTC
cddd7d9 [theories] define product using allpairs (#411) 28 June 2023, 14:58:53 UTC
60c3179 Renaming the easycrypt lib (making it easyier for external imports) (#410) 28 June 2023, 12:25:32 UTC
73ac095 proc op: add support for the "local" modifier 27 June 2023, 13:55:48 UTC
3693e61 [theories] additional elimination rules for finite sums (#401) 22 June 2023, 13:18:15 UTC
c0eeee4 Refactor out Fermat's little theorem from ZModP to IntDiv 21 June 2023, 10:34:00 UTC
4965377 Prove Fermat's little theorem 21 June 2023, 10:34:00 UTC
e38fac3 Keep f_let_simp 16 June 2023, 10:40:43 UTC
d1858f6 Remove dead code relating to substitution; instead, the f_subst mechanism should be used. (And this is in fact done for simplification of let formulas in EcReduction.) 16 June 2023, 10:40:43 UTC
341cc08 New inline tactic We realized that sometimes we want to inline everything besides one procedure and found that it is cumbersome to have to list everything that has to be inlined instead of listing what should remain as is. So we decided to add this to the current inline. We should have kept the previous use cases identical as supported by the fact that nothing broke while not touching any old ec files. In doing so, we also added the possibility to provide the name of a module leading to inlining all the procedure in this module. Finally, one can now provide the name of a procedure and it will inline all the procedures with that name regardless of the module in which they belong. As already mentioned, one can find examples at the following link. https://github.com/EasyCrypt/easycrypt/blob/deploy-inline/examples/tactics/inline.ec start with parsing pattern matching on inline add some examples fix 16 June 2023, 10:39:43 UTC
f0e15c2 Turned the files in src into a lib called Core. (#397) * Turned the files in src into a lib called core. * Removed reference to dead code in dune file The file ecCoreHiPhl was removed as dead code, no need to exclude it in the dune file anymore. --------- Co-authored-by: Romain Tetley <rtetley@inria.fr> 15 June 2023, 14:57:04 UTC
8232d04 Remove dead code (#398) The file ecCoreHiPhl.ml seems to be dead code because: - It contains an open EcLogic which was deleted in 2014 (commit 6fe0ea944a53ffc89bdde9bb70f81629ff764c97) - The last time it was modified (apart from licence headers) was in 2013 (commit f2e05e2688ab1894daf760ed255060253839286c) 15 June 2023, 14:19:31 UTC
b0eeedc Take PolyReduce theory from Kyber project Add choice-based inverses and fix broken proofs from subtype changes Co-authored-by: Pierre-Yves Strub <pierre-yves@strub.nu> 13 June 2023, 09:09:31 UTC
dfec6be restore name 13 June 2023, 07:53:12 UTC
a4a0332 Tighten the ROM bad call results 13 June 2023, 07:53:12 UTC
d481338 [lib] FSet: fcard_eq1 Co-authored-by: Christian Doczkal <christian.doczkal@mpi-sp.org> 13 June 2023, 07:30:41 UTC
back to top