Update to OpenJDK 21
- Update to OpenJDK 21: the current long-term support version of Java.
ML antiquotation for simproc_setup
- ML antiquotation simproc_setup inlines an invocation of Simplifier.simproc_setup, using the same concrete syntax as the corresponding Isar command. This allows to introduce a new simproc conveniently within an ML module, and refer directly to its ML value. For example, the simproc Record.eq is defined in ~~/src/HOL/Tools/record.ML as follows:
Update of GHC stack with full support for ARM64 platforms
- Update to GHC stack 2.13.1 with support for all platforms, including Apple Silicon.
Discontinuation of very old Linux and macOS versions
- No longer support for very old versions of macOS and Linux: base-line is Ubuntu Linux 18.04 LTS and macOS 11 Big Sur.
ML: distinguish proper interrupts from Poly/ML RTS breakdown
- Proper interrupts (e.g. timeouts) are now distinguished from Poly/ML runtime system breakdown, using Exn.Interrupt_Breakdown as quasi-error. Exn.is_interrupt covers all kinds of interrupts as before, but Exn.is_interrupt_proper and Exn.is_interrupt_breakdown are more specific. Subtle INCOMPATIBILITY in the semantics of ML evaluation.
Robust handling of program exceptions in Isabelle/ML
- ML antiquotation try provides variants of exception handling that avoids accidental capture of physical interrupts (which could affect ML semantics in unpredictable ways):
Plan for Isabelle2024 release
The next anticipated release is after Isabelle2023 (September 2023) is Isabelle2024 (May 2024). The distance between two releases is usually 8–10 months, but recently this got closer 11 months. To return to regularity, and to accommodate other side-conditions, the hot phase of the release is presently scheduled for 03-Apr..15-May-2023. The detailed plan is as follows:
Release Candidates for Isabelle2023
The official Isabelle2023 release is scheduled for early September 2023. This blog entry is dynamically updated to follow the sequence of public release candidates. See also the isabelle-release repository.
Significantly reduced ML heap usage
- ML heap usage and stored heap size has been significantly reduced, especially for applications with a lot of definitions in a locale or class context. The shrink factor is usually in the range 1.1 .. 2.0, but a factor 3 .. 10 has been seen in unusual situations. This often allows big applications to return to the "small" 64_32 memory model with its hard limit of 16 GiB, and thus reduce the heap size by another factor 1.8.
Support for interactive document preparation in PIDE
- Document preparation ###
Demo documents for well-known LaTeX styles
- Document preparation ###
Zstd compression for Isabelle/Scala and Isabelle/ML
- Operations for Zstd compression (via Isabelle/Scala):
MLton compiler for x86_64-linux
- The MLton compiler for x86_64-linux has been bundled as Isabelle component, since Ubuntu 22.04 no longer provides a suitable package. Note that on macOS, MLton is readily available via Homebrew: https://formulae.brew.sh/formula/mlton
Isabelle/Scala SSH connections use OpenSSH executables
- Isabelle/Scala SSH connections now use regular OpenSSH executables from the local system: ssh, scp, sftp; the old ssh-java component has been discontinued. This has various practical consequences:
Command-line tool "isabelle log" and option "show_states"
- Command-line tool isabelle log has been refined to support multiple sessions, and to match messages against regular expressions (using Java Pattern syntax).
Display of schematic goal instance
- The instantiation of schematic goals is now displayed explicitly as a list of variable assignments. This works for proof state output, and at the end of a toplevel proof. In rare situations, a proof command or proof method may violate the intended goal discipline, by not producing an instance of the original goal, but there is only a warning, no hard error.
Session ROOT files support 'chapter_definition' entries
- Old-style {* verbatim *} tokens have been discontinued (legacy feature since Isabelle2019). INCOMPATIBILITY, use ‹cartouche› syntax instead.
Release Candidates for Isabelle2022
The official Isabelle2022 release is scheduled for late October 2022. This blog entry is dynamically updated to follow the sequence of public release candidates. See also the isabelle-release repository.
System: Isabelle/Scala is now based on Scala 3
- Isabelle/Scala is now based on Scala 3. This is a completely different compiler ("dotty") and a quite different source language (we are using the classic Java-style syntax, not the new Python-style syntax). Occasional INCOMPATIBILITY, see also the official Scala documentation https://docs.scala-lang.org/scala3/guides/migration/compatibility-intro.html
Isabelle/ML type Bytes.T and XZ compression
- Type Bytes.T supports scalable byte strings, beyond the limit of String.maxSize (approx. 64 MB on 64_32 architecture).
Command-line tools "isabelle hg_sync" and "isabelle sync"
- Command-line tool isabelle hg_sync synchronizes the working directory of a local Mercurial repository with a target directory, using rsync notation for destinations.
Isabelle/VSCode as bundled application
- Isabelle/VSCode Prover IDE ###
Release Candidates for Isabelle2021-1
The official Isabelle2021-1 release is scheduled for December 2021. This blog entry is dynamically updated to follow the sequence of public release candidates. See also the isabelle-release repository.
ML antiquotation "instantiate"
- ML antiquotation "instantiate" allows to instantiate formal entities (types, terms, theorems) with values given ML. This works uniformly for "typ", "term", "prop", "ctyp", "cterm", "cprop", "lemma" --- given as a keyword after the instantiation. A mode "(schematic)" behind the keyword means that some variables may remain uninstantiated (fixed in the specification and schematic in the result); by default, all variables need to be instantiated.
More robust (and more strict) treatment of abstractions within the context
- Term operations under abstractions are now more robust (and more strict) by using the formal proof context in subsequent operations:
Nitpick with external/portable MiniSat
- Nitpick: External solver "MiniSat" is available for all supported Isabelle platforms (including Windows and ARM); while "MiniSat_JNI" only works for Intel Linux and macOS.
Plan for Isabelle2021-1 release
The next anticipated release is Isabelle2021-1 (December 2021): as the distance between two releases is usually 8–10 months, there are sometimes 2 releases per year. This explains the slightly odd name tag, but in all other respects, Isabelle-2021-1 should be a perfectly normal official release.
Improper proof command 'guess' provided by separate theory "Pure-ex.Guess"
- The improper proof command guess is no longer part of by Pure, but provided by the separate theory Pure-ex.Guess. INCOMPATIBILITY, existing applications need to import session Pure-ex and theory Pure-ex.Guess. Afterwards it is usually better eliminate the guess command, using explicit obtain instead.
ML antiquotations for object-logic judgement
- ML antiquotations make_judgment and dest_judgment refer to corresponding functions for the object-logic of the ML compilation context. This supersedes older mk_Trueprop / dest_Trueprop operations.
ML antiquotations for type constructors and term constants
- ML antiquotations for type constructors and term constants:
Isabelle/ML "build" combinators
- The build combinators of various data structures help to build content from bottom-up, by applying an add function the empty value. For example:
Scalable operations for Thm.instantiate and Thm.generalize
- ML structures TFrees, TVars, Frees, Vars, Names provide scalable operations to accumulate items from types and terms, using a fast syntactic order. The original order of occurrences may be recovered as well, e.g. via TFrees.list_set.
Configuration option "show_results"
- Configuration option "show_results" controls output of final results in commands like 'definition' or 'theorem'. Output is normally enabled in interactive mode, but it could occasionally cause unnecessary slowdown. It can be disabled like this:
Bundles for lattice syntax
- Theory HOL-Library.Lattice_Syntax has been superseded by bundle lattice_syntax: it can be used in a local context via include or in a global theory via unbundle. The opposite declarations are bundled as no_lattice_syntax. Minor INCOMPATIBILITY.
Localized commands 'syntax' and 'no_syntax'
- Commands syntax and no_syntax now work in a local theory context, but there is no proper way to refer to local entities --- in contrast to notation and no_notation. Local syntax works well with bundle, e.g. see lattice_syntax vs. no_lattice_syntax in theory Main of Isabelle/HOL.
Isabelle/Scala improvements
- Each Isabelle component may specify a Scala/Java jar module declaratively via etc/build.props (file names are relative to the component directory). E.g. see $ISABELLE_HOME/etc/build.props with further explanations in the system manual.
Reactivated ML profiling
- ML profiling has been updated and reactivated, after some degration in
Isabelle2021:
More predefined Isabelle symbols
- More symbol definitions for the Z Notation (Isabelle fonts and LaTeX). See also the group "Z Notation" in the Symbols dockable of Isabelle/jEdit.
System options short form (e.g. "-o document")
- System option system_log specifies an optional log file for internal messages produced by Output.system_message in Isabelle/ML; the value true refers to console progress of the build job. This works for isabelle build or any derivative of it.
High-quality blackboard-bold symbols
- Document preparation ###
Remote provers from SystemOnTPTP via Isabelle/Scala
- Remote provers from SystemOnTPTP (notably for Sledgehammer) are now managed via Isabelle/Scala instead of perl; the dependency on libwww-perl has been eliminated (notably on Linux). Rare INCOMPATIBILITY: HTTP proxy configuration now works via JVM properties https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/doc-files/net-properties.html
Improved LaTeX typesetting of ‹...›
- Document preparation ###
Clarified timeouts for Isabelle/ML tools
- Timeouts for Isabelle/ML tools are subject to system option timeout_scale --- this already used for the overall session build process before, and allows to adapt to slow machines. The underlying Timeout.apply in Isabelle/ML treats an original timeout specification 0 as no timeout; before it meant immediate timeout. Rare INCOMPATIBILITY in boundary cases.
External bash processes are always managed by Isabelle/Scala
- External bash processes are always managed by Isabelle/Scala, in contrast to Isabelle2021 where this was only done for macOS on Apple Silicon.
Improved GUI look-and-feel
- Isabelle/jEdit Prover IDE ###
Isabelle/jEdit action "isabelle.goto-entity"
- Isabelle/jEdit Prover IDE ###
Message logs from session build database
- The command-line tool isabelle log prints prover messages from the build database of the given session, following the the order of theory sources, instead of erratic parallel evaluation. Consequently, the session log file is restricted to system messages of the overall build process, and thus becomes more informative.
Release Candidates for Isabelle2021
The official Isabelle2021 release is scheduled for February 2021. This blog entry is dynamically updated to follow the sequence of public release candidates. See also the workboard and the isabelle-release repository.
Document antiquotation for Isabelle tools
- Document preparation ###
PDF/HTML presentation in Isabelle/Scala, based on session build database
- The command-line tool isabelle build provides option -P DIR to produce PDF/HTML presentation in the specified directory; -P: refers to the standard directory according to ISABELLE_BROWSER_INFO / ISABELLE_BROWSER_INFO_SYSTEM settings. Generated PDF documents are taken from the build database -- from this or earlier builds with option document=pdf.
Experimental support for arm64-linux platform
- Experimental support for arm64-linux platform. The reference platform is Raspberry Pi 4 with 8 GB RAM running Pi OS (64 bit).
Update external prover components for Sledgehammer etc.
- Update/rebuild external provers on currently supported OS platforms, notably E prover 2.5, SPASS 3.8ds, CSDP 6.1.1.
Include veriT component for "smt" method
- An updated version of the veriT solver is now included as Isabelle component. It can be used in the smt proof method via smt (verit) or via declare [[smt_solver = verit]] in the context; see also session HOL-Word-SMT_Examples.
Document preparation engine updates
- Document preparation ###
Plan for Isabelle2021 release
The next anticipated release is Isabelle2021 (February 2021). The hot phase with release candidates will presumably be 28-Dec-2020 .. 15-Feb-2020.
Nitpick/Kodkod may be invoked directly within the running Isabelle/Scala session
- Nitpick/Kodkod may be invoked directly within the running Isabelle/Scala session (instead of an external Java process): this improves reactivity and saves resources. This experimental feature is guarded by system option kodkod_scala (default: false).
User-defined Isabelle server commands via isabelle_scala_service
- Isabelle server allows user-defined commands via isabelle_scala_service.
More systematic support for special directories
- The shell function isabelle_directory (within etc/settings of components) augments the list of special directories for persistent symbolic path names. This improves portability of heap images and session databases. It used to be hard-wired for Isabelle + AFP, but other projects may now participate on equal terms.
Improved monitoring for Isabelle/ML and Java
- Isabelle/jEdit Prover IDE ###
ML statistics via an external Poly/ML process
- ML statistics via an external Poly/ML process: this allows monitoring the runtime system while the ML program sleeps.
Theory_Data extend operation is obsolete and needs to be the identity function
- Theory_Data extend operation is obsolete and needs to be the identity function; merge should be conservative and not reset to the empty value. Subtle INCOMPATIBILITY and change of semantics (due to Theory.join_theory from Isabelle2020). Special extend/merge behaviour at the begin of a new theory can be achieved via Theory.at_begin.
System option pide_session is enabled by default
- System option "pide_session" is enabled by default, notably for standard "isabelle build": it allows to invoke Isabelle/Scala operations from Isabelle/ML. Big build jobs (e.g. AFP) require extra heap space for the java process, e.g. like this in $ISABELLE_HOME_USER/etc/settings:
Update of Isabelle/jEdit to jedit-5.6pre1
- Isabelle/jEdit Prover IDE ###
Antiquotations for Isabelle systems programming
- Document preparation ###
Update of Isabelle/Phabricator setup
- Isabelle/Phabricator setup has been updated to follow ongoing development: libphutil has been discontinued. Minor INCOMPATIBILITY: existing server installations should remove libphutil from /usr/local/bin/isabelle-phabricator-upgrade and each installation root directory (e.g. /var/www/phabricator-vcs/libphutil).
Command-line tool "isabelle sessions"
- The command-line tool "isabelle sessions" explores the structure of Isabelle sessions and prints result names in topological order (on stdout).
Slightly improved isabelle build_docker tool
- The command-line tool isabelle build_docker has been slightly improved: it is now properly documented in the system manual.
Mixfix annotations may use single-quote-space as documented
- Mixfix annotations may use "' " (single quote followed by space) to separate delimiters (as documented in the isar-ref manual), without requiring an auxiliary empty block. A literal single quote needs to be escaped properly. Minor INCOMPATIBILITY.
Support Java/VM monitoring via jconsole
- Isabelle/jEdit Prover IDE ###
Isabelle/jEdit actions and shortcuts for tooltips, messages, error positions
- Isabelle/jEdit Prover IDE ###
Release Candidates for Isabelle2020
The official Isabelle2020 release is scheduled for April 2020. This blog entry is dynamically updated to follow the sequence of public release candidates.
Command-line tool "isabelle scala_project"
- The command-line tool "isabelle scala_project" creates a Gradle project configuration for Isabelle/Scala/jEdit, to support Scala IDEs such as IntelliJ IDEA.
Plan for Isabelle2020 release
The next anticipated release is Isabelle2020 (April 2020). The hot phase with release candidates will presumably be 01-Mar-2020 .. 15-Apr-2020.
Command-line tool "isabelle hg_setup"
- The command-line tool "isabelle hg_setup" simplifies the setup of Mercurial repositories, with hosting via Phabricator or SSH file server access.
Isabelle/Phabricator setup
- The command-line tool "isabelle phabricator_setup" facilitates self-hosting of the Phabricator software-development platform, with support for Git, Mercurial, Subversion repositories. This helps to avoid monoculture and to escape the gravity of centralized version control by Github and/or Bitbucket. For further documentation, see chapter "Phabricator server administration" in the "system" manual. A notable example installation is https://isabelle-dev.sketis.net/.