480c0ea | Pierre-Yves Strub | 28 August 2023, 15:37:04 UTC | 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 | Pierre-Yves Strub | 05 September 2023, 15:52:17 UTC | [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 | Pierre-Yves Strub | 05 September 2023, 09:00:37 UTC | hint simplify now extracts rewriting rules from <=> | 05 September 2023, 12:52:06 UTC |
bcdb9cb | Cameron Low | 04 September 2023, 13:10:46 UTC | Fixed the type given to a constructor when matching directly. | 04 September 2023, 16:43:08 UTC |
46d6948 | Pierre-Yves Strub | 28 August 2023, 14:00:06 UTC | 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 | Oskar Goldhahn | 23 August 2023, 18:24:43 UTC | get rid of axiom in `Birthday` | 30 August 2023, 11:43:29 UTC |
faedf01 | mm | 11 July 2023, 14:20:07 UTC | Additional List lemmas. Additional lemmas in StdBigop and RealSeries. | 29 August 2023, 12:08:44 UTC |
c13b549 | Cameron Low | 19 July 2022, 13:48:12 UTC | [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 | François Dupressoir | 07 August 2023, 17:23:25 UTC | 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 | François Dupressoir | 07 August 2023, 16:24:22 UTC | pin alt-ergo, z3 | 12 August 2023, 08:57:48 UTC |
705bafe | François Dupressoir | 07 August 2023, 16:20:33 UTC | refactor nix to avoid repetition | 12 August 2023, 08:57:48 UTC |
95cabb9 | François Dupressoir | 04 August 2023, 10:31:26 UTC | 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 | François Dupressoir | 04 August 2023, 10:30:36 UTC | [chore] whitespace | 07 August 2023, 17:56:12 UTC |
a72dada | Yi Lee | 01 August 2023, 03:48:35 UTC | Propagate subtype changes to Word | 02 August 2023, 00:47:04 UTC |
917bba2 | Pierre Boutry | 20 July 2023, 13:30:54 UTC | Ring/field tactics available as soon as an instance is found. | 20 July 2023, 13:49:02 UTC |
e75a7cf | Oskar Goldhahn | 12 July 2023, 22:38:59 UTC | get rid of unbounded smt calls outside examples | 20 July 2023, 13:22:13 UTC |
1bb2e2d | mm | 19 July 2023, 07:20:20 UTC | 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 | Pierre-Yves Strub | 13 July 2023, 11:06:46 UTC | Fix wording of error messages "function" -> "procedure" fix #417 | 13 July 2023, 11:07:33 UTC |
add9232 | Christian Doczkal | 30 June 2023, 09:48:34 UTC | [chore] fix more raw smt calls | 11 July 2023, 20:01:13 UTC |
0c60516 | Christian Doczkal | 29 June 2023, 12:13:30 UTC | [chore] fix raw smt calls (theories/distributions) | 11 July 2023, 20:01:13 UTC |
757ec09 | François Dupressoir | 26 June 2023, 13:52:42 UTC | [chore] remove more raw smt calls | 29 June 2023, 13:20:43 UTC |
85d03a2 | Christian Doczkal | 29 June 2023, 11:18:26 UTC | [chore] fix some warnings and flaky smt calls (#408) | 29 June 2023, 11:18:26 UTC |
cddd7d9 | Christian Doczkal | 28 June 2023, 14:58:53 UTC | [theories] define product using allpairs (#411) | 28 June 2023, 14:58:53 UTC |
60c3179 | Romain Tetley | 28 June 2023, 12:25:32 UTC | Renaming the easycrypt lib (making it easyier for external imports) (#410) | 28 June 2023, 12:25:32 UTC |
73ac095 | Pierre-Yves Strub | 27 June 2023, 06:47:59 UTC | proc op: add support for the "local" modifier | 27 June 2023, 13:55:48 UTC |
3693e61 | Christian Doczkal | 22 June 2023, 13:18:15 UTC | [theories] additional elimination rules for finite sums (#401) | 22 June 2023, 13:18:15 UTC |
c0eeee4 | Pierre-Yves Strub | 21 June 2023, 10:19:54 UTC | Refactor out Fermat's little theorem from ZModP to IntDiv | 21 June 2023, 10:34:00 UTC |
4965377 | Yi Lee | 21 June 2023, 01:49:39 UTC | Prove Fermat's little theorem | 21 June 2023, 10:34:00 UTC |
e38fac3 | Cameron Low | 13 June 2023, 20:55:00 UTC | Keep f_let_simp | 16 June 2023, 10:40:43 UTC |
d1858f6 | Alley Stoughton | 05 June 2023, 14:42:45 UTC | 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 | Benjamin Gregoire | 26 October 2022, 18:18:55 UTC | 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 | Romain Tetley | 15 June 2023, 14:57:04 UTC | 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 | Romain Tetley | 15 June 2023, 14:19:31 UTC | 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 | Yi Lee | 10 June 2023, 12:55:36 UTC | 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 | François Dupressoir | 27 March 2023, 08:59:03 UTC | restore name | 13 June 2023, 07:53:12 UTC |
a4a0332 | François Dupressoir | 24 March 2022, 15:55:56 UTC | Tighten the ROM bad call results | 13 June 2023, 07:53:12 UTC |
d481338 | François Dupressoir | 05 June 2023, 14:21:42 UTC | [lib] FSet: fcard_eq1 Co-authored-by: Christian Doczkal <christian.doczkal@mpi-sp.org> | 13 June 2023, 07:30:41 UTC |
c73033b | François Dupressoir | 05 June 2023, 21:54:01 UTC | [lib] List: remove all raw smt calls | 13 June 2023, 07:14:59 UTC |
ab21d3a | Pierre-Yves Strub | 12 June 2023, 11:53:09 UTC | New rewrite-pr lemma: Pr[muE] Transform a Pr[...] statement into its pointwise summation. | 12 June 2023, 12:22:39 UTC |
16747c7 | François Dupressoir | 04 May 2023, 10:24:24 UTC | properly fail early if one SMT returns `Invalid` This was seemingly intended, but racy | 10 June 2023, 22:35:56 UTC |
cf55a7c | François Dupressoir | 04 May 2023, 10:22:26 UTC | warn on `Invalid` SMT results | 10 June 2023, 22:35:56 UTC |
eaba09c | Christian Doczkal | 24 February 2023, 16:42:30 UTC | [theories]: p_max (maximum probability for atomic events) Co-authored-by: Ethan Lee <ylee1228@umd.edu> | 05 June 2023, 14:39:42 UTC |
4650947 | Cameron Low | 19 May 2023, 10:58:37 UTC | Removed Smart constructors for types, expressions, formulae, paths, and statements. | 05 June 2023, 06:53:24 UTC |
dc50f44 | Pierre-Yves Strub | 26 May 2023, 09:54:58 UTC | Forbid the usage of [declare] for concrete modules. Fix #328 | 26 May 2023, 12:06:42 UTC |
8f15fcb | Pierre-Yves Strub | 25 May 2023, 14:14:03 UTC | Fix datatype comparisons for theory replays We do not need to check the inductive schemas: - if the constructors are compatible, so are the schemas, - anyway, they are going to be checked right after, and - at that point, they are not convertible because they come from incomaptible enclosing theories. Fix #381 | 25 May 2023, 14:30:11 UTC |
926927a | Pierre-Yves Strub | 25 May 2023, 14:06:49 UTC | Accept non-printed variable only abbreviations. fix #382 | 25 May 2023, 14:23:31 UTC |
242e996 | Pierre-Yves Strub | 25 May 2023, 13:58:07 UTC | New command: proc op. This command generates an operator that computes the output distribution of a stateless proc. The command is in beta-mode. It misses: - a support for a larger set of instructions, - better error messages, - a registry of generated proc ops, and - a hoare/phoare statement that links the operator to the procedure. | 25 May 2023, 14:16:01 UTC |
cf79f50 | Christian Doczkal | 26 April 2023, 13:15:46 UTC | [theories] FunRO: RO for FinType using dfun for init | 23 May 2023, 10:49:03 UTC |
860dc3f | Christian Doczkal | 16 May 2023, 10:13:08 UTC | use polymorpic wrapper to enable theory cloning | 17 May 2023, 04:25:30 UTC |
d77676c | Christian Doczkal | 15 May 2023, 15:27:15 UTC | clean up SubType theory | 17 May 2023, 04:25:30 UTC |
a672c38 | Dominique Unruh | 14 May 2023, 15:50:01 UTC | Updated examples to match new Subtype. | 17 May 2023, 04:25:30 UTC |
957afc7 | Dominique Unruh | 14 May 2023, 15:20:56 UTC | New Subtype theory. Updated stdlib to match. | 17 May 2023, 04:25:30 UTC |
ee26cc5 | Alley Stoughton | 15 May 2023, 19:51:42 UTC | Commit b2106aa suppressed additional parentheses around match ... end in all circumstances, even though on the left and right of applications the parser requires parentheses, the theory being this makes it easier for humans to scan. So this commit inserts parentheses around matches in applications, but not elsewhere (e.g., not in infix operators). See below for examples. [The pretty printer needs a major redesign, so this is another stopgap measure.] require import AllCore List. type t = [ A of int | B of bool]. (* the following formulas now parse and pretty-print the same *) lemma foo1 (f : int -> bool) : f (match A 3 with | A a => a | B b => if b then 1 else 2 end). proof. abort. lemma foo2 : (match A 3 with | A a => fun _ => a | B b => fun _ => 2 end) 3 = 4. proof. abort. lemma foo3 (f : (int -> int) -> (int -> int)) : f (match A 3 with | A a => fun _ => a | B b => fun _ => 2 end) 3 = 4. proof. abort. lemma foo4 (f : int -> bool) : f (1 + match A 3 with | A a => a | B b => if b then 1 else 2 end). proof. abort. lemma foo5 (f : int -> bool) : f (match A 3 with | A a => a | B b => if b then 1 else 2 end + 1). proof. abort. lemma foo6 (f : int -> bool) : f (3 + match A 3 with | A a => a | B b => if b then 1 else 2 end + 1). proof. abort. | 16 May 2023, 07:04:10 UTC |
94538c5 | François Dupressoir | 16 March 2023, 19:08:33 UTC | [ci] update actions to avoid node deprecation | 02 May 2023, 09:38:51 UTC |
bde8af8 | Cameron Low | 28 March 2023, 16:09:16 UTC | Track the argument variables as well. Also update ROM proof. | 02 May 2023, 09:38:19 UTC |
f626259 | Cameron Low | 21 March 2023, 14:35:30 UTC | [tactic] Rewrite Equiv | 24 March 2023, 13:44:07 UTC |
b2106aa | Alley Stoughton | 08 March 2023, 00:26:51 UTC | An attempt at fixing pretty printing bugs in which formulas that end with implications, conditionals or quantifiers and appear to the left of binary operators have their scopes extended to include those following binary operators. E.g., (3 :: 4 :: let x = 1 in [x]) = ys. incorrectly pretty prints as 3 :: 4 :: let x = 1 in [x] = ys | 21 March 2023, 10:59:33 UTC |
ee4c20e | François Dupressoir | 16 March 2023, 20:56:12 UTC | [chore] update dependency versions in README | 20 March 2023, 16:28:35 UTC |
ed96ecf | François Dupressoir | 16 March 2023, 16:21:06 UTC | fix a failing proof in MEE-CBC this aligns the top-level proof with earlier changes to a leaf theory | 20 March 2023, 16:28:35 UTC |
ad96b3d | Pierre-Yves Strub | 16 March 2023, 15:39:37 UTC | simplify some smt calls | 20 March 2023, 16:28:35 UTC |
7a00b11 | François Dupressoir | 16 March 2023, 15:21:40 UTC | Remove raw smt in MEE-CBC | 20 March 2023, 16:28:35 UTC |
472a2d4 | François Dupressoir | 14 March 2023, 14:34:41 UTC | bump Why3 version in .nix files | 20 March 2023, 16:28:35 UTC |
9f46b97 | Pierre-Yves Strub | 10 March 2023, 18:18:12 UTC | Bump Why3 supported version (1.5 -> 1.6) This makes EC compatible with OCaml 5. Close #350 | 20 March 2023, 16:28:35 UTC |
1365cea | François Dupressoir | 16 March 2023, 16:34:50 UTC | drop unused and obsolete theory files | 17 March 2023, 13:57:32 UTC |
189283a | Pierre-Yves Strub | 15 March 2023, 06:59:34 UTC | Move to github docker repository | 15 March 2023, 07:41:31 UTC |
bc97ee6 | Manuel Barbosa | 08 March 2023, 17:44:34 UTC | Extend definition of PKE to ROM from Kyber spec | 14 March 2023, 14:39:11 UTC |
c7500bd | Francois Dupressoir | 14 March 2023, 14:26:40 UTC | [nix] pin the Why3 version (#353) * [nix] pin the Why3 version This makes it easier to bump versions and rely on CI even if out of sync with nixpkgs PRs. | 14 March 2023, 14:26:40 UTC |
ad13f30 | Christian Doczkal | 21 February 2023, 16:17:11 UTC | [theories]: add various individual lemmas | 21 February 2023, 16:33:42 UTC |
a347ecb | Christian Doczkal | 21 February 2023, 14:32:59 UTC | [theories]: port "lock" from MathComp | 21 February 2023, 14:47:31 UTC |
5072789 | Christian Doczkal | 21 February 2023, 13:17:16 UTC | [theories]: finite expectation (Jensen_fin_concave) | 21 February 2023, 14:16:50 UTC |
1ccf46b | Christian Doczkal | 20 February 2023, 16:56:15 UTC | [theories]: lemmas for dcond and dbiased | 21 February 2023, 11:29:39 UTC |
cc31629 | François Dupressoir | 22 July 2022, 14:34:38 UTC | [ci]: workflow to compile with nix | 17 February 2023, 12:12:25 UTC |
d401307 | François Dupressoir | 19 July 2022, 16:24:35 UTC | [nix]: shell.nix + default.nix | 17 February 2023, 12:12:25 UTC |
ae4a816 | Pierre-Yves Strub | 16 February 2023, 14:10:41 UTC | default.nix: option to install provers + install Python3 deps | 16 February 2023, 15:21:56 UTC |
a9f3453 | Christian Doczkal | 16 February 2023, 09:14:19 UTC | mention dune3/alt-ergo-2.4.2 issue | 16 February 2023, 09:19:39 UTC |
d47a0cd | Pierre-Yves Strub | 16 February 2023, 08:11:31 UTC | kill dead code | 16 February 2023, 08:11:31 UTC |
8eca6c7 | Pierre-Yves Strub | 16 February 2023, 07:59:20 UTC | default.nix: update dependencies | 16 February 2023, 07:59:20 UTC |
294e2a6 | Pierre-Yves Strub | 15 February 2023, 12:11:06 UTC | [dune]: auto-generate the list of EC files to be installed This requires dune >= 3.6 | 15 February 2023, 12:11:09 UTC |
efab580 | oskgo | 14 February 2023, 14:59:30 UTC | matrix library with support for arbitrary dynamic size (#267) | 14 February 2023, 15:25:42 UTC |
6f695ba | Pierre-Yves Strub | 08 February 2023, 16:47:48 UTC | Fix encoding of Why3 fixpoint containing higher-order calls to itself Fix #334 | 14 February 2023, 10:12:50 UTC |
94ccd48 | Pierre-Yves Strub | 10 February 2023, 10:42:21 UTC | Implement a naive termination checker Termination is done via a simple subterm check on the last inductive argument. Ref #62, #144 | 14 February 2023, 10:12:41 UTC |
a4e43d1 | Benjamin Gregoire | 31 January 2023, 11:38:24 UTC | remove admitted proof in DJoin | 14 February 2023, 10:10:22 UTC |
88928de | Pierre-Yves Strub | 23 January 2023, 10:23:53 UTC | [theories]: ring with generic (choice based) inverse | 13 February 2023, 15:20:47 UTC |
2803f66 | Yi Lee | 24 January 2023, 10:18:25 UTC | Attempt to implement `RingQuotientDflInv` | 13 February 2023, 15:06:56 UTC |
6890aca | Benjamin Gregoire | 04 February 2023, 10:56:31 UTC | fix small bug in reduction of projection | 04 February 2023, 10:59:08 UTC |
472c8db | Alley Stoughton | 30 January 2023, 19:45:47 UTC | Added cancellation variant for ofword that uses mkseq to Word.eca, and added lemmas about the integer values of onew and zerow to BitWord.eca. | 31 January 2023, 13:42:57 UTC |
701f4f0 | Cameron Low | 20 January 2023, 18:18:02 UTC | Unify created variables correctly. | 23 January 2023, 15:43:55 UTC |
2f98c08 | Pierre-Yves Strub | 19 January 2023, 08:42:37 UTC | [tactic]: add the ability to create a memory from thin air. The syntax is `pose &m`. Close #320 | 20 January 2023, 09:28:31 UTC |
7f08941 | Cameron Low | 19 January 2023, 18:14:06 UTC | [tactic]: added hoare variant for `match` Here is an example of use: ``` require import AllCore. type t = [ A of int | B of bool | C ]. module M = { proc f(x : t) : int = { var y : int <- 0; match x with | A v => y <- `|v|; | B _ => y <- 1; | C => y <- 2; end; return y; } }. lemma L : hoare[M.f : true ==> 0 <= res]. proof. by proc; sp; match => [v|b|]; auto=> /> /#. qed. ``` | 19 January 2023, 21:44:41 UTC |
ba37062 | Pierre-Yves Strub | 05 January 2023, 13:05:38 UTC | runtest: ECRJOBS env. variable | 05 January 2023, 13:05:38 UTC |
e034e6c | Pierre-Yves Strub | 05 January 2023, 09:29:25 UTC | [internal]: fix detection of empty expression-level substitutions. | 05 January 2023, 09:50:08 UTC |
b1fe56d | Pierre-Yves Strub | 04 January 2023, 14:01:27 UTC | remove unused dependency (cmdliner) | 04 January 2023, 14:01:27 UTC |
c7ceb4f | Pierre-Yves Strub | 04 January 2023, 14:01:09 UTC | [runtest]: better display of multi-line error messages | 04 January 2023, 14:01:09 UTC |
ff6a4bb | Pierre-Yves Strub | 04 January 2023, 13:04:49 UTC | [runtest]: append scenarios to the CLI | 04 January 2023, 13:06:36 UTC |
36e617d | Pierre-Yves Strub | 07 October 2022, 11:31:14 UTC | [CLI]: ec-runtest is now accessible via a CLI subcommand - the subcommand is named `runtest` - the real script is now in `<libexec>/easycrypt/commands/` | 04 January 2023, 12:46:39 UTC |
796cc2d | Benjamin Gregoire | 14 December 2022, 09:37:13 UTC | [tactic]: fix t_solve performance issues | 14 December 2022, 09:49:19 UTC |
f180466 | Oskar Goldhahn | 15 March 2022, 16:24:16 UTC | operator to get maximal element in list use predicates formatting and replacing abstract theory with section disambiguate max operator patch smt failure | 14 December 2022, 09:48:07 UTC |
9656af6 | Pierre Boutry | 02 September 2022, 14:10:17 UTC | Remove dependency to oldlibs for Group | 14 December 2022, 09:46:38 UTC |
d1dc434 | Benjamin Gregoire | 09 December 2022, 14:10:57 UTC | Various bug fixes for clones (modules & lemmas) fix #292 | 14 December 2022, 09:23:39 UTC |
ee7c5ff | François Dupressoir | 21 March 2022, 16:15:38 UTC | force delta on convertibility checks Closes #154 | 24 November 2022, 16:39:53 UTC |