From 821560ac1858f28a7cbf08cdf36897906406dd34 Mon Sep 17 00:00:00 2001 From: Oskar Goldhahn Date: Fri, 7 Feb 2025 10:59:56 +0000 Subject: [PATCH] MVP --- tactics.md | 112 +------------------------------------ tactics/ambient/ambient.md | 1 + tactics/ambient/idtac.md | 5 ++ tactics/tactics.md | 95 +++++++++++++++++++++++++++++++ 4 files changed, 102 insertions(+), 111 deletions(-) create mode 100644 tactics/ambient/ambient.md create mode 100644 tactics/ambient/idtac.md create mode 100644 tactics/tactics.md diff --git a/tactics.md b/tactics.md index 278d49d..7cf8d2d 100644 --- a/tactics.md +++ b/tactics.md @@ -7,114 +7,4 @@ header-includes: | crossorigin="anonymous"> --- -## `proc` - -### Hoare version - -~~~ecblock -filename: units/proc-hoare.ec -~~~ - -## `wp` - -### Hoare version - -~~~ecblock -filename: units/wp-hoare.ec -~~~ - -## `while` - -### Hoare version - -~~~ecblock -filename: units/while-hoare.ec -~~~ - -### PHoare version - -~~~ecblock -filename: units/while-phoare.ec -~~~ - -## Others - - - `proc` - - `proc ` - - `proc ` - - `proc '*'` - - `wp ` - - `sp ` - - `skip` - - `while [side] ` - - `async while ` - - `call [side] ` - - `call '/' ` - - `rcondt [side] ` - - `rcondf [side] ` - - `seq [side] ':' ` - - `match [ident] [side] ` - - `if ` - - `match [side] [=]` - - `swap ` - - `interleave ` - - `cfold [side] ! ` - - `cfold [side] ` - - `rnd [side] [: semrndpos]` - - `rndsem ['*'] [side] ` - - `inline [side] [inlineopt] [occurences]` - - `inline [side] [inlineopt] [occurences] [inlinepat...]` - - `inline [side] [inlineopt] ` - - `outline '[' ['-' ] ']' ` - - `kill [side] ` - - `kill [side] '!' ` - - `kill [side] '*' ` - - `case '<-' [side] ` - - `alias [side] ` - - `alias [side] with ` - - `alias [side] '=' ` - - `weakmem [side] ` - - `fission [side] '@' ',' ` - - `fission [side] '!' '@' ',' ` - - `fusion [side] '@' ',' ` - - `fusion [side] '!' '@' ',' ` - - `unroll ['for'] [side] ` - - `splitwhile [side] ':' ` - - `byphoare [gpterm(conseq)]` - - `byehoare [gpterm(conseq)]` - - `byequiv ['[' byequivopt ']'] [gpterm(conseq)]` - - `byequiv ['[' byequivopt ']'] [gpterm(conseq)] ':' ` - - `byupto` - - `conseq '/' ` - - `conseq [cqoption]` - - `conseq [cqoption] ` - - `conseq [cqoption] ['_']` - - `conseq [cqoption] '_' ` - - `conseq [cqoption] ` - - `conseq [cqoption] '_' ['_']` - - `conseq [cqoption] '_' '_' ` - - `conseq ` - - `elim '*'` - - `exists '*' ` - - `exlim ` - - `ecall [side] '(' [tvars_app] ')'` - - `exfalso` - - `bypr` - - `bypr ` - - `fel [sformula]` - - `sim [crushmode] ` - - `replace ` - - `replace '*' ` - - `transitivity ` - - `transitivity '*' ` - - `rewrite equiv '[' [rweq_proc] ']'` - - `symmetry` - - `eager ` - - `hoare` - - `pr_bounded` - - `phoare split ` - - `phoare equiv ` - - `auto` - - `lossless` - - `proc change [side] ':' ` - - `proc rewrite [side] ` +[Link to ad hoc documentation using markdown on github while we figure out which static website generator to use](https://www.github.com/EasyCrypt/ec-tactics/blob/tactics/tactics.md) diff --git a/tactics/ambient/ambient.md b/tactics/ambient/ambient.md new file mode 100644 index 0000000..ec8a9e6 --- /dev/null +++ b/tactics/ambient/ambient.md @@ -0,0 +1 @@ +[`idtac`](idtac.md) \ No newline at end of file diff --git a/tactics/ambient/idtac.md b/tactics/ambient/idtac.md new file mode 100644 index 0000000..e6fa393 --- /dev/null +++ b/tactics/ambient/idtac.md @@ -0,0 +1,5 @@ +# Syntax +`idtac` + +# Overview +Does nothing. Useful when syntax demands a tactic, but you don't want it to do anything. \ No newline at end of file diff --git a/tactics/tactics.md b/tactics/tactics.md new file mode 100644 index 0000000..8763005 --- /dev/null +++ b/tactics/tactics.md @@ -0,0 +1,95 @@ +--- +title: 'EasyCrypt tactics' +header-includes: | + + +--- + +# Ambient Logic +[Tactics](ambient/ambient.md) + +# Undocumented program (not ambient) logic tactics + +To be documented + + - `proc` + - `proc ` + - `proc ` + - `proc '*'` + - `wp ` + - `sp ` + - `skip` + - `while [side] ` + - `async while ` + - `call [side] ` + - `call '/' ` + - `rcondt [side] ` + - `rcondf [side] ` + - `seq [side] ':' ` + - `match [ident] [side] ` + - `if ` + - `match [side] [=]` + - `swap ` + - `interleave ` + - `cfold [side] ! ` + - `cfold [side] ` + - `rnd [side] [: semrndpos]` + - `rndsem ['*'] [side] ` + - `inline [side] [inlineopt] [occurences]` + - `inline [side] [inlineopt] [occurences] [inlinepat...]` + - `inline [side] [inlineopt] ` + - `outline '[' ['-' ] ']' ` + - `kill [side] ` + - `kill [side] '!' ` + - `kill [side] '*' ` + - `case '<-' [side] ` + - `alias [side] ` + - `alias [side] with ` + - `alias [side] '=' ` + - `weakmem [side] ` + - `fission [side] '@' ',' ` + - `fission [side] '!' '@' ',' ` + - `fusion [side] '@' ',' ` + - `fusion [side] '!' '@' ',' ` + - `unroll ['for'] [side] ` + - `splitwhile [side] ':' ` + - `byphoare [gpterm(conseq)]` + - `byehoare [gpterm(conseq)]` + - `byequiv ['[' byequivopt ']'] [gpterm(conseq)]` + - `byequiv ['[' byequivopt ']'] [gpterm(conseq)] ':' ` + - `byupto` + - `conseq '/' ` + - `conseq [cqoption]` + - `conseq [cqoption] ` + - `conseq [cqoption] ['_']` + - `conseq [cqoption] '_' ` + - `conseq [cqoption] ` + - `conseq [cqoption] '_' ['_']` + - `conseq [cqoption] '_' '_' ` + - `conseq ` + - `elim '*'` + - `exists '*' ` + - `exlim ` + - `ecall [side] '(' [tvars_app] ')'` + - `exfalso` + - `bypr` + - `bypr ` + - `fel [sformula]` + - `sim [crushmode] ` + - `replace ` + - `replace '*' ` + - `transitivity ` + - `transitivity '*' ` + - `rewrite equiv '[' [rweq_proc] ']'` + - `symmetry` + - `eager ` + - `hoare` + - `pr_bounded` + - `phoare split ` + - `phoare equiv ` + - `auto` + - `lossless` + - `proc change [side] ':' ` + - `proc rewrite [side] `