object DLParser extends DLParser
Differential Dynamic Logic parser reads input strings in the concrete syntax of differential dynamic logic of KeYmaera X.
Parsing formulas from strings is straightforward using edu.cmu.cs.ls.keymaerax.parser.KeYmaeraXParser.apply:
val parser = DLParser val fml0 = parser("x!=5") val fml1 = parser("x>0 -> [x:=x+1;]x>1") val fml2 = parser("x>=0 -> [{x'=2}]x>=0") // parse only formulas val fml3 = parser.formulaParser("x>=0 -> [{x'=2}]x>=0") // parse only programs/games val prog1 = parser.programParser("x:=x+1;{x'=2}") // parse only terms val term1 = parser.termParser("x^2+2*x+1")
- See also
- Alphabetic
- By Inheritance
- DLParser
- DLParser
- Parser
- Function1
- 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
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
ambiguousBaseF[_](implicit arg0: P[Any]): P[Formula]
- Definition Classes
- DLParser
-
def
andThen[A](g: (Expression) ⇒ A): (String) ⇒ A
- Definition Classes
- Function1
- Annotations
- @unspecialized()
-
def
annotation[_](implicit arg0: P[Any]): P[Seq[Formula]]
Parses an annotation
Parses an annotation
- Definition Classes
- DLParser
-
def
annotationListener: (Program, Formula) ⇒ Unit
Returns the annotation listener.
-
def
apply(input: String): Expression
Parse the input string in the concrete syntax as a differential dynamic logic expression
Parse the input string in the concrete syntax as a differential dynamic logic expression
- input
the string to parse as a dL formula, dL term, or dL program.
- Definition Classes
- DLParser → Parser → Function1
- Exceptions thrown
ParseException
ifinput
is not a well-formed expression of differential dynamic logic or differential game logic.
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
assign[_](implicit arg0: P[Any]): P[AtomicProgram]
- Definition Classes
- DLParser
-
def
atomicDP[_](implicit arg0: P[Any]): P[AtomicDifferentialProgram]
- Definition Classes
- DLParser
-
def
backImplication[_](implicit arg0: P[Any]): P[Formula]
- Definition Classes
- DLParser
-
def
baseF[_](implicit arg0: P[Any]): P[Formula]
Base formulas
Base formulas
- Definition Classes
- DLParser
-
def
baseP[_](implicit arg0: P[Any]): P[Program]
- Definition Classes
- DLParser
-
def
baseTerm[_](doAmbigCuts: Boolean)(implicit arg0: P[Any]): P[Term]
- Definition Classes
- DLParser
-
def
baseVariable[_](implicit arg0: P[Any]): P[BaseVariable]
- Definition Classes
- DLParser
-
def
biimplication[_](implicit arg0: P[Any]): P[Formula]
- Definition Classes
- DLParser
-
def
blank[_](implicit arg0: P[Any]): P[Unit]
Explicit nonempty whitespace terminal.
Explicit nonempty whitespace terminal.
- Definition Classes
- DLParser
-
def
braceP[_](implicit arg0: P[Any]): P[Program]
- Definition Classes
- DLParser
-
def
choice[_](implicit arg0: P[Any]): P[Program]
- Definition Classes
- DLParser
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
def
comparator[_](implicit arg0: P[Any]): P[Unit]
- Definition Classes
- DLParser
-
def
comparison[_](implicit arg0: P[Any]): P[Formula]
Parses a comparison, given the left-hand term
Parses a comparison, given the left-hand term
- Definition Classes
- DLParser
-
def
compose[A](g: (A) ⇒ String): (A) ⇒ Expression
- Definition Classes
- Function1
- Annotations
- @unspecialized()
-
def
conjunct[_](implicit arg0: P[Any]): P[Formula]
- Definition Classes
- DLParser
-
def
diff[_](left: Term)(implicit arg0: P[Any]): P[Term]
Parses term'
Parses term'
- Definition Classes
- DLParser
-
def
diffExercise[_](implicit arg0: P[Any]): P[DifferentialProgramConst]
- Definition Classes
- DLParser
-
def
diffProduct[_](implicit arg0: P[Any]): P[DifferentialProgram]
- Definition Classes
- DLParser
-
def
diffProgram[_](implicit arg0: P[Any]): P[DifferentialProgram]
diffProgram: Parses a dL differential program.
diffProgram: Parses a dL differential program.
- Definition Classes
- DLParser
-
def
diffProgramSymbol[_](implicit arg0: P[Any]): P[DifferentialProgramConst]
- Definition Classes
- DLParser
-
def
diffVariable[_](implicit arg0: P[Any]): P[DifferentialSymbol]
- Definition Classes
- DLParser
-
val
differentialProgramParser: (String) ⇒ DifferentialProgram
Parse the input string in the concrete syntax as a differential dynamic logic differential program
-
def
disjunct[_](implicit arg0: P[Any]): P[Formula]
- Definition Classes
- DLParser
-
def
dot[_](implicit arg0: P[Any]): P[DotTerm]
.
or._2
: dot parsing.
or._2
: dot parsing- Definition Classes
- DLParser
-
def
dual[_](implicit arg0: P[Any]): P[Program]
Parses dual notation: baseP or baseP^@
Parses dual notation: baseP or baseP^@
- Definition Classes
- DLParser
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
val
exprParser: (String) ⇒ Expression
Parse the input string in the concrete syntax as a differential dynamic logic expression
Parse the input string in the concrete syntax as a differential dynamic logic expression
- Definition Classes
- DLParser
-
def
expression[_](implicit arg0: P[Any]): P[Expression]
- Definition Classes
- DLParser
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
def
formula[_](implicit arg0: P[Any]): P[Formula]
- Definition Classes
- DLParser
-
val
formulaParser: (String) ⇒ Formula
Parse the input string in the concrete syntax as a differential dynamic logic formula
-
def
fullDifferentialProgram[_](implicit arg0: P[Any]): P[DifferentialProgram]
- Definition Classes
- DLParser
-
def
fullExpression[_](implicit arg0: P[Any]): P[Expression]
- Definition Classes
- DLParser
-
def
fullFormula[_](implicit arg0: P[Any]): P[Formula]
- Definition Classes
- DLParser
-
def
fullProgram[_](implicit arg0: P[Any]): P[Program]
- Definition Classes
- DLParser
-
def
fullSequent[_](implicit arg0: P[Any]): P[Sequent]
- Definition Classes
- DLParser
-
def
fullSequentList[_](implicit arg0: P[Any]): P[List[Sequent]]
- Definition Classes
- DLParser
-
def
fullTerm[_](implicit arg0: P[Any]): P[Term]
- Definition Classes
- DLParser
-
def
function[_](doAmbigCuts: Boolean)(implicit arg0: P[Any]): P[FuncOf]
- Definition Classes
- DLParser
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
ident[_](implicit arg0: P[Any]): P[(String, Option[Int])]
parse an identifier.
parse an identifier.
- returns
the name and its index (if any).
- Definition Classes
- DLParser
- Note
Index is normalized so that x_00 cannot be mentioned and confused with x_0.
,Keywords are not allowed as identifiers.
-
def
ifthen[_](implicit arg0: P[Any]): P[Program]
- Definition Classes
- DLParser
-
def
implication[_](implicit arg0: P[Any]): P[Formula]
- Definition Classes
- DLParser
-
def
integer[_](implicit arg0: P[Any]): P[Int]
"-532": Parse an integer literal, unnormalized.
"-532": Parse an integer literal, unnormalized.
- Definition Classes
- DLParser
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
keywords: Set[String]
matches keywords.
matches keywords. An identifier cannot be a keyword.
- Definition Classes
- DLParser
-
def
multiplicand[_](doAmbigCuts: Boolean)(implicit arg0: P[Any]): P[Term]
- Definition Classes
- DLParser
-
def
natural[_](implicit arg0: P[Any]): P[Int]
"532": Parse a (nonnegative) natural number literal, unnormalized.
"532": Parse a (nonnegative) natural number literal, unnormalized.
- Definition Classes
- DLParser
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
negNumberLiteral[_](implicit arg0: P[Any]): P[Number]
parse a number literal enclosed in (), which is allowed to be a negative number
parse a number literal enclosed in (), which is allowed to be a negative number
- Definition Classes
- DLParser
-
def
normNatural[_](implicit arg0: P[Any]): P[Int]
"532": Parse a (nonnegative) natural number literal, normalized.
"532": Parse a (nonnegative) natural number literal, normalized.
- Definition Classes
- DLParser
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
number[_](doAmbigCuts: Boolean)(implicit arg0: P[Any]): P[Number]
parses a number
parses a number
- Definition Classes
- DLParser
-
def
numberLiteral[_](implicit arg0: P[Any]): P[Number]
parses a number literal
parses a number literal
- Definition Classes
- DLParser
-
def
ode[_](implicit arg0: P[Any]): P[AtomicODE]
- Definition Classes
- DLParser
-
def
odeSpace[_](implicit arg0: P[Any]): P[Space]
{|x1,x2,x3|} parses a space declaration
{|x1,x2,x3|} parses a space declaration
- Definition Classes
- DLParser
-
def
odeprogram[_](implicit arg0: P[Any]): P[ODESystem]
- Definition Classes
- DLParser
-
def
odesystem[_](implicit arg0: P[Any]): P[ODESystem]
- Definition Classes
- DLParser
-
def
predicational[_](implicit arg0: P[Any]): P[PredicationalOf]
Regular predicationals C{}
Regular predicationals C{}
- Definition Classes
- DLParser
-
lazy val
printer: KeYmaeraXPrettyPrinter.type
A pretty-printer that can write the output that this parser reads
-
def
program[_](implicit arg0: P[Any]): P[Program]
program: Parses a dL program.
program: Parses a dL program.
- Definition Classes
- DLParser
-
def
programExercise[_](implicit arg0: P[Any]): P[AtomicProgram]
- Definition Classes
- DLParser
-
val
programParser: (String) ⇒ Program
Parse the input string in the concrete syntax as a differential dynamic logic program
-
def
programSymbol[_](implicit arg0: P[Any]): P[AtomicProgram]
- Definition Classes
- DLParser
-
def
sequence[_](implicit arg0: P[Any]): P[Program]
- Definition Classes
- DLParser
-
def
sequent[_](implicit arg0: P[Any]): P[Sequent]
sequent ::=
aformula1 , aformula2 , ... , aformulan ==> sformula1 , sformula2 , ... , sformulam
.sequent ::=
aformula1 , aformula2 , ... , aformulan ==> sformula1 , sformula2 , ... , sformulam
.- Definition Classes
- DLParser
-
def
sequentList[_](implicit arg0: P[Any]): P[List[Sequent]]
sequentList ::= sequent
;;
sequent;;
...sequentList ::= sequent
;;
sequent;;
...;;
sequent.- Definition Classes
- DLParser
-
val
sequentParser: (String) ⇒ Sequent
Parse the input string in the concrete syntax as a differential dynamic logic sequent.
-
def
setAnnotationListener(listener: (Program, Formula) ⇒ Unit): Unit
Register a listener for @annotations during the parse.
-
def
signed[_](p: ⇒ P[Term])(implicit arg0: P[Any]): P[Either[Term, Term]]
p | -p
: possibly signed occurrences of what is parsed by parserp
Note we tryp
before-p
because some parsers (likenumber
) also consume -s.p | -p
: possibly signed occurrences of what is parsed by parserp
Note we tryp
before-p
because some parsers (likenumber
) also consume -s. Distinguishes between Left(Neg(x)) = (-x) and Right(Neg(x)) = -x.- Definition Classes
- DLParser
-
def
space[_](implicit arg0: P[Any]): P[Space]
(|x1,x2,x3|) parses a space declaration
(|x1,x2,x3|) parses a space declaration
- Definition Classes
- DLParser
-
def
string[_](implicit arg0: P[Any]): P[String]
"whatevs": Parse a string literal.
"whatevs": Parse a string literal. (([^\\"]|\\"|\\(?!"))*+)
- Definition Classes
- DLParser
-
def
stringInterior[_](implicit arg0: P[Any]): P[String]
- Definition Classes
- DLParser
-
def
summand[_](doAmbigCuts: Boolean)(implicit arg0: P[Any]): P[Term]
- Definition Classes
- DLParser
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
systemSymbol[_](implicit arg0: P[Any]): P[AtomicProgram]
- Definition Classes
- DLParser
-
def
term[_](doAmbigCuts: Boolean)(implicit arg0: P[Any]): P[Term]
Parse a term.
Parse a term.
Some terms are ambiguous with formulas, in particular
- Parentheses (term parens vs function parens)
- Functions vs predicates
- UnitFunctionals vs UnitPredicationals So, we want to allow backtracking on these ambiguous syntax forms if we are not sure whether the input is a term or a formula.
If doAmbigCuts is true, we assume the input is a term, and perform all permissible cuts. If it is false, we only perform cuts that are unambiguous indicators the input is a term.
- Definition Classes
- DLParser
-
def
termList[_](doAmbigCuts: Boolean)(implicit arg0: P[Any]): P[Term]
(t1,t2,t3,...,tn) parenthesized list of terms
(t1,t2,t3,...,tn) parenthesized list of terms
- Definition Classes
- DLParser
-
val
termParser: (String) ⇒ Term
Parse the input string in the concrete syntax as a differential dynamic logic term
-
def
test[_](implicit arg0: P[Any]): P[Test]
- Definition Classes
- DLParser
-
def
toString(): String
- Definition Classes
- Function1 → AnyRef → Any
-
def
unambiguousBaseF[_](implicit arg0: P[Any]): P[Formula]
- Definition Classes
- DLParser
-
def
unitFunctional[_](doAmbigCuts: Boolean)(implicit arg0: P[Any]): P[UnitFunctional]
- Definition Classes
- DLParser
-
def
unitPredicational[_](implicit arg0: P[Any]): P[UnitPredicational]
Unit predicationals c(||)
Unit predicationals c(||)
- Definition Classes
- DLParser
-
def
variable[_](implicit arg0: P[Any]): P[Variable]
- Definition Classes
- DLParser
-
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( ... )
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
,Program
Sequent
- Sequents of formulasProvable
- Proof certificates transformed by rules/axiomsRule
- Proof rules as well asUSubstOne
for (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.kyx
filesDLParser
- Combinator parser reading concrete KeYmaera X syntaxDLArchiveParser
- Combinator parser reading KeYmaera X model and proof archive.kyx
filesedu.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-help
to 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