Releases: LS-Lab/KeYmaeraX-release
Version 5.0.1
Version 5.0.1 provides bug fixes and a tactic to prepare quantifier elimination queries.
- [Tactics] tactic
prepareQE
with heuristics for equality rewriting, introducing abbreviations, and forming the universal closure of a sequent - [Tactics] tactic
rcf
to complete a query with an external tool - [Tactics] tactic
qe
combinesprepareQE
andrcf
.
Version 5.0
Version 5.0 provides a definition package for user-defined functions, major parser rewrite, keyboard shortcuts during proofs, tactic performance improvements, and tool improvements.
-
Definitions: adds support for user-defined functions whose graphs can be implicitly characterized by dL formulas, such as the exponential and trigonometric functions, as solutions of differential equations. Properties of those user-defined functions can be proved using dL's differential equation reasoning principles. A high-level interface for defining functions and non-soundness-critical tactics automate low-level reasoning over implicit characterizations in hybrid system proofs. Builtin definitions that can be used out of the box in models include
exp
,sin
,cos
,Pi
, andE
. -
UI: keyboard shortcuts for common proof tasks (customizable through
.keymaerax/hotkeys.js
file in home directory) -
Parser: complete parser re-implementation with support for user-defined functions, full tactic support in web UI parsing
-
Tactics: performance improvement with builtin forward tactics replacing (some) interpreted tactics
-
Tools: command line conversion tools from KeYmaera X format to SMT-Lib format (
-convert kyx2smt
) and Wolfram format (-convert kyx2mat
) -
Tools: improved Z3-based simplifier
Version 4.9.9
Version 4.9.9 provides UI bug fixes and some tactic performance improvements
- UI: get invariant generator (Pegasus) suggestions in dC dialog
- Docker container: Matlab support
- Tactics: bug fixes for definition expansion
- Tactics: faster forward implementation of several frequently used tactics
- Security update: log4j 2.17.1
Version 4.9.8
Version 4.9.8 provides a security patch and tactic implementation updates:
- Security patch: Log4j 2.15.0 (addresses CVE-2021-44228)
- Tactics: forward-style implementation of unification calculus tactics
Version 4.9.7
Version 4.9.7 provides support for switched systems, a fixpoint tactic for hybrid games, as well as UI and robustness improvements:
- Switched systems: hybrid automaton modeler
- Tactics: new stability and attractivity tactics for switched systems
- Tactics: new fixpoint tactic for hybrid games
- UI: tactic and model editor bug fixes
- UI: browse all tactics
- Code generator: export definitions
Version 4.9.6
Version 4.9.6 provides UI and robustness improvements.
- UI: tactic editor improvements, run tactics from editor gutter
- UI: save models while editing
- Code export: ModelPlex to Python
- Tactic: support for uninterpreted function symbols of arity>0 in QE
- Parser: improved error messages for program constants
Version 4.9.5
Version 4.9.5 provides improved interaction between tactics editing and sequent view.
- UI: selected tab gets highlighted in tactic editor, cursor position switches tabs
- UI: proof state displayed below tactic editor according to cursor position
- UI: formula icons ("eye") to configure positive-mention "using" by mouse
- UI: fast manual QE/CEX exploration with temporary formula hiding ("eye")
- Tactics: differential cut for constant quantities, e.g.,
dC("x^2+y^2=const()", 1)
- Docker container with KeYmaera X server
Version 4.9.4
Version 4.9.4 provides an improved definitions UI to supply proof parameters and modeling assumptions,
more robust tactic recording with formula search locators everywhere, tactic branch labels,
as well as backend tool and parser updates.
- UI: tactic syntax highlighting, executing custom tactics from tactic editor with alt-click (atomic) or shift-click (step-by-step)
- Tactics: positive-mention
"using"
, e.g.QE using "x>0 :: x>=0 :: nil"
- Tactics: formula search locators when recording tactics
- Tactics: search locator notation
#...#
to identify sub-positions, e.g.,dI('R=="x>=0 -> #[{x'=1}]x>=0#")
- Tactics: branch labels and case matching,
e.g.,loop("J", 'R=="[{a;}*]S") <( "Init": r, "Use": s, "Step": t )
to execute tacticr
on branch"Init"
etc.
e.g.,andR('R=="x>=0 & y<=2") <( "x>=0": s, "y<=2": t )
to execute tactics
on branch"x>=0"
etc. - Tactics: better support for differential symbols in quantifiers
- Tactics: improved ODE support for stability proofs
- Backend: support for Mathematica 12.2 and 12.3 (MacOS)
Version 4.9.3
Version 4.9.3 provides a substantially updated ModelPlex UI and core/parser updates.
- [ModelPlex] Web UI for ModelPlex process, artifacts, code export, and proofs
- [Core] Barcan axiom to commute quantifiers with program postconditions
- [Parser] vectorial taboos in systems/programs/functionals/predicationals
- [UI] Lemma UI bug fixes
Version 4.9.2
Version 4.9.2 provides ODE liveness tactics, constructive game logic, a preview of a new proof language Kaisar, and UI improvements.
- [UI] ODE liveness tactics accessible from ODE menu
- [UI] Extended tactic menus: simplify, expand special function symbols, abbreviate terms, alpha-rename, extended tactics for hybrid programs and differential equations
- [UI] Tactic application from menu: position selection dialog, alt/option click in menu to apply tactics at the first applicable position without selection
- [UI] Live syntax checking in model upload dialog
- [Tactic] ODE liveness tactics: differential variant to prove ODE progress, ODE unification to combine evolution domain constraints, diamond ODE postcondition refinement, and diamond ODE evolution domain constraint refinement
- [Tactic] Improved use of semantic renaming allows applying axioms and tactics despite the presence of program/game constants, e.g.
[x:=*;][a;]x>=0
turns into\forall x [a;]x>=0
- [Tactic] Alpha-rename bound occurrences of variables, e.g., knowing
x=y
, rename[{x'=x}]x>=0
to[{y'=y}]y>=0
- [Logic] Constructive differential game logic
- [Preview] New proof language Kaisar
- [Backend] Real-arithmetic witnesses with sum-of-squares solver, accessible from the tools menu