From db471f821721028328b323eab0329e6f006a1fd6 Mon Sep 17 00:00:00 2001 From: Thomas Pani Date: Fri, 23 Aug 2024 16:11:20 +0200 Subject: [PATCH 01/15] Flush SMT log before (check-sat) --- .../at/forsyte/apalache/tla/bmcmt/smt/Z3SolverContext.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/smt/Z3SolverContext.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/smt/Z3SolverContext.scala index 883ec6bc89..5019b7cac4 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/smt/Z3SolverContext.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/smt/Z3SolverContext.scala @@ -486,6 +486,7 @@ class Z3SolverContext(val config: SolverConfig) extends SolverContext with LazyL override def sat(): Boolean = { log("(check-sat)") + flushLogs() // good time to flush val status = z3solver.check() log(s";; sat = ${status.name()}") flushLogs() // good time to flush @@ -513,11 +514,12 @@ class Z3SolverContext(val config: SolverConfig) extends SolverContext with LazyL // temporarily, change the timeout setTimeout(timeoutSec * 1000) log("(check-sat)") + flushLogs() // good time to flush val status = z3solver.check() log(s";; sat = ${status.name()}") + flushLogs() // good time to flush // return timeout to maximum setTimeout(Int.MaxValue) - flushLogs() // good time to flush status match { case Status.SATISFIABLE => Some(true) case Status.UNSATISFIABLE => Some(false) From 3c5f240d53e88ba04ff8b0647b058f4d4986f4ae Mon Sep 17 00:00:00 2001 From: Thomas Pani Date: Fri, 23 Aug 2024 16:12:09 +0200 Subject: [PATCH 02/15] Flush SMT profiling info before (check-sat) --- .../at/forsyte/apalache/tla/bmcmt/SymbStateRewriterImpl.scala | 1 + .../forsyte/apalache/tla/bmcmt/trex/TransitionExecutorImpl.scala | 1 + 2 files changed, 2 insertions(+) diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/SymbStateRewriterImpl.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/SymbStateRewriterImpl.scala index 11539bc03b..3de414aaf6 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/SymbStateRewriterImpl.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/SymbStateRewriterImpl.scala @@ -563,6 +563,7 @@ class SymbStateRewriterImpl( } override def flushStatistics(): Unit = { + profilerListener.foreach { _.dumpToFile() } statListener.locator.writeStats() } diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/trex/TransitionExecutorImpl.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/trex/TransitionExecutorImpl.scala index 17f23c3a44..3fd7755c52 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/trex/TransitionExecutorImpl.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/trex/TransitionExecutorImpl.scala @@ -318,6 +318,7 @@ class TransitionExecutorImpl[ExecCtxT](consts: Set[String], vars: Set[String], c * timed out or reported *unknown*. */ override def sat(timeoutSec: Int): Option[Boolean] = { + ctx.rewriter.flushStatistics() ctx.rewriter.solverContext.satOrTimeout(timeoutSec) } From ecec7259b02e81657c9ca8e686bf071c6fc71f3a Mon Sep 17 00:00:00 2001 From: Thomas Pani Date: Fri, 23 Aug 2024 16:14:42 +0200 Subject: [PATCH 03/15] Update changelog --- .unreleased/bug-fixes/2962-fix-trunc-smt-log | 1 + 1 file changed, 1 insertion(+) create mode 100644 .unreleased/bug-fixes/2962-fix-trunc-smt-log diff --git a/.unreleased/bug-fixes/2962-fix-trunc-smt-log b/.unreleased/bug-fixes/2962-fix-trunc-smt-log new file mode 100644 index 0000000000..7f0cf369a9 --- /dev/null +++ b/.unreleased/bug-fixes/2962-fix-trunc-smt-log @@ -0,0 +1 @@ +Fix truncation of SMT logs, see #2962 From afd4e4ed8f3daa199691787866fc0727cb3a691e Mon Sep 17 00:00:00 2001 From: Thomas Pani Date: Fri, 23 Aug 2024 20:23:43 +0200 Subject: [PATCH 04/15] Fix link (#2961) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a1a0daa20e..a238a32b39 100644 --- a/README.md +++ b/README.md @@ -156,7 +156,7 @@ Past funding from [Der Wiener Wissenschafts-, Forschungs- und Technologiefonds]( [apalache benchmarks]: https://github.com/apalache-mc/apalache-tests [checking inductive invariants]: https://github.com/apalache-mc/apalache-tests/blob/master/results/001indinv-report.md [bounded model checking]: https://github.com/apalache-mc/apalache-tests/blob/master/results/002bmc-report.md -[user-manual]: http://apalache-mc.org/apalache/docs/index.html +[user-manual]: http://apalache-mc.org/docs/index.html [user-manual-docker]: https://apalache-mc.org/docs/apalache/installation/docker.html [user-manual-installation]: https://apalache-mc.org/docs/apalache/installation/index.html [language-manual]: https://apalache-mc.org/docs/lang/index.html From bbfcc7991f16f0af7263df989fdddbf675b98121 Mon Sep 17 00:00:00 2001 From: Igor Konnov Date: Fri, 23 Aug 2024 21:06:23 +0200 Subject: [PATCH 05/15] fix links globally --- CHANGES.md | 4 ++-- CONTRIBUTING.md | 2 +- docs/README.md | 2 +- docs/src/adr/002adr-types.md | 4 ++-- docs/src/adr/003adr-trex.md | 2 +- docs/src/adr/004adr-annotations.md | 2 +- docs/src/adr/005adr-json.md | 4 ++-- docs/src/adr/011adr-smt-arrays.md | 4 ++-- docs/src/adr/014adr-precise-records.md | 4 ++-- docs/src/adr/015adr-trace.md | 4 ++-- docs/src/adr/023adr-trace-evaluation.md | 2 +- docs/src/apalache/features.md | 10 +++++----- docs/src/apalache/principles/apalache-mod.md | 2 +- docs/src/apalache/principles/assignments.md | 2 +- docs/src/apalache/running.md | 4 ++-- docs/src/lang/user/top-level-operators.md | 2 +- docs/src/tutorials/entry-tutorial.md | 2 +- docs/src/tutorials/pluscal-tutorial.md | 2 +- .../at/forsyte/apalache/infra/ExceptionAdapter.scala | 2 +- .../forsyte/apalache/infra/tlc/TlcConfigParser.scala | 2 +- .../src/main/scala/at/forsyte/apalache/tla/Tool.scala | 2 +- .../forsyte/apalache/tla/tooling/opt/ConfigCmd.scala | 2 +- test/tla/Antipatterns.tla | 2 +- test/tla/MC_ERC20.tla | 2 +- test/tla/cli-integration-tests.md | 10 +++++----- .../SmtFreeSymbolicTransitionExtractor.scala | 2 +- .../tla/bmcmt/config/CheckerExceptionAdapter.scala | 2 +- .../apalache/tla/bmcmt/rules/IntDotDotRule.scala | 2 +- .../forsyte/apalache/tla/bmcmt/rules/SubstRule.scala | 2 +- .../apalache/tla/bmcmt/rules/aux/CherryPick.scala | 2 +- .../stratifiedRules/base/SubstStratifiedRule.scala | 2 +- .../io/annotations/parser/CommentPreprocessor.scala | 2 +- .../scala/at/forsyte/apalache/io/json/TlaToJson.scala | 2 +- .../apalache/io/lir/ItfCounterexampleWriter.scala | 2 +- .../apalache/io/lir/TestCounterexampleWriter.scala | 6 +++--- .../apalache/io/lir/TestItfCounterexampleWriter.scala | 4 ++-- .../forsyte/apalache/tla/typecheck/etc/ToEtcExpr.scala | 2 +- .../scala/at/forsyte/apalache/tla/lir/Feature.scala | 2 +- .../transformations/standard/KeraLanguagePred.scala | 2 +- .../standard/KeramelizerInputLanguagePred.scala | 2 +- 40 files changed, 58 insertions(+), 58 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index c4b2efee68..93824cd5ca 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -317,7 +317,7 @@ ### Breaking changes - Invalid configuration keys found in configuration sources (e.g., `apalache.cfg` files) will now produce a configuration error on load (see #2125). -- The structure of the apalache.cfg has changed. All configuration keys that were previously supported have been moved under the `common` key. You can update your config files by prefixing each key from the previous versions with `commong.key-name`. For an example config file, see https://apalache.informal.systems/docs/apalache/config.html#file-format-and-supported-parameters. See #2065. +- The structure of the apalache.cfg has changed. All configuration keys that were previously supported have been moved under the `common` key. You can update your config files by prefixing each key from the previous versions with `commong.key-name`. For an example config file, see https://apalache-mc.org/docs/apalache/config.html#file-format-and-supported-parameters. See #2065. - Introduce --features=no-rows for the old record syntax and switch to `--features=rows` by default ### Features @@ -737,7 +737,7 @@ ### Documentation * Restructure and update the Apalache manual: - https://apalache.informal.systems/docs/index.html + https://apalache-mc.org/docs/index.html ## 0.17.5 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b5c9408177..82992bbb84 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -149,7 +149,7 @@ contributors and maintainers to make sure: ## Dependencies For setting up the local build, see the [instructions on building from -source](https://apalache.informal.systems/docs/apalache/installation/source.html). +source](https://apalache-mc.org/docs/apalache/installation/source.html). ### Environment diff --git a/docs/README.md b/docs/README.md index 7492cec320..0c69f8728f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -3,7 +3,7 @@ The Apalache documentation is written in markdown files in the [./src](./src) directory and compiled using [mdbook](https://github.com/rust-lang/mdBook). -To view the documentation, visit https://apalache.informal.systems/docs/. +To view the documentation, visit https://apalache-mc.org/docs/. ## Building and previewing the documentation diff --git a/docs/src/adr/002adr-types.md b/docs/src/adr/002adr-types.md index 9f152a7b67..49686524c1 100644 --- a/docs/src/adr/002adr-types.md +++ b/docs/src/adr/002adr-types.md @@ -598,8 +598,8 @@ AtMostOne == ============================================================================= ``` -[Snowcat tutorial]: https://apalache.informal.systems/docs/tutorials/snowcat-tutorial.html -[Snowcat HOWTO]: https://apalache.informal.systems/docs/HOWTOs/howto-write-type-annotations.html +[Snowcat tutorial]: https://apalache-mc.org/docs/tutorials/snowcat-tutorial.html +[Snowcat HOWTO]: https://apalache-mc.org/docs/HOWTOs/howto-write-type-annotations.html [ADR014]: https://github.com/informalsystems/apalache/blob/main/docs/src/adr/014adr-precise-records.md [Issue 401]: https://github.com/informalsystems/apalache/issues/401 [Row polymorphism]: https://en.wikipedia.org/wiki/Row_polymorphism diff --git a/docs/src/adr/003adr-trex.md b/docs/src/adr/003adr-trex.md index 13ff622770..527c72b38e 100644 --- a/docs/src/adr/003adr-trex.md +++ b/docs/src/adr/003adr-trex.md @@ -116,4 +116,4 @@ explain how the parallel checker is working. This is a subject to another ADR. To sum up, this layer is offering you a nice abstraction to write different model checking strategies. -[KerA+]: https://apalache.informal.systems/docs/apalache/kera.html +[KerA+]: https://apalache-mc.org/docs/apalache/kera.html diff --git a/docs/src/adr/004adr-annotations.md b/docs/src/adr/004adr-annotations.md index 0986b8a60c..5dd6af1057 100644 --- a/docs/src/adr/004adr-annotations.md +++ b/docs/src/adr/004adr-annotations.md @@ -158,7 +158,7 @@ This is done because the SANY parser is pruning the linefeed character `\n`, so it would be otherwise impossible to find the end of an annotation. -[ADR-002]: https://apalache.informal.systems/docs/adr/002adr-types.html +[ADR-002]: https://apalache-mc.org/docs/adr/002adr-types.html [JavaTokenParsers]: https://www.scala-lang.org/api/2.12.2/scala-parser-combinators/scala/util/parsing/combinator/JavaTokenParsers.html [Java identifier]: https://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.8 diff --git a/docs/src/adr/005adr-json.md b/docs/src/adr/005adr-json.md index 786dfd3b56..17157286b3 100644 --- a/docs/src/adr/005adr-json.md +++ b/docs/src/adr/005adr-json.md @@ -201,9 +201,9 @@ In general, for any given `oper: TlaOper` of `OperEx`, the value of the `oper` f The implementation of the serialization can be found in the class `at.forsyte.apalache.io.json.TlaToJson` of the module `tla-import`, see [TlaToJson][]. -[ADR-002]: https://apalache.informal.systems/docs/adr/002adr-types.html +[ADR-002]: https://apalache-mc.org/docs/adr/002adr-types.html -[ADR-004]: https://apalache.informal.systems/docs/adr/004adr-annotations.html +[ADR-004]: https://apalache-mc.org/docs/adr/004adr-annotations.html [TlaToJson]: https://github.com/informalsystems/apalache/blob/main/tla-io/src/main/scala/at/forsyte/apalache/io/json/TlaToJson.scala#L54 [TlaEx]: https://github.com/informalsystems/apalache/blob/main/tlair/src/main/scala/at/forsyte/apalache/tla/lir/TlaEx.scala#L10 diff --git a/docs/src/adr/011adr-smt-arrays.md b/docs/src/adr/011adr-smt-arrays.md index c5c4106bd6..6e8bd08f20 100644 --- a/docs/src/adr/011adr-smt-arrays.md +++ b/docs/src/adr/011adr-smt-arrays.md @@ -308,7 +308,7 @@ The following changes will be made to implement the new encoding of functions: The use of SMT arrays will be restricted to TLA+ sets and functions for the moment. The encoding of additional features using SMT arrays, or potentially ADTs, will be left for the future. -[KerA+]: https://apalache.informal.systems/docs/apalache/kera.html +[KerA+]: https://apalache-mc.org/docs/apalache/kera.html [core theory]: http://smtlib.cs.uiowa.edu/theories-Core.shtml [arrays with extensionality]: http://smtlib.cs.uiowa.edu/theories-ArraysEx.shtml [Z3]: https://github.com/Z3Prover/z3 @@ -316,6 +316,6 @@ additional features using SMT arrays, or potentially ADTs, will be left for the [Version 2.6]: https://smtlib.cs.uiowa.edu/papers/smt-lib-reference-v2.6-r2017-07-18.pdf [TLA+ Model Checking Made Symbolic]: https://dl.acm.org/doi/10.1145/3360549 [Symbolic Model Checking for TLA+ Made Faster]: https://doi.org/10.1007/978-3-031-30823-9_7 -[model checking parameters]: https://apalache.informal.systems/docs/apalache/running.html#model-checker-command-line-parameters +[model checking parameters]: https://apalache-mc.org/docs/apalache/running.html#model-checker-command-line-parameters [represented internally in Z3]: https://theory.stanford.edu/~nikolaj/programmingz3.html#sec-arrays [PR 2027]: https://github.com/informalsystems/apalache/pull/2027 diff --git a/docs/src/adr/014adr-precise-records.md b/docs/src/adr/014adr-precise-records.md index 31e32e9e95..0878fcf9fa 100644 --- a/docs/src/adr/014adr-precise-records.md +++ b/docs/src/adr/014adr-precise-records.md @@ -15,7 +15,7 @@ ## 1. Summary This ADR extends -[ADR-002](https://apalache.informal.systems/docs/adr/002adr-types.html) on +[ADR-002](https://apalache-mc.org/docs/adr/002adr-types.html) on types and type annotations. Virtually every user of Snowcat has faced the issue of record type checking @@ -665,7 +665,7 @@ default untyped implementation for the operators. -[ADR002]: https://apalache.informal.systems/docs/adr/002adr-types.html +[ADR002]: https://apalache-mc.org/docs/adr/002adr-types.html [#401]: https://github.com/informalsystems/apalache/issues/401 [#789]: https://github.com/informalsystems/apalache/discussions/789 [Raft]: https://github.com/ongardie/raft.tla/blob/master/raft.tla diff --git a/docs/src/adr/015adr-trace.md b/docs/src/adr/015adr-trace.md index a8831f65bf..498cc323fb 100644 --- a/docs/src/adr/015adr-trace.md +++ b/docs/src/adr/015adr-trace.md @@ -467,8 +467,8 @@ write a parser of custom ITF traces. Hence, we have decided to keep only the obj as the more general of the two representations. -[ADR005]: https://apalache.informal.systems/docs/adr/005adr-json.html -[ADR002]: https://apalache.informal.systems/docs/adr/002adr-types.html +[ADR005]: https://apalache-mc.org/docs/adr/005adr-json.html +[ADR002]: https://apalache-mc.org/docs/adr/002adr-types.html [MissionariesAndCannibalsTyped]: https://github.com/informalsystems/apalache/blob/main/test/tla/MissionariesAndCannibalsTyped.tla [JSON]: https://en.wikipedia.org/wiki/JSON [RFC7159]: https://datatracker.ietf.org/doc/html/rfc7159.html diff --git a/docs/src/adr/023adr-trace-evaluation.md b/docs/src/adr/023adr-trace-evaluation.md index 3ae4cbecb7..77fe1ce54d 100644 --- a/docs/src/adr/023adr-trace-evaluation.md +++ b/docs/src/adr/023adr-trace-evaluation.md @@ -137,7 +137,7 @@ and trace `testTrace.json` (length 5, `x=1 -> ... -> x=5`). { "name": "ApalacheIR", "version": "1.0", - "description": "https://apalache.informal.systems/docs/adr/005adr-json.html", + "description": "https://apalache-mc.org/docs/adr/005adr-json.html", "modules": [ { "kind": "TlaModule", diff --git a/docs/src/apalache/features.md b/docs/src/apalache/features.md index fc14b1b817..047fde2a0b 100644 --- a/docs/src/apalache/features.md +++ b/docs/src/apalache/features.md @@ -4,7 +4,7 @@ Here is the list of the TLA+ language features that are currently supported by A At the moment, Apalache is able to check state invariants, action invariants, temporal properties, trace invariants, as well as inductive invariants. (See the [page on -invariants](https://apalache.informal.systems/docs/apalache/principles/invariants.html) in +invariants](https://apalache-mc.org/docs/apalache/principles/invariants.html) in the manual.) To check liveness/temporal properties, we employ a [liveness-to-safety][] transformation. ## Language @@ -66,7 +66,7 @@ replaced with a constant. #### Records *Use [type -annotations](https://apalache.informal.systems/docs/tutorials/snowcat-tutorial.html) +annotations](https://apalache-mc.org/docs/tutorials/snowcat-tutorial.html) to help the model checker in finding the right types.* Note that our type system distinguishes records from general functions. @@ -81,14 +81,14 @@ system distinguishes records from general functions. #### Tuples *Use [type -annotations](https://apalache.informal.systems/docs/tutorials/snowcat-tutorial.html) +annotations](https://apalache-mc.org/docs/tutorials/snowcat-tutorial.html) to help the model checker in finding the right types.* Note that our type system distinguishes records from general functions. | Operator | Supported? | Milestone | Comment | |------------------------|:----------:|:---------:|------------------------------------------------------------------------------------------------------------------------------------------------| | `e[i]` | ✔ / ✖ | - | Provided that `i` is a constant expression | -| `<< e1, ..., e_n >>` | ✔ | - | Use a [type annotation](https://apalache.informal.systems/docs/tutorials/snowcat-tutorial.html) to distinguish between a tuple and a sequence. | +| `<< e1, ..., e_n >>` | ✔ | - | Use a [type annotation](https://apalache-mc.org/docs/tutorials/snowcat-tutorial.html) to distinguish between a tuple and a sequence. | | `S1 \X ... \X S_n` | ✔ | - | | | `[ t EXCEPT ![i] = e]` | ✔/✖ | - | Provided that `i` is a constant expression | @@ -158,7 +158,7 @@ For the moment, the model checker does not differentiate between integers and na | Operator | Supported? | Milestone | Comment | |----------------------------------------------------------|:----------:|:---------:|----------------------------------------------------------------------------------------------------------| -| `<<...>>` | ✔ | | Often needs a [type annotation](https://apalache.informal.systems/docs/tutorials/snowcat-tutorial.html). | +| `<<...>>` | ✔ | | Often needs a [type annotation](https://apalache-mc.org/docs/tutorials/snowcat-tutorial.html). | | `Head`, `Tail`, `Len``, `SubSeq`, `Append`, `\o`, `f[e]` | ✔ | - | | | `EXCEPT` | ✔ | | | | `SelectSeq` | ✔ | - | Not as efficient, as it could be, see [#1350](https://github.com/informalsystems/apalache/issues/1350). | diff --git a/docs/src/apalache/principles/apalache-mod.md b/docs/src/apalache/principles/apalache-mod.md index 2d35d6d7d2..4456ff566c 100644 --- a/docs/src/apalache/principles/apalache-mod.md +++ b/docs/src/apalache/principles/apalache-mod.md @@ -9,4 +9,4 @@ See the detailed description of the [Apalache operators][]. [Apalache.tla]: https://github.com/informalsystems/apalache/tree/main/src/tla/Apalache.tla -[Apalache operators]: https://apalache.informal.systems/docs/lang/apalache-operators.html +[Apalache operators]: https://apalache-mc.org/docs/lang/apalache-operators.html diff --git a/docs/src/apalache/principles/assignments.md b/docs/src/apalache/principles/assignments.md index efd5a49f37..7329dda90c 100644 --- a/docs/src/apalache/principles/assignments.md +++ b/docs/src/apalache/principles/assignments.md @@ -71,7 +71,7 @@ Apalache reports an error as follows: ... PASS #9: TransitionFinderPass To understand the error, [check the -manual](https://apalache.informal.systems/docs/apalache/principles/assignments.html): +manual](https://apalache-mc.org/docs/apalache/principles/assignments.html): Assignment error: No assignments found for: a It took me 0 days 0 hours 0 min 1 sec Total time: 1.88 sec diff --git a/docs/src/apalache/running.md b/docs/src/apalache/running.md index 8f9bf86999..9a64a9df66 100644 --- a/docs/src/apalache/running.md +++ b/docs/src/apalache/running.md @@ -22,7 +22,7 @@ The most important commands are as follows: the types of all expressions in the parsed specification. It terminates successfully if there are no type errors. - `simulate` performs all of the operations of `typecheck` and additionally runs the model checker in simulation mode, - which *randomly* picks a sequence of [actions](https://apalache.informal.systems/docs/apalache/assignments-in-depth.html#slices) + which *randomly* picks a sequence of [actions](https://apalache-mc.org/docs/apalache/assignments-in-depth.html#slices) and checks the invariants for the subset of all executions which only admit actions in the selected order. It terminates successfully if there are no invariant violations. This command usually checks randomized symbolic runs much faster than the `check` command. @@ -32,7 +32,7 @@ The most important commands are as follows: the length of which does not exceed the value specified by the `--length` parameter. It terminates successfully if there are no invariant violations. - - `test` performs all of the operations of `check` in a mode that is designed to [test a single action](https://apalache.informal.systems/docs/adr/006rfc-unit-testing.html#32-testing-actions). + - `test` performs all of the operations of `check` in a mode that is designed to [test a single action](https://apalache-mc.org/docs/adr/006rfc-unit-testing.html#32-testing-actions). ## 1. Model checker and simulator command-line parameters diff --git a/docs/src/lang/user/top-level-operators.md b/docs/src/lang/user/top-level-operators.md index c9b8649e65..837623c66e 100644 --- a/docs/src/lang/user/top-level-operators.md +++ b/docs/src/lang/user/top-level-operators.md @@ -225,5 +225,5 @@ expression to SMT. [Call by macro expansion]: https://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_macro_expansion [Alpha conversion]: https://en.wikipedia.org/wiki/Lambda_calculus#%CE%B1-conversion [Beta reduction]: https://en.wikipedia.org/wiki/Lambda_calculus#%CE%B2-reduction -[Apalache]: https://apalache.informal.systems +[Apalache]: https://apalache-mc.org diff --git a/docs/src/tutorials/entry-tutorial.md b/docs/src/tutorials/entry-tutorial.md index b33c9dae59..7e8c1a8560 100644 --- a/docs/src/tutorials/entry-tutorial.md +++ b/docs/src/tutorials/entry-tutorial.md @@ -386,7 +386,7 @@ If it is your first TLA+ specification, you may be surprised by this error: ... PASS #13: BoundedChecker This error may show up when CONSTANTS are not initialized. -Check the manual: https://apalache.informal.systems/docs/apalache/parameters.html +Check the manual: https://apalache-mc.org/docs/apalache/parameters.html Input error (see the manual): SubstRule: Variable INPUT_SEQ is not assigned a value ... ``` diff --git a/docs/src/tutorials/pluscal-tutorial.md b/docs/src/tutorials/pluscal-tutorial.md index 99f9746f37..967724cc3a 100644 --- a/docs/src/tutorials/pluscal-tutorial.md +++ b/docs/src/tutorials/pluscal-tutorial.md @@ -276,7 +276,7 @@ or drop us a message on [Zulip chat]. [Issue 1412]: https://github.com/informalsystems/apalache/issues/1412 [open an issue]: https://github.com/informalsystems/apalache/issues [Tutorial on Snowcat]: ./snowcat-tutorial.md -[Checking inductive invariants]: https://apalache.informal.systems/docs/apalache/running.html#checking-an-inductive-invariant +[Checking inductive invariants]: https://apalache-mc.org/docs/apalache/running.html#checking-an-inductive-invariant [TLA+ Cheatsheet in HTML]: https://mbt.informal.systems/docs/tla_basics_tutorials/tla+cheatsheet.html [Summary of TLA+]: https://lamport.azurewebsites.net/tla/summary-standalone.pdf [TLA+ Video Course]: http://lamport.azurewebsites.net/video/videos.html diff --git a/mod-infra/src/main/scala/at/forsyte/apalache/infra/ExceptionAdapter.scala b/mod-infra/src/main/scala/at/forsyte/apalache/infra/ExceptionAdapter.scala index af1cde0362..649d83b7b2 100644 --- a/mod-infra/src/main/scala/at/forsyte/apalache/infra/ExceptionAdapter.scala +++ b/mod-infra/src/main/scala/at/forsyte/apalache/infra/ExceptionAdapter.scala @@ -36,7 +36,7 @@ trait ExceptionAdapter extends LazyLogging { def toMessage: PartialFunction[Throwable, ErrorMessage] = { case err: OutOfMemoryError => logger.error(s"Ran out of heap memory (max JVM memory: ${Runtime.getRuntime.maxMemory})") logger.error(s"To increase available heap memory, see the manual:") - logger.error(" [https://apalache.informal.systems/docs/apalache/running.html#supplying-jvm-arguments]") + logger.error(" [https://apalache-mc.org/docs/apalache/running.html#supplying-jvm-arguments]") NormalErrorMessage(s"Ran out of heap memory: ${err.getMessage}") } } diff --git a/mod-infra/src/main/scala/at/forsyte/apalache/infra/tlc/TlcConfigParser.scala b/mod-infra/src/main/scala/at/forsyte/apalache/infra/tlc/TlcConfigParser.scala index dc1021df59..3c9d4ebdd2 100644 --- a/mod-infra/src/main/scala/at/forsyte/apalache/infra/tlc/TlcConfigParser.scala +++ b/mod-infra/src/main/scala/at/forsyte/apalache/infra/tlc/TlcConfigParser.scala @@ -9,7 +9,7 @@ import at.forsyte.apalache.infra.tlc.config.TlcConfig * href="http://research.microsoft.com/users/lamport/tla/book.html">Specifying Systems, Ch. 14] by Leslie Lamport. * TLC configuration files have a rich assignment syntax, e.g., one can write a parameter assignment. The syntax * supported by Apalache is described in [tlc-config]. + * href="https://apalache-mc.org/docs/apalache/tlc-config.html">tlc-config]. * * @author * Igor Konnov diff --git a/mod-tool/src/main/scala/at/forsyte/apalache/tla/Tool.scala b/mod-tool/src/main/scala/at/forsyte/apalache/tla/Tool.scala index f3902ddd35..dbe3854f05 100644 --- a/mod-tool/src/main/scala/at/forsyte/apalache/tla/Tool.scala +++ b/mod-tool/src/main/scala/at/forsyte/apalache/tla/Tool.scala @@ -44,7 +44,7 @@ object Tool extends LazyLogging { // If it is caught here, logging has not been set up yet, so print directly to `Console.err`. Console.err.println(s"Error: Ran out of heap memory (max JVM memory: ${Runtime.getRuntime.maxMemory})") Console.err.println(s"To increase available heap memory, see the manual:") - Console.err.println(" [https://apalache.informal.systems/docs/apalache/running.html#supplying-jvm-arguments]") + Console.err.println(" [https://apalache-mc.org/docs/apalache/running.html#supplying-jvm-arguments]") Console.out.println(s"EXITCODE: ERROR (${ExitCodes.ERROR})") System.exit(ExitCodes.ERROR) } diff --git a/mod-tool/src/main/scala/at/forsyte/apalache/tla/tooling/opt/ConfigCmd.scala b/mod-tool/src/main/scala/at/forsyte/apalache/tla/tooling/opt/ConfigCmd.scala index 73dedcf455..37126f8158 100644 --- a/mod-tool/src/main/scala/at/forsyte/apalache/tla/tooling/opt/ConfigCmd.scala +++ b/mod-tool/src/main/scala/at/forsyte/apalache/tla/tooling/opt/ConfigCmd.scala @@ -19,7 +19,7 @@ class ConfigCmd extends ApalacheCommand(name = "config", description = "Configur var submitStats: Option[Boolean] = opt[Option[Boolean]](name = "enable-stats", description = "Let Apalache submit usage statistics to tlapl.us\n" - + "(shared with TLC and TLA+ Toolbox)\nSee: https://apalache.informal.systems/docs/apalache/statistics.html") + + "(shared with TLC and TLA+ Toolbox)\nSee: https://apalache-mc.org/docs/apalache/statistics.html") def run() = { logger.info("Configuring Apalache") diff --git a/test/tla/Antipatterns.tla b/test/tla/Antipatterns.tla index 0b5c0f99fe..b8928a23f5 100644 --- a/test/tla/Antipatterns.tla +++ b/test/tla/Antipatterns.tla @@ -1,7 +1,7 @@ ---- MODULE Antipatterns ---- (* Contains a collection of known-to-be-inefficient Apalache constructs, a.k.a. "antipatterns". We explain why these constructs are inefficient in -https://apalache.informal.systems/docs/apalache/antipatterns.html +https://apalache-mc.org/docs/apalache/antipatterns.html The purpose of this file is to collect known antipatterns, so we can measure just how much they affect performance, across various versions of Apalache. diff --git a/test/tla/MC_ERC20.tla b/test/tla/MC_ERC20.tla index b1db62fce4..79a30b3b59 100644 --- a/test/tla/MC_ERC20.tla +++ b/test/tla/MC_ERC20.tla @@ -4,7 +4,7 @@ EXTENDS Integers, ERC20_typedefs \* Use the set of three addresses. \* We are using uninterpreted values, similar to TLC's model values. -\* See: https://apalache.informal.systems/docs/HOWTOs/uninterpretedTypes.html +\* See: https://apalache-mc.org/docs/HOWTOs/uninterpretedTypes.html ADDR == { "Alice_OF_ADDR", "Bob_OF_ADDR", "Eve_OF_ADDR" } \* Apalache can draw constants from the set of all integers diff --git a/test/tla/cli-integration-tests.md b/test/tla/cli-integration-tests.md index cfa06d6d28..90fd5c9435 100644 --- a/test/tla/cli-integration-tests.md +++ b/test/tla/cli-integration-tests.md @@ -362,7 +362,7 @@ $ cat output.json | head { "name": "ApalacheIR", "version": "1.0", - "description": "https://apalache.informal.systems/docs/adr/005adr-json.html", + "description": "https://apalache-mc.org/docs/adr/005adr-json.html", "modules": [ { "kind": "TlaModule", @@ -437,7 +437,7 @@ $ cat output.json | head { "name": "ApalacheIR", "version": "1.0", - "description": "https://apalache.informal.systems/docs/adr/005adr-json.html", + "description": "https://apalache-mc.org/docs/adr/005adr-json.html", "modules": [ { "kind": "TlaModule", @@ -1484,7 +1484,7 @@ An occurence of `Seq(S)` should point to an explanation. ```sh $ apalache-mc check Bug1126.tla | sed 's/[IE]@.*//' ... -Bug1126.tla:15:14-15:27: unsupported expression: Seq(_) produces an infinite set of unbounded sequences. See: https://apalache.informal.systems/docs/apalache/known-issues.html#using-seqs +Bug1126.tla:15:14-15:27: unsupported expression: Seq(_) produces an infinite set of unbounded sequences. See: https://apalache-mc.org/docs/apalache/known-issues.html#using-seqs ... EXITCODE: ERROR (75) ``` @@ -2407,7 +2407,7 @@ EXITCODE: OK ### check profiling Check that the profiler output is produced as explained in -[Profiling](https://apalache.informal.systems/docs/apalache/profiling.html). +[Profiling](https://apalache-mc.org/docs/apalache/profiling.html). ```sh $ apalache-mc check --run-dir=./profile-run-dir --smtprof schroedinger_cat.tla | sed 's/[IEW]@.*//' @@ -2508,7 +2508,7 @@ EXITCODE: OK $ apalache-mc check Test669.tla | sed 's/[IEW]@.*//' ... This error may show up when CONSTANTS are not initialized. -Check the manual: https://apalache.informal.systems/docs/apalache/parameters.html +Check the manual: https://apalache-mc.org/docs/apalache/parameters.html Input error (see the manual): SubstRule: Variable N is not assigned a value ... EXITCODE: ERROR (255) diff --git a/tla-assignments/src/main/scala/at/forsyte/apalache/tla/assignments/SmtFreeSymbolicTransitionExtractor.scala b/tla-assignments/src/main/scala/at/forsyte/apalache/tla/assignments/SmtFreeSymbolicTransitionExtractor.scala index 42acd07bbb..fe61cd1edb 100644 --- a/tla-assignments/src/main/scala/at/forsyte/apalache/tla/assignments/SmtFreeSymbolicTransitionExtractor.scala +++ b/tla-assignments/src/main/scala/at/forsyte/apalache/tla/assignments/SmtFreeSymbolicTransitionExtractor.scala @@ -195,7 +195,7 @@ class SmtFreeSymbolicTransitionExtractor( } object SmtFreeSymbolicTransitionExtractor { - val MANUAL_LINK = "https://apalache.informal.systems/docs/apalache/principles/assignments.html" + val MANUAL_LINK = "https://apalache-mc.org/docs/apalache/principles/assignments.html" def apply(tracker: TransformationTracker, sourceLoc: SourceLocator): SmtFreeSymbolicTransitionExtractor = { new SmtFreeSymbolicTransitionExtractor(tracker, sourceLoc) diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/config/CheckerExceptionAdapter.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/config/CheckerExceptionAdapter.scala index bad9234a93..25bcbce0ce 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/config/CheckerExceptionAdapter.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/config/CheckerExceptionAdapter.scala @@ -42,7 +42,7 @@ class CheckerExceptionAdapter @Inject() (sourceStore: SourceStore, changeListene case err: AssignmentException => logger.info("To understand the error, read the manual:") - logger.info(" [https://apalache.informal.systems/docs/apalache/principles/assignments.html]") + logger.info(" [https://apalache-mc.org/docs/apalache/principles/assignments.html]") NormalErrorMessage("Assignment error: " + err.getMessage) case err: OutdatedAnnotationsError => diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/IntDotDotRule.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/IntDotDotRule.scala index 98542fe710..5ea921c3c1 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/IntDotDotRule.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/IntDotDotRule.scala @@ -51,7 +51,7 @@ class IntDotDotRule(@unused rewriter: SymbStateRewriter, intRangeCache: IntRange case _ => throw new NotInKeraError( - "Expected a constant integer range in [ .. ], found %s. This is a known issue: [https://apalache.informal.systems/docs/apalache/known-issues.html]" + "Expected a constant integer range in [ .. ], found %s. This is a known issue: [https://apalache-mc.org/docs/apalache/known-issues.html]" .format(elems.map(UTFPrinter.apply).mkString("..")), ex) } } diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/SubstRule.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/SubstRule.scala index dab6a4474d..a56fbc8141 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/SubstRule.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/SubstRule.scala @@ -31,7 +31,7 @@ class SubstRule extends RewritingRule with LazyLogging { state.setRex(cell.toBuilder) } else { logger.error("This error may show up when CONSTANTS are not initialized.") - logger.error("Check the manual: https://apalache.informal.systems/docs/apalache/parameters.html") + logger.error("Check the manual: https://apalache-mc.org/docs/apalache/parameters.html") throw new TlaInputError(s"${getClass.getSimpleName}: Variable $x is not assigned a value") } diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/CherryPick.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/CherryPick.scala index 14076b0089..68843e7b59 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/CherryPick.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/CherryPick.scala @@ -283,7 +283,7 @@ class CherryPick(rewriter: SymbStateRewriter) { case _: IndexOutOfBoundsException => // TODO Remove once sound record typing is implemented val url = - "https://apalache.informal.systems/docs/apalache/known-issues.html#updating-records-with-excess-fields" + "https://apalache-mc.org/docs/apalache/known-issues.html#updating-records-with-excess-fields" val msg = s"""|An updated record has more fields than its declared type: |A record with the inferred type `$thisRecT` has been updated with diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/stratifiedRules/base/SubstStratifiedRule.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/stratifiedRules/base/SubstStratifiedRule.scala index c43c229095..5db8f5b4c8 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/stratifiedRules/base/SubstStratifiedRule.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/stratifiedRules/base/SubstStratifiedRule.scala @@ -29,7 +29,7 @@ class SubstStratifiedRule extends StratifiedRuleInterface with LazyLogging { (startingScope, binding(x)) } else { logger.error("This error may show up when CONSTANTS are not initialized.") - logger.error("Check the manual: https://apalache.informal.systems/docs/apalache/parameters.html") + logger.error("Check the manual: https://apalache-mc.org/docs/apalache/parameters.html") throw new TlaInputError(s"${getClass.getSimpleName}: Variable $x is not assigned a value") } diff --git a/tla-io/src/main/scala/at/forsyte/apalache/io/annotations/parser/CommentPreprocessor.scala b/tla-io/src/main/scala/at/forsyte/apalache/io/annotations/parser/CommentPreprocessor.scala index 09d5a2e0fb..6bb5543ae7 100644 --- a/tla-io/src/main/scala/at/forsyte/apalache/io/annotations/parser/CommentPreprocessor.scala +++ b/tla-io/src/main/scala/at/forsyte/apalache/io/annotations/parser/CommentPreprocessor.scala @@ -15,7 +15,7 @@ package at.forsyte.apalache.io.annotations.parser * Perhaps, the first step would be to write a precise grammar for this lexer, instead of write the spaghetti of * if-then-else expressions, as we have in this preprocessor.

* - *

See the annotations HOWTO: https://apalache.informal.systems/docs/HOWTOs/howto-write-type-annotations.html

+ *

See the annotations HOWTO: https://apalache-mc.org/docs/HOWTOs/howto-write-type-annotations.html

* * @author * Igor Konnov diff --git a/tla-io/src/main/scala/at/forsyte/apalache/io/json/TlaToJson.scala b/tla-io/src/main/scala/at/forsyte/apalache/io/json/TlaToJson.scala index fd936fcd77..98df35bf3a 100644 --- a/tla-io/src/main/scala/at/forsyte/apalache/io/json/TlaToJson.scala +++ b/tla-io/src/main/scala/at/forsyte/apalache/io/json/TlaToJson.scala @@ -216,7 +216,7 @@ class TlaToJson[T <: JsonRepresentation]( factory.mkObj( "name" -> "ApalacheIR", versionFieldName -> JsonVersion.current, - "description" -> "https://apalache.informal.systems/docs/adr/005adr-json.html", + "description" -> "https://apalache-mc.org/docs/adr/005adr-json.html", "modules" -> factory.fromIterable(moduleJsons), ) } diff --git a/tla-io/src/main/scala/at/forsyte/apalache/io/lir/ItfCounterexampleWriter.scala b/tla-io/src/main/scala/at/forsyte/apalache/io/lir/ItfCounterexampleWriter.scala index 57b9fbf46c..d1fa21b15f 100644 --- a/tla-io/src/main/scala/at/forsyte/apalache/io/lir/ItfCounterexampleWriter.scala +++ b/tla-io/src/main/scala/at/forsyte/apalache/io/lir/ItfCounterexampleWriter.scala @@ -56,7 +56,7 @@ object ItfCounterexampleWriter { ) ) val descriptions = Map[String, ujson.Value]( - FORMAT_DESCRIPTION_FIELD -> "https://apalache.informal.systems/docs/adr/015adr-trace.html", + FORMAT_DESCRIPTION_FIELD -> "https://apalache-mc.org/docs/adr/015adr-trace.html", DESCRIPTION_FIELD -> "Created by Apalache on %s".format(Calendar.getInstance().getTime), ) diff --git a/tla-io/src/test/scala/at/forsyte/apalache/io/lir/TestCounterexampleWriter.scala b/tla-io/src/test/scala/at/forsyte/apalache/io/lir/TestCounterexampleWriter.scala index 0300e299de..9790527c08 100644 --- a/tla-io/src/test/scala/at/forsyte/apalache/io/lir/TestCounterexampleWriter.scala +++ b/tla-io/src/test/scala/at/forsyte/apalache/io/lir/TestCounterexampleWriter.scala @@ -231,7 +231,7 @@ class TestCounterexampleWriter extends AnyFunSuite with TestCounterexampleWriter """{ | "name": "ApalacheIR", | "version": "1.0", - | "description": "https://apalache.informal.systems/docs/adr/005adr-json.html", + | "description": "https://apalache-mc.org/docs/adr/005adr-json.html", | "modules": [ | { | "kind": "TlaModule", @@ -334,7 +334,7 @@ class TestCounterexampleWriter extends AnyFunSuite with TestCounterexampleWriter """{ | "name": "ApalacheIR", | "version": "1.0", - | "description": "https://apalache.informal.systems/docs/adr/005adr-json.html", + | "description": "https://apalache-mc.org/docs/adr/005adr-json.html", | "modules": [ | { | "kind": "TlaModule", @@ -505,7 +505,7 @@ class TestCounterexampleWriter extends AnyFunSuite with TestCounterexampleWriter """{ | "name": "ApalacheIR", | "version": "1.0", - | "description": "https://apalache.informal.systems/docs/adr/005adr-json.html", + | "description": "https://apalache-mc.org/docs/adr/005adr-json.html", | "modules": [ | { | "kind": "TlaModule", diff --git a/tla-io/src/test/scala/at/forsyte/apalache/io/lir/TestItfCounterexampleWriter.scala b/tla-io/src/test/scala/at/forsyte/apalache/io/lir/TestItfCounterexampleWriter.scala index de50228e00..2fa7537f00 100644 --- a/tla-io/src/test/scala/at/forsyte/apalache/io/lir/TestItfCounterexampleWriter.scala +++ b/tla-io/src/test/scala/at/forsyte/apalache/io/lir/TestItfCounterexampleWriter.scala @@ -84,7 +84,7 @@ class TestItfCounterexampleWriter extends AnyFunSuite { s"""{ | "#meta": { | "format": "ITF", - | "format-description": "https://apalache.informal.systems/docs/adr/015adr-trace.html", + | "format-description": "https://apalache-mc.org/docs/adr/015adr-trace.html", | "description": "Created by Apalache" | }, | "params": [ "N" ], @@ -180,7 +180,7 @@ class TestItfCounterexampleWriter extends AnyFunSuite { """{ | "#meta": { | "format": "ITF", - | "format-description": "https://apalache.informal.systems/docs/adr/015adr-trace.html", + | "format-description": "https://apalache-mc.org/docs/adr/015adr-trace.html", | "description": "Created by Apalache" | }, | "vars": [ "a", "b", "c", "d", "e", "f", "g", "h", "n" ], diff --git a/tla-typechecker/src/main/scala/at/forsyte/apalache/tla/typecheck/etc/ToEtcExpr.scala b/tla-typechecker/src/main/scala/at/forsyte/apalache/tla/typecheck/etc/ToEtcExpr.scala index 780320bf44..2cd404bc53 100644 --- a/tla-typechecker/src/main/scala/at/forsyte/apalache/tla/typecheck/etc/ToEtcExpr.scala +++ b/tla-typechecker/src/main/scala/at/forsyte/apalache/tla/typecheck/etc/ToEtcExpr.scala @@ -898,7 +898,7 @@ class ToEtcExpr( case OperEx(ApalacheOper.withType, _, annotation) => // Met an old type annotation. Warn the user and ignore the annotation. logger.error("Met an old type annotation: " + annotation) - logger.error("See: https://apalache.informal.systems/docs/apalache/typechecker-snowcat.html") + logger.error("See: https://apalache-mc.org/docs/apalache/typechecker-snowcat.html") val msg = s"Old Apalache type annotations (predating 0.12.0) are no longer supported" throw new OutdatedAnnotationsError(msg, ex) diff --git a/tlair/src/main/scala/at/forsyte/apalache/tla/lir/Feature.scala b/tlair/src/main/scala/at/forsyte/apalache/tla/lir/Feature.scala index b5a804cd35..34908a3d67 100644 --- a/tlair/src/main/scala/at/forsyte/apalache/tla/lir/Feature.scala +++ b/tlair/src/main/scala/at/forsyte/apalache/tla/lir/Feature.scala @@ -24,7 +24,7 @@ case class RowsFeature( /** * Enable imprecise record types, see the discussion in ADR-002. + * href="https://apalache-mc.org/docs/adr/002adr-types.html#15-discussion">the discussion in ADR-002. * * [[ImpreciseRecordsFeature]] is mutually exclusive with [[RowsFeature]]. It is present only for backwards * compatibility. diff --git a/tlair/src/main/scala/at/forsyte/apalache/tla/lir/transformations/standard/KeraLanguagePred.scala b/tlair/src/main/scala/at/forsyte/apalache/tla/lir/transformations/standard/KeraLanguagePred.scala index 7ca7451a75..5ce282566a 100644 --- a/tlair/src/main/scala/at/forsyte/apalache/tla/lir/transformations/standard/KeraLanguagePred.scala +++ b/tlair/src/main/scala/at/forsyte/apalache/tla/lir/transformations/standard/KeraLanguagePred.scala @@ -109,7 +109,7 @@ class KeraLanguagePred extends ContextualLanguagePred { } object KeraLanguagePred { - val MANUAL_LINK_SEQ = "https://apalache.informal.systems/docs/apalache/known-issues.html#using-seqs" + val MANUAL_LINK_SEQ = "https://apalache-mc.org/docs/apalache/known-issues.html#using-seqs" private val singleton = new KeraLanguagePred diff --git a/tlair/src/main/scala/at/forsyte/apalache/tla/lir/transformations/standard/KeramelizerInputLanguagePred.scala b/tlair/src/main/scala/at/forsyte/apalache/tla/lir/transformations/standard/KeramelizerInputLanguagePred.scala index 5e481b5e01..2938f3b561 100644 --- a/tlair/src/main/scala/at/forsyte/apalache/tla/lir/transformations/standard/KeramelizerInputLanguagePred.scala +++ b/tlair/src/main/scala/at/forsyte/apalache/tla/lir/transformations/standard/KeramelizerInputLanguagePred.scala @@ -80,7 +80,7 @@ class KeramelizerInputLanguagePred extends ContextualLanguagePred { } object KeramelizerInputLanguagePred { - val MANUAL_LINK_SEQ = "https://apalache.informal.systems/docs/apalache/known-issues.html#using-seqs" + val MANUAL_LINK_SEQ = "https://apalache-mc.org/docs/apalache/known-issues.html#using-seqs" private val singleton = new KeramelizerInputLanguagePred From 19963f413ae4ce8f65ee96292b3ba7d824a58ebd Mon Sep 17 00:00:00 2001 From: Igor Konnov Date: Fri, 23 Aug 2024 21:21:13 +0200 Subject: [PATCH 06/15] fix formatting --- .../src/main/scala/at/forsyte/apalache/tla/lir/Feature.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tlair/src/main/scala/at/forsyte/apalache/tla/lir/Feature.scala b/tlair/src/main/scala/at/forsyte/apalache/tla/lir/Feature.scala index 34908a3d67..867b9b9f77 100644 --- a/tlair/src/main/scala/at/forsyte/apalache/tla/lir/Feature.scala +++ b/tlair/src/main/scala/at/forsyte/apalache/tla/lir/Feature.scala @@ -23,8 +23,8 @@ case class RowsFeature( } /** - * Enable imprecise record types, see the discussion in ADR-002. + * Enable imprecise record types, see the + * discussion in ADR-002. * * [[ImpreciseRecordsFeature]] is mutually exclusive with [[RowsFeature]]. It is present only for backwards * compatibility. From de60a69dbb5095edf4cf64769705c46e10f83423 Mon Sep 17 00:00:00 2001 From: Igor Konnov Date: Sun, 25 Aug 2024 14:26:09 +0200 Subject: [PATCH 07/15] improve the error message about expanding powersets --- test/tla/TestSets.tla | 5 +++++ test/tla/cli-integration-tests.md | 10 ++++++++++ .../scala/at/forsyte/apalache/tla/bmcmt/Limits.scala | 4 ++-- .../tla/bmcmt/config/CheckerExceptionAdapter.scala | 4 ++++ .../at/forsyte/apalache/tla/bmcmt/exceptions.scala | 11 +++++++++++ .../apalache/tla/bmcmt/rules/aux/PowSetCtor.scala | 11 ++++++++--- 6 files changed, 40 insertions(+), 5 deletions(-) diff --git a/test/tla/TestSets.tla b/test/tla/TestSets.tla index d52033d064..4ff544970d 100644 --- a/test/tla/TestSets.tla +++ b/test/tla/TestSets.tla @@ -145,6 +145,11 @@ TestExists15InPowerset == \E S \in SUBSET Set263: S = { 2, 6 } +\* This test is expected to fail. It should be run separately. +FailExpandLargePowerset == + \E S \in SUBSET (1..30): + 31 \notin S + TestForallInPowerset == \A S \in SUBSET Set1357: 6 \notin S diff --git a/test/tla/cli-integration-tests.md b/test/tla/cli-integration-tests.md index 90fd5c9435..1cb1d9411f 100644 --- a/test/tla/cli-integration-tests.md +++ b/test/tla/cli-integration-tests.md @@ -2668,6 +2668,16 @@ $ apalache-mc check --length=0 --inv=AllTests TestSets.tla | sed 's/[IEW]@.*//' EXITCODE: OK ``` +### check TestSets.tla reports an error on FailExpandLargePowerset + +```sh +$ apalache-mc check --length=0 --inv=FailExpandLargePowerset TestSets.tla | sed 's/[IEW]@.*//' +... +: known limitation: Attempted to expand SUBSET of size 2^30, whereas the built-in limit is 1048576 +... +EXITCODE: ERROR (255) +``` + ### check TestCommunityFunctions.tla reports no error (array-encoding) ```sh diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/Limits.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/Limits.scala index 181e77a20b..75701a5d20 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/Limits.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/Limits.scala @@ -13,9 +13,9 @@ object Limits { val MAX_PRODUCT_SIZE = 1000000 /** - * An upper bound on the size of an expanded powerset. + * An upper bound on the size of an expanded powerset, currently, `2^20`. */ - val POWSET_MAX_SIZE = 1000000 + val POWSET_MAX_SIZE = 1048576 /** * An upper bound on the number of rewriting steps that are applied to the same rule. diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/config/CheckerExceptionAdapter.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/config/CheckerExceptionAdapter.scala index 25bcbce0ce..1aa02ad85f 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/config/CheckerExceptionAdapter.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/config/CheckerExceptionAdapter.scala @@ -85,6 +85,10 @@ class CheckerExceptionAdapter @Inject() (sourceStore: SourceStore, changeListene "%s: no rule to rewrite a TLA+ expression: %s".format(findLoc(err.causeExpr.ID), err.getMessage) FailureMessage(msg) + case err: RewriterKnownLimitationError => + val msg = "%s: known limitation: %s".format(findLoc(err.causeExpr.ID), err.getMessage) + NormalErrorMessage(msg) + case err: RewriterException => val msg = "%s: rewriter error: %s".format(findLoc(err.causeExpr.ID), err.getMessage) FailureMessage(msg) diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/exceptions.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/exceptions.scala index 482c0d5fbf..b21aa9c915 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/exceptions.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/exceptions.scala @@ -22,6 +22,17 @@ class CheckerException(message: String, val causeExpr: TlaEx) extends Exception( */ class RewriterException(message: String, causeExpr: TlaEx) extends CheckerException(message, causeExpr) +/** + * This exception is thrown when the rewriter meets a generally well-formed TLA+ expression + * that cannot be handled due to some known limitations of the model checker. + * + * @param message + * error message + * @param causeExpr + * the problematic TLA+ expression, may be NullEx + */ +class RewriterKnownLimitationError(message: String, causeExpr: TlaEx) extends CheckerException(message, causeExpr) + /** * This exception is thrown when QStateRewrite cannot find an applicable rule. * diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/PowSetCtor.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/PowSetCtor.scala index 5d67003924..9d9fdb18bf 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/PowSetCtor.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/PowSetCtor.scala @@ -3,6 +3,7 @@ package at.forsyte.apalache.tla.bmcmt.rules.aux import at.forsyte.apalache.tla.bmcmt._ import at.forsyte.apalache.tla.lir.SetT1 import at.forsyte.apalache.tla.types.{tlaU => tla} +import com.typesafe.scalalogging.LazyLogging /** * This class constructs the power set of S, that is, SUBSET S. Sometimes, this is just unavoidable, e.g., consider { Q @@ -11,7 +12,7 @@ import at.forsyte.apalache.tla.types.{tlaU => tla} * @author * Igor Konnov */ -class PowSetCtor(rewriter: SymbStateRewriter) { +class PowSetCtor(rewriter: SymbStateRewriter) extends LazyLogging { // Confringo is the explosion curse from Harry Potter. To let you know that your SMT solver will probably explode. def confringo(state: SymbState, set: ArenaCell): SymbState = { @@ -40,8 +41,12 @@ class PowSetCtor(rewriter: SymbStateRewriter) { rewriter.solverContext.log("; %s(%s) {".format(getClass.getSimpleName, state.ex)) val powSetSize = BigInt(1) << elems.size - if (powSetSize >= Limits.POWSET_MAX_SIZE) { - throw new RewriterException(s"Attempted to expand a powerset of size 2^${elems.size}", state.ex) + if (powSetSize > Limits.POWSET_MAX_SIZE) { + logger.error("This error typically occurs when one enumerates all subsets:" + + " \\A S \\in SUBSET T: P or \\E S \\in SUBSET T: P") + logger.error("Try to decrease the cardinality of the base set T, or avoid enumeration.") + val msg = s"Attempted to expand SUBSET of size 2^${elems.size}, whereas the built-in limit is ${Limits.POWSET_MAX_SIZE}" + throw new RewriterKnownLimitationError(msg, state.ex) } val subsets = if (elems.nonEmpty) { From 0c6b10779a6f006480af17dfbc2289195169f668 Mon Sep 17 00:00:00 2001 From: Igor Konnov Date: Sun, 25 Aug 2024 14:31:29 +0200 Subject: [PATCH 08/15] add release notes --- .unreleased/bug-fixes/2969-powset-expansion | 1 + 1 file changed, 1 insertion(+) create mode 100644 .unreleased/bug-fixes/2969-powset-expansion diff --git a/.unreleased/bug-fixes/2969-powset-expansion b/.unreleased/bug-fixes/2969-powset-expansion new file mode 100644 index 0000000000..2faa13c9c9 --- /dev/null +++ b/.unreleased/bug-fixes/2969-powset-expansion @@ -0,0 +1 @@ +Better error reporting for hitting the limits of `SUBSET` expansion, see #2969 \ No newline at end of file From d910530c7ce77cda1fcb3f38c81d3b77059f7794 Mon Sep 17 00:00:00 2001 From: Igor Konnov Date: Sun, 25 Aug 2024 14:34:06 +0200 Subject: [PATCH 09/15] fix formatting --- .../main/scala/at/forsyte/apalache/tla/bmcmt/exceptions.scala | 4 ++-- .../at/forsyte/apalache/tla/bmcmt/rules/aux/PowSetCtor.scala | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/exceptions.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/exceptions.scala index b21aa9c915..82de2da58a 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/exceptions.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/exceptions.scala @@ -23,8 +23,8 @@ class CheckerException(message: String, val causeExpr: TlaEx) extends Exception( class RewriterException(message: String, causeExpr: TlaEx) extends CheckerException(message, causeExpr) /** - * This exception is thrown when the rewriter meets a generally well-formed TLA+ expression - * that cannot be handled due to some known limitations of the model checker. + * This exception is thrown when the rewriter meets a generally well-formed TLA+ expression that cannot be handled due + * to some known limitations of the model checker. * * @param message * error message diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/PowSetCtor.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/PowSetCtor.scala index 9d9fdb18bf..78b11e9628 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/PowSetCtor.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/PowSetCtor.scala @@ -45,7 +45,8 @@ class PowSetCtor(rewriter: SymbStateRewriter) extends LazyLogging { logger.error("This error typically occurs when one enumerates all subsets:" + " \\A S \\in SUBSET T: P or \\E S \\in SUBSET T: P") logger.error("Try to decrease the cardinality of the base set T, or avoid enumeration.") - val msg = s"Attempted to expand SUBSET of size 2^${elems.size}, whereas the built-in limit is ${Limits.POWSET_MAX_SIZE}" + val msg = + s"Attempted to expand SUBSET of size 2^${elems.size}, whereas the built-in limit is ${Limits.POWSET_MAX_SIZE}" throw new RewriterKnownLimitationError(msg, state.ex) } val subsets = From 8195978e17b2472e141692d1476ba2d130bba0b5 Mon Sep 17 00:00:00 2001 From: Igor Konnov Date: Sun, 25 Aug 2024 20:45:46 +0200 Subject: [PATCH 10/15] fix the message as suggested by @thpani --- .../main/scala/at/forsyte/apalache/tla/bmcmt/Limits.scala | 4 ++-- .../forsyte/apalache/tla/bmcmt/rules/aux/PowSetCtor.scala | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/Limits.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/Limits.scala index 75701a5d20..d5b8bad29d 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/Limits.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/Limits.scala @@ -13,9 +13,9 @@ object Limits { val MAX_PRODUCT_SIZE = 1000000 /** - * An upper bound on the size of an expanded powerset, currently, `2^20`. + * An upper bound on the size of a base set that is expanded to a powerset, currently, `20`. */ - val POWSET_MAX_SIZE = 1048576 + val POWSET_MAX_BASE_SIZE = 20 /** * An upper bound on the number of rewriting steps that are applied to the same rule. diff --git a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/PowSetCtor.scala b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/PowSetCtor.scala index 78b11e9628..124f4a968d 100644 --- a/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/PowSetCtor.scala +++ b/tla-bmcmt/src/main/scala/at/forsyte/apalache/tla/bmcmt/rules/aux/PowSetCtor.scala @@ -40,15 +40,15 @@ class PowSetCtor(rewriter: SymbStateRewriter) extends LazyLogging { } rewriter.solverContext.log("; %s(%s) {".format(getClass.getSimpleName, state.ex)) - val powSetSize = BigInt(1) << elems.size - if (powSetSize > Limits.POWSET_MAX_SIZE) { - logger.error("This error typically occurs when one enumerates all subsets:" + if (elems.size > Limits.POWSET_MAX_BASE_SIZE) { + logger.error("This error typically occurs when one enumerates all subsets of a set:" + " \\A S \\in SUBSET T: P or \\E S \\in SUBSET T: P") logger.error("Try to decrease the cardinality of the base set T, or avoid enumeration.") val msg = - s"Attempted to expand SUBSET of size 2^${elems.size}, whereas the built-in limit is ${Limits.POWSET_MAX_SIZE}" + s"Attempted to expand a SUBSET of size 2^${elems.size}, whereas the built-in limit is 2^${Limits.POWSET_MAX_BASE_SIZE}" throw new RewriterKnownLimitationError(msg, state.ex) } + val powSetSize = BigInt(1) << elems.size val subsets = if (elems.nonEmpty) { BigInt(0).to(powSetSize - 1).map(mkSetByNum) From 3330b194b811c4b3b9984ec93be28565969a7000 Mon Sep 17 00:00:00 2001 From: Igor Konnov Date: Sun, 25 Aug 2024 20:48:04 +0200 Subject: [PATCH 11/15] fix the test --- test/tla/cli-integration-tests.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/tla/cli-integration-tests.md b/test/tla/cli-integration-tests.md index 1cb1d9411f..676077e0d7 100644 --- a/test/tla/cli-integration-tests.md +++ b/test/tla/cli-integration-tests.md @@ -2673,7 +2673,7 @@ EXITCODE: OK ```sh $ apalache-mc check --length=0 --inv=FailExpandLargePowerset TestSets.tla | sed 's/[IEW]@.*//' ... -: known limitation: Attempted to expand SUBSET of size 2^30, whereas the built-in limit is 1048576 +: known limitation: Attempted to expand a SUBSET of size 2^30, whereas the built-in limit is 2^20 ... EXITCODE: ERROR (255) ``` From 0a02809f106a78ea414deca74dea6bdddfb894a1 Mon Sep 17 00:00:00 2001 From: Igor Konnov Date: Wed, 28 Aug 2024 21:43:10 +0200 Subject: [PATCH 12/15] update the landing page --- .github/FUNDING.yml | 4 +- FUNDING.md | 3 +- README.md | 102 +++++++++++++++++++++++--------------------- 3 files changed, 57 insertions(+), 52 deletions(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index cc0587d78d..54bc76b169 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,6 +1,6 @@ # These are supported funding model platforms -github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +github: [konnov] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username @@ -9,4 +9,4 @@ community_bridge: # Replace with a single Community Bridge project-name e.g., cl liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username -custom: ['https://informal.systems/', 'https://viennabusinessagency.at/'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/FUNDING.md b/FUNDING.md index 7d6cffe670..8e1aff6ba2 100644 --- a/FUNDING.md +++ b/FUNDING.md @@ -1,7 +1,8 @@ ## Apalache Funding We are grateful to the following organizations for financially supporting -the project Apalache for significant duration of time in the past: +the Apalache project (in the form of grants or employment) for a significant +duration of time in the past: - [Informal Systems][]: 2020-2024 - [Vienna Business Agency][]: 2021-2023 diff --git a/README.md b/README.md index a238a32b39..bc8ceced3b 100644 --- a/README.md +++ b/README.md @@ -12,16 +12,19 @@ alt="Apalache Logo"> [![main badge][]][main-ci] [main badge]: https://github.com/apalache-mc/apalache/workflows/build/badge.svg?branch=main + [main-ci]: https://github.com/apalache-mc/apalache/actions?query=branch%3Amain+workflow%3Abuild -Apalache translates [TLA+] into the logic supported by SMT solvers such as -[Microsoft Z3]. Apalache can check inductive invariants (for fixed or bounded +Apalache translates [TLA+][] into the logic supported by SMT solvers such as +[Microsoft Z3][]. Apalache can check inductive invariants (for fixed or bounded parameters) and check safety of bounded executions (bounded model checking). To -see the list of supported TLA+ constructs, check the [supported features]. In -general, Apalache runs under the same assumptions as [TLC]. +see the list of supported TLA+ constructs, check the [supported features][]. In +general, Apalache runs under the same assumptions as [TLC][]. However, Apalache +benefits from constraint solving and can handle potentially larger state-spaces, +e.g., involving integer clocks and Byzantine faults. -To learn more about TLA+, visit [Leslie Lamport's page on TLA+] and his [Video -course]. +To learn more about TLA+, visit [Leslie Lamport's page on TLA+][] and his [Video +course][]. ## Releases @@ -39,54 +42,54 @@ You can also find Apalache packaged via Nix at [cosmos.nix](https://github.com/i For more information on installation options, see [the manual][user-manual-installation]. +## Success stories + +Check [Apalache examples][] that demonstrate how to use the strengths of Apalache. +Also, check the [standard repository of TLA+ examples][]. + ## Getting started - Read the [Beginner's tutorial][]. -- Check the material at [TLA-Apalache workshop][]. - Read the [Apalache user manual][user-manual]. - Consult the (WIP) [Idioms for writing better TLA+][idioms]. - Consult the (WIP) [TLA+ language manual for engineers][language-manual]. -## Website - -Our current website is served at https://apalache-mc.org . - -The site is hosted by github, and changes can be made through PRs into the -[gh-pages](https://github.com/apalache-mc/apalache/tree/gh-pages) branch of -this repository. See the README.md on that branch for more information. - -The user documentation is automatically deployed to the website branch as per -the [CI configuration](./.github/workflows/deploy.yml). - -Our old website is still available at https://forsyte.at/research/apalache/ . - ## Community - Join the chat in the [Apalache zulip stream]. - [Contribute](./CONTRIBUTING.md) to the development of Apalache. -## Help wanted +## Funding and Sponsorship -Want to contribute? Here is a list of issues that could be solved without -knowing too much about the internals of Apalache. Solving these issues would -improve usability! Please comment in the relevant issue, if you are going to -solve it. +Currently, Apalache is not funded by any organization. As a result, +it is de-facto funded by its current maintainers and contributors, +including [Igor Konnov][], [Jure Kukovec][], and [Thomas Pani][]. +If you would like to sponsor the project, please contact us. -- Writing annotations in the JSON format: [#804](https://github.com/apalache-mc/apalache/issues/804) -- Add support for VIEW in the TLC config: [#851](https://github.com/apalache-mc/apalache/issues/851) -- Translate `\E x \in STRING: P` and `\A x \in STRING: P`: - [#844](https://github.com/apalache-mc/apalache/issues/844) -- Interval analysis for `a..b`: [#446](https://github.com/apalache-mc/apalache/issues/446) +We are grateful for the past financial support in the form of grants or +employment from the following organizations: -## Industrial examples + - [Informal Systems][] (Canada/Switzerland/Austria): 2020-2024 + - [Vienna Business Agency][] (Austria): 2021-2023 + - [Interchain Foundation][] (Switzerland): 2019-2023 + - [WWTF][] (Austria): Vienna Science and Technology Fund 2016-2020 + - [Inria Nancy][] and [LORIA][] (France): 2018-2019 + - [TU Wien][] (Austria): 2016-2020 -- Check [Light client specs][] and [Model-based testing][] of the Tendermint - light client. +More details on the [Funding page](./FUNDING.md). -- Check [Tendermint specs][] to see how we use TLA+ and Apalache at Informal to - design and specify protocols for the [Tendermint blockchain]. +## Website + +Our current website is served at https://apalache-mc.org . -- To see more examples, check the [standard repository of TLA+ examples]. +The site is hosted by github, and changes can be made through PRs into the +[gh-pages](https://github.com/apalache-mc/apalache/tree/gh-pages) branch of this repository. See the README.md on that +branch for more information. + +The user documentation is automatically deployed to the website branch as per +the [CI configuration](./.github/workflows/deploy.yml). + + -## Performance - -We are collecting [apalache benchmarks]. See the Apalache performance when -[checking inductive invariants] and running [bounded model checking]. Versions -0.6.0 and 0.7.2 are a major improvement over version 0.5.2 (the version -[reported at OOPSLA19](https://dl.acm.org/doi/10.1145/3360549)). - + --- -Apalache is developed at [Informal Systems](https://informal.systems/). - -With additional funding from
[the Vienna Business Agency](https://viennabusinessagency.at/). - -Past funding from [Der Wiener Wissenschafts-, Forschungs- und Technologiefonds](https://wwtf.at/about/). - [tla+]: http://lamport.azurewebsites.net/tla/tla.html [microsoft z3]: https://github.com/Z3Prover/z3 [supported features]: https://apalache-mc.org/docs/apalache/features.html @@ -166,3 +159,14 @@ Past funding from [Der Wiener Wissenschafts-, Forschungs- und Technologiefonds]( [apalache-mc.org]: https://apalache-mc.org [TLA-Apalache workshop]: https://github.com/informalsystems/tla-apalache-workshop [Beginner's tutorial]: https://apalache-mc.org/docs/tutorials/entry-tutorial.html +[Apalache examples]: https://github.com/konnov/apalache-examples +[WWTF]: https://wwtf.at/index.php?lang=EN +[TU Wien]: https://www.tuwien.at/ +[Inria Nancy]: https://www.inria.fr/en/inria-centre-universite-lorraine +[LORIA]: https://loria.fr +[Interchain Foundation]: https://interchain.io/ +[Informal Systems]: https://informal.systems/ +[Vienna Business Agency]: https://viennabusinessagency.at/ +[Igor Konnov]: https://github.com/konnov +[Jure Kukovec]: https://github.com/kukovec +[Thomas Pani]: https://github.com/thpani \ No newline at end of file From 415ec70cad012a2f1d114f2fe3b1dd4da2e8809a Mon Sep 17 00:00:00 2001 From: Igor Konnov Date: Wed, 28 Aug 2024 21:57:56 +0200 Subject: [PATCH 13/15] add the "reloading" image and more info about sponsorship --- FUNDING.md | 6 ++++++ README.md | 5 ++++- assets/reloading-apalache.png | Bin 0 -> 1065647 bytes 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 assets/reloading-apalache.png diff --git a/FUNDING.md b/FUNDING.md index 8e1aff6ba2..1920d637ca 100644 --- a/FUNDING.md +++ b/FUNDING.md @@ -1,5 +1,11 @@ ## Apalache Funding +Currently, Apalache is not funded by any organization. As a result, +it is de-facto funded by its current maintainers and contributors, +including [Igor Konnov][], [Jure Kukovec][], and [Thomas Pani][]. +If you would like to sponsor the project, please contact us, or +simply sponsor us on GitHub by clicking the "Sponsor" button! + We are grateful to the following organizations for financially supporting the Apalache project (in the form of grants or employment) for a significant duration of time in the past: diff --git a/README.md b/README.md index bc8ceced3b..fc0b76c80e 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,10 @@ Also, check the [standard repository of TLA+ examples][]. Currently, Apalache is not funded by any organization. As a result, it is de-facto funded by its current maintainers and contributors, including [Igor Konnov][], [Jure Kukovec][], and [Thomas Pani][]. -If you would like to sponsor the project, please contact us. +If you would like to sponsor the project, please contact us, or +simply sponsor us on GitHub by clicking the "Sponsor" button! + +![Reloading Apalache](./assets/reloading-apalache.png) We are grateful for the past financial support in the form of grants or employment from the following organizations: diff --git a/assets/reloading-apalache.png b/assets/reloading-apalache.png new file mode 100644 index 0000000000000000000000000000000000000000..c66d1c5525297fba998e0e966964c8265ff8b3b2 GIT binary patch literal 1065647 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

Sp2}H2RUVIjUW0LY1q0x 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

r;!xfdwd`8)fA4E}l^*IDBvU?$>`8KlPLU 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