class
CoasterXProver extends AnyRef
Instance Constructors
-
new
CoasterXProver(spec: CoasterXSpec, env: AccelEnvelope, reuseComponents: Boolean = true, countSteps: Boolean = false, debugLevel: Int = 1, useNaive: Boolean)
Value Members
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: Any): Boolean
-
val
DEBUG_SECTION: Option[Int]
-
val
MAX_TIMEFN_DEPTH: Int
-
def
apply(fileName: String): ProvableSig
-
def
arcProofQ1: ProvableSig
-
def
arcProofQ1CCW: ProvableSig
-
def
arcProofQ2: ProvableSig
-
def
arcProofQ2CCW: ProvableSig
-
def
arcProofQ3: ProvableSig
-
def
arcProofQ3CW: ProvableSig
-
def
arcProofQ4: ProvableSig
-
def
arcProofQ4CW: ProvableSig
-
final
def
asInstanceOf[T0]: T0
-
def
clone(): AnyRef
-
def
coHideL(is: List[Int], pr: ProvableSig): BelleExpr
-
def
coHideL(i: Int, pr: ProvableSig): BelleExpr
-
def
coHideLPr(i: Int, pr: ProvableSig): ProvableSig
-
def
componentTactic(pr: ProvableSig, p1: TPoint, p2: TPoint, section: Section, v: Term, yInit: Term, i: Int, nSections: Int, initD: TPoint): ProvableSig
-
var
currTimefnDepth: Int
-
final
def
eq(arg0: AnyRef): Boolean
-
def
equals(arg0: Any): Boolean
-
def
finalize(): Unit
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
def
hideYs(iSection: Int, nSections: Int): (BelleExpr, Int)
-
def
hideYsAfter(iSection: Int, nSections: Int, yDefStart: Int = 2): (BelleExpr, Int)
-
def
interpret(e: BelleExpr, pr: ProvableSig): ProvableSig
-
def
invImpliesPost(pr: ProvableSig, nSections: Int): ProvableSig
-
def
invariant(align: (AFile, Formula), env: AccelEnvelope): Formula
-
final
def
isInstanceOf[T0]: Boolean
-
var
lemmaDB: LemmaDB
-
final
def
ne(arg0: AnyRef): Boolean
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
def
preImpliesInv(pr: ProvableSig, nSections: Int): ProvableSig
-
def
proveAllComponents(global: ProvableSig, locals: List[ProvableSig], points: List[(Term, Term)], segments: List[Section], v: Term, yInit: Term, i: Int, nSections: Int, initsD: List[TPoint]): ProvableSig
-
def
proveArcArith(pr: ProvableSig, theta1: Number, deltaTheta: Number, bl: TPoint, tr: TPoint, iSection: Int, nSections: Int): ProvableSig
-
def
proveConjs(f: (Int, ProvableSig) ⇒ ProvableSig, pr: ProvableSig, conjDepth: Int, conjI: Int = 0): ProvableSig
-
def
proveLineArith(pr: ProvableSig, bl: TPoint, tr: TPoint, iSection: Int, nSections: Int): ProvableSig
-
def
proveLineArithFromDW(pr: ProvableSig, bl: TPoint, tr: TPoint, iSection: Int, nSections: Int): ProvableSig
-
def
provePosts(pr: ProvableSig, fml: Formula, p1: TPoint, p2: TPoint, section: Section, v: Number, yInit: Term, i: Int, j: Int, nSections: Int, initD: TPoint): BelleExpr
-
def
quad1CCWTactic(pr: ProvableSig, p1: TPoint, p2: TPoint, bl: TPoint, tr: TPoint, v0: Term, yInit: Term, theta1: Number, deltaTheta: Number, nYs: Int, iSection: Int): ProvableSig
-
def
quad1CWTactic(pr: ProvableSig, p1: TPoint, p2: TPoint, bl: TPoint, tr: TPoint, v0: Term, yInit: Term, theta1: Number, deltaTheta: Number, nYs: Int, iSection: Int): ProvableSig
-
def
quad2CCWTactic(pr: ProvableSig, p1: TPoint, p2: TPoint, bl: TPoint, tr: TPoint, v0: Term, yInit: Term, theta1: Number, deltaTheta: Number, nYs: Int, iSection: Int): ProvableSig
-
def
quad2CWTactic(pr: ProvableSig, p1: TPoint, p2: TPoint, bl: TPoint, tr: TPoint, v0: Term, yInit: Term, theta1: Number, deltaTheta: Number, nYs: Int, iSection: Int): ProvableSig
-
def
quad3CCWTactic(pr: ProvableSig, p1: TPoint, p2: TPoint, bl: TPoint, tr: TPoint, v0: Term, yInit: Term, theta1: Number, deltaTheta: Number, nYs: Int, iSection: Int): ProvableSig
-
def
quad3CWTactic(pr: ProvableSig, p1: TPoint, p2: TPoint, bl: TPoint, tr: TPoint, v0: Term, yInit: Term, theta1: Number, deltaTheta: Number, nYs: Int, iSection: Int): ProvableSig
-
def
quad4CCWTactic(pr: ProvableSig, p1: TPoint, p2: TPoint, bl: TPoint, tr: TPoint, v0: Term, yInit: Term, theta1: Number, deltaTheta: Number, nYs: Int, iSection: Int): ProvableSig
-
def
quad4CWTactic(pr: ProvableSig, p1: TPoint, p2: TPoint, bl: TPoint, tr: TPoint, v0: Term, yInit: Term, theta1: Number, deltaTheta: Number, nYs: Int, iSection: Int): ProvableSig
-
def
resetLemmaDB(): Unit
-
def
rotAnte(pr: ProvableSig): ProvableSig
-
def
sectionTactic(pr: ProvableSig, p1: TPoint, p2: TPoint, v0: Term, yInit: Term, section: Section, iSection: Int, nSections: Int, initD: TPoint): ProvableSig
-
def
selectSection(iSection: Int, nSections: Int, pr: ProvableSig): ProvableSig
-
def
splitComponents(pr: ProvableSig, i: Int = 0): (ProvableSig, List[ProvableSig])
-
def
storeLemma(fact: ProvableSig, name: Option[String]): String
-
def
straightProofDown: ProvableSig
-
def
straightProofUp: ProvableSig
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
timeFn[T](msg: String, f: () ⇒ T): T
-
def
toString(): String
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
Inherited from AnyRef
Inherited from Any
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