case class Context(s: Statement) extends Product with Serializable
- Alphabetic
- By Inheritance
- Context
- Serializable
- Serializable
- Product
- Equals
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
def
--(other: Context): Context
Compute the "difference" between two contexts.
Compute the "difference" between two contexts. A "difference" only exists if the underlying statement of other is a "prefix" of this, and consists of statements in this which remain after deleting the prefix other. When this is a branching proof (e.g. Switch), we consider other a prefix even if other is currently proving some branch of the switch. An exception is thrown if the difference does not exist.
-
def
:+(other: Statement): Context
Add s to the "end" of the context.
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
add(x: Ident, fml: Formula): Context
Add an assumption to the context
-
def
asElaborationContext: Context
Clone this context with the elaboration flag set
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
- def bakePhi: Context
-
def
clone(): Context
Copy this context to provide persistent interface
Copy this context to provide persistent interface
- Definition Classes
- Context → AnyRef
-
def
contains(id: Ident): Boolean
Does the context contain a fact named id?
- def deletePhi: Context
- def elabFunctionETF(node: ASTNode): ExpressionTraversalFunction
- def elaborateFunctions(pt: ProofTerm, node: ASTNode): ProofTerm
- def elaborateFunctions(e: Expression, node: ASTNode): Expression
- def elaborateFunctions(prog: Program, node: ASTNode): Program
- def elaborateFunctions(fml: Formula, node: ASTNode): Formula
-
def
elaborateFunctions(f: Term, node: ASTNode): Term
Elaborate user-defined functions in an expression
- def elaborateStable(pt: ProofTerm): ProofTerm
- def elaborateStable(e: Expression): Expression
- def elaborateStable(f: Term): Term
-
def
elaborateStable(f: Formula): Formula
Final elaboration step used in proof-checker.
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
- def findAll(cq: ContextQuery): ContextResult
-
def
fresh(ident: String = ghostVar): Ident
- returns
A proof variable name which is not bound in the context.
- def get(id: Ident, wantProgramVar: Boolean = false, isSound: Boolean = true): Option[Formula]
-
def
getAssignments(x: Variable): List[Formula]
Return all assignments which mention any variant of "x"
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def getFor: Option[For]
- def getHere(id: Ident, wantProgramVar: Boolean = false): Option[Formula]
- def getMentions(x: Variable): List[Formula]
-
def
ghost(f: Formula): Context
Bind the next ghost variable to formula f
- def inferGuardDelta(asrt: Assert): Term
-
def
isElaborationContext: Boolean
Does this context represent an elaboration pass?
- def isEmpty: Boolean
-
def
isGhost: Boolean
Are we checking a statement which appears as a forward ghost?
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
isInverseGhost: Boolean
Are we checking a statement which appears as an inverse ghost?
-
def
lastBlock: Block
Used in proof statements such as ProveODE which have not only implicit assumptions but which need to consider immediately preceding assignments.
Used in proof statements such as ProveODE which have not only implicit assumptions but which need to consider immediately preceding assignments. The lastBlock can include straight-line assignments and facts, which may appear ghosted or unghosted.
- def lastBlockSmall: Block
-
def
lastFact: Option[(IdentPat, Formula, Formula)]
The most recently proven fact in a context.
The most recently proven fact in a context. Fact is returned as (ident, unelaboratedFml, elaboratedFml)
- def lastFacts: List[(IdentPat, Formula, Formula)]
-
def
location: Option[Int]
Recover the "current" line and column number using the position information of the underlying statement
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- var outer: Context
-
def
programSignature: Map[ProgramConst, Program]
The set of program symbols defined in a statement.
The set of program symbols defined in a statement. This includes symbols which are defined under a branch or under a binder.
- def rawLastFact: Option[(IdentPat, Formula)]
-
def
reapply(s: Statement): Context
Convert input s to a context, but remember the metadata from this context
- val s: Statement
-
def
searchAll(cq: ContextQuery, tabooProgramVars: Set[Variable], tabooFactVars: Set[Ident]): ContextResult
Look up definitions of a proof variable, starting with the most recent.
Look up definitions of a proof variable, starting with the most recent. tabooProgramVars are for soundness, tabooFactVars are to avoid duplicate lookup results
- def sideEffect(s: Statement): Unit
-
def
signature: Map[Function, LetSym]
The set of function symbols defined in a statement.
The set of function symbols defined in a statement. This includes symbols which are defined under a branch or under a binder.
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
unify(pat: Expression): Option[(Option[Ident], Formula)]
Return first fact that unifies with a pattern, if any.
-
def
unifyAll(pat: Expression): ContextResult
return all facts that unify with a given pattern
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
def
withGhost: Context
Clone this context but indicate that we are checking a ghost statement
-
def
withInverseGhost: Context
Clone this context but indicate that we are checking an inverse ghost statement
-
def
withOuter: Context
Remember the current context as the outer context before a recursive traversal
-
def
withoutGhost: Context
Clone this context but indicate that we are checking a normal statement
KeYmaera X: An aXiomatic Tactical Theorem Prover
KeYmaera X is a theorem prover for differential dynamic logic (dL), a logic for specifying and verifying properties of hybrid systems with mixed discrete and continuous dynamics. Reasoning about complicated hybrid systems requires support for sophisticated proof techniques, efficient computation, and a user interface that crystallizes salient properties of the system. KeYmaera X allows users to specify custom proof search techniques as tactics, execute tactics in parallel, and interface with partial proofs via an extensible user interface.
http://keymaeraX.org/
Concrete syntax for input language Differential Dynamic Logic
Package Structure
Main documentation entry points for KeYmaera X API:
edu.cmu.cs.ls.keymaerax.core- KeYmaera X kernel, proof certificates, main data structuresExpression- Differential dynamic logic expressions:Term,Formula,ProgramSequent- Sequents of formulasProvable- Proof certificates transformed by rules/axiomsRule- Proof rules as well asUSubstOnefor (one-pass) uniform substitutions and renaming.StaticSemantics- Static semantics with free and bound variable analysisKeYmaeraXParser.edu.cmu.cs.ls.keymaerax.parser- Parser and pretty printer with concrete syntax and notation for differential dynamic logic.KeYmaeraXPrettyPrinter- Pretty printer producing concrete KeYmaera X syntaxKeYmaeraXParser- Parser reading concrete KeYmaera X syntaxKeYmaeraXArchiveParser- Parser reading KeYmaera X model and proof archive.kyxfilesDLParser- Combinator parser reading concrete KeYmaera X syntaxDLArchiveParser- Combinator parser reading KeYmaera X model and proof archive.kyxfilesedu.cmu.cs.ls.keymaerax.infrastruct- Prover infrastructure outside the kernelUnificationMatch- Unification algorithmRenUSubst- Renaming Uniform Substitution quickly combining kernel's renaming and substitution.Context- Representation for contexts of formulas in which they occur.Augmentors- Augmenting formula and expression data structures with additional functionalityExpressionTraversal- Generic traversal functionality for expressionsedu.cmu.cs.ls.keymaerax.bellerophon- Bellerophon tactic language and tactic interpreterBelleExpr- Tactic language expressionsSequentialInterpreter- Sequential tactic interpreter for Bellerophon tacticsedu.cmu.cs.ls.keymaerax.btactics- Bellerophon tactic library for conducting proofs.TactixLibrary- Main KeYmaera X tactic library including many proof tactics.HilbertCalculus- Hilbert Calculus for differential dynamic logicSequentCalculus- Sequent Calculus for propositional and first-order logicHybridProgramCalculus- Hybrid Program Calculus for differential dynamic logicDifferentialEquationCalculus- Differential Equation Calculus for differential dynamic logicUnifyUSCalculus- Unification-based uniform substitution calculus underlying the other calculi[edu.cmu.cs.ls.keymaerax.btactics.UnifyUSCalculus.ForwardTactic ForwardTactic]- Forward tactic framework for conducting proofs from premises to conclusionsedu.cmu.cs.ls.keymaerax.lemma- Lemma mechanismLemma- Lemmas are Provables stored under a name, e.g., in files.LemmaDB- Lemma database stored in files or database etc.edu.cmu.cs.ls.keymaerax.tools.qe- Real arithmetic back-end solversMathematicaQETool- Mathematica interface for real arithmetic.Z3QETool- Z3 interface for real arithmetic.edu.cmu.cs.ls.keymaerax.tools.ext- Extended back-ends for noncritical ODE solving, counterexamples, algebra, simplifiers, etc.Mathematica- Mathematica interface for ODE solving, algebra, simplification, invariant generation, etc.Z3- Z3 interface for real arithmetic including simplifiers.Entry Points
Additional entry points and usage points for KeYmaera X API:
edu.cmu.cs.ls.keymaerax.launcher.KeYmaeraX- Command-line launcher for KeYmaera X supports command-line argument-helpto obtain usage informationedu.cmu.cs.ls.keymaerax.btactics.AxIndex- Axiom indexing data structures with keys and recursors for canonical proof strategies.edu.cmu.cs.ls.keymaerax.btactics.DerivationInfo- Meta-information on all derivation steps (axioms, derived axioms, proof rules, tactics) with user-interface info.edu.cmu.cs.ls.keymaerax.bellerophon.UIIndex- Index determining which canonical reasoning steps to display on the KeYmaera X User Interface.edu.cmu.cs.ls.keymaerax.btactics.Ax- Registry for derived axioms and axiomatic proof rules that are proved from the core.References
Full references on KeYmaera X are provided at http://keymaeraX.org/. The main references are the following:
1. André Platzer. A complete uniform substitution calculus for differential dynamic logic. Journal of Automated Reasoning, 59(2), pp. 219-265, 2017.
2. Nathan Fulton, Stefan Mitsch, Jan-David Quesel, Marcus Völp and André Platzer. KeYmaera X: An axiomatic tactical theorem prover for hybrid systems. In Amy P. Felty and Aart Middeldorp, editors, International Conference on Automated Deduction, CADE'15, Berlin, Germany, Proceedings, volume 9195 of LNCS, pp. 527-538. Springer, 2015.
3. André Platzer. Logical Foundations of Cyber-Physical Systems. Springer, 2018. Videos