class DLParser extends Parser
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
- Parser
- Function1
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
-  new DLParser()
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]
- 
      
      
      
        
      
    
      
        
        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 
- 
      
      
      
        
      
    
      
        
        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
- ParseExceptionif- inputis 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]
-  def atomicDP[_](implicit arg0: P[Any]): P[AtomicDifferentialProgram]
-  def backImplication[_](implicit arg0: P[Any]): P[Formula]
- 
      
      
      
        
      
    
      
        
        def
      
      
        baseF[_](implicit arg0: P[Any]): P[Formula]
      
      
      Base formulas 
-  def baseP[_](implicit arg0: P[Any]): P[Program]
-  def baseTerm[_](doAmbigCuts: Boolean)(implicit arg0: P[Any]): P[Term]
-  def baseVariable[_](implicit arg0: P[Any]): P[BaseVariable]
-  def biimplication[_](implicit arg0: P[Any]): P[Formula]
- 
      
      
      
        
      
    
      
        
        def
      
      
        blank[_](implicit arg0: P[Any]): P[Unit]
      
      
      Explicit nonempty whitespace terminal. 
-  def braceP[_](implicit arg0: P[Any]): P[Program]
-  def choice[_](implicit arg0: P[Any]): P[Program]
- 
      
      
      
        
      
    
      
        
        def
      
      
        clone(): AnyRef
      
      
      - Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
 
-  def comparator[_](implicit arg0: P[Any]): P[Unit]
- 
      
      
      
        
      
    
      
        
        def
      
      
        comparison[_](implicit arg0: P[Any]): P[Formula]
      
      
      Parses a comparison, given the left-hand term 
- 
      
      
      
        
      
    
      
        
        def
      
      
        compose[A](g: (A) ⇒ String): (A) ⇒ Expression
      
      
      - Definition Classes
- Function1
- Annotations
- @unspecialized()
 
-  def conjunct[_](implicit arg0: P[Any]): P[Formula]
- 
      
      
      
        
      
    
      
        
        def
      
      
        diff[_](left: Term)(implicit arg0: P[Any]): P[Term]
      
      
      Parses term' 
-  def diffExercise[_](implicit arg0: P[Any]): P[DifferentialProgramConst]
-  def diffProduct[_](implicit arg0: P[Any]): P[DifferentialProgram]
- 
      
      
      
        
      
    
      
        
        def
      
      
        diffProgram[_](implicit arg0: P[Any]): P[DifferentialProgram]
      
      
      diffProgram: Parses a dL differential program. 
-  def diffProgramSymbol[_](implicit arg0: P[Any]): P[DifferentialProgramConst]
-  def diffVariable[_](implicit arg0: P[Any]): P[DifferentialSymbol]
- 
      
      
      
        
      
    
      
        
        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]
- 
      
      
      
        
      
    
      
        
        def
      
      
        dot[_](implicit arg0: P[Any]): P[DotTerm]
      
      
      .or._2: dot parsing
- 
      
      
      
        
      
    
      
        
        def
      
      
        dual[_](implicit arg0: P[Any]): P[Program]
      
      
      Parses dual notation: baseP or baseP^@ 
- 
      
      
      
        
      
    
      
        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 
-  def expression[_](implicit arg0: P[Any]): P[Expression]
- 
      
      
      
        
      
    
      
        
        def
      
      
        finalize(): Unit
      
      
      - Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
 
-  def formula[_](implicit arg0: P[Any]): P[Formula]
- 
      
      
      
        
      
    
      
        
        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]
-  def fullExpression[_](implicit arg0: P[Any]): P[Expression]
-  def fullFormula[_](implicit arg0: P[Any]): P[Formula]
-  def fullProgram[_](implicit arg0: P[Any]): P[Program]
-  def fullSequent[_](implicit arg0: P[Any]): P[Sequent]
-  def fullSequentList[_](implicit arg0: P[Any]): P[List[Sequent]]
-  def fullTerm[_](implicit arg0: P[Any]): P[Term]
-  def function[_](doAmbigCuts: Boolean)(implicit arg0: P[Any]): P[FuncOf]
- 
      
      
      
        
      
    
      
        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). 
 - 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]
-  def implication[_](implicit arg0: P[Any]): P[Formula]
- 
      
      
      
        
      
    
      
        
        def
      
      
        integer[_](implicit arg0: P[Any]): P[Int]
      
      
      "-532": Parse an integer literal, unnormalized. 
- 
      
      
      
        
      
    
      
        final 
        def
      
      
        isInstanceOf[T0]: Boolean
      
      
      - Definition Classes
- Any
 
- 
      
      
      
        
      
    
      
        
        def
      
      
        keywords: Set[String]
      
      
      matches keywords. matches keywords. An identifier cannot be a keyword. 
-  def multiplicand[_](doAmbigCuts: Boolean)(implicit arg0: P[Any]): P[Term]
- 
      
      
      
        
      
    
      
        
        def
      
      
        natural[_](implicit arg0: P[Any]): P[Int]
      
      
      "532": Parse a (nonnegative) natural number literal, unnormalized. 
- 
      
      
      
        
      
    
      
        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 
- 
      
      
      
        
      
    
      
        
        def
      
      
        normNatural[_](implicit arg0: P[Any]): P[Int]
      
      
      "532": Parse a (nonnegative) natural number literal, normalized. 
- 
      
      
      
        
      
    
      
        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 
- 
      
      
      
        
      
    
      
        
        def
      
      
        numberLiteral[_](implicit arg0: P[Any]): P[Number]
      
      
      parses a number literal 
-  def ode[_](implicit arg0: P[Any]): P[AtomicODE]
- 
      
      
      
        
      
    
      
        
        def
      
      
        odeSpace[_](implicit arg0: P[Any]): P[Space]
      
      
      {|x1,x2,x3|} parses a space declaration 
-  def odeprogram[_](implicit arg0: P[Any]): P[ODESystem]
-  def odesystem[_](implicit arg0: P[Any]): P[ODESystem]
- 
      
      
      
        
      
    
      
        
        def
      
      
        predicational[_](implicit arg0: P[Any]): P[PredicationalOf]
      
      
      Regular predicationals C{} 
- 
      
      
      
        
      
    
      
        
        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. 
-  def programExercise[_](implicit arg0: P[Any]): P[AtomicProgram]
- 
      
      
      
        
      
    
      
        
        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]
-  def sequence[_](implicit arg0: P[Any]): P[Program]
- 
      
      
      
        
      
    
      
        
        def
      
      
        sequent[_](implicit arg0: P[Any]): P[Sequent]
      
      
      sequent ::= aformula1 , aformula2 , ... , aformulan ==> sformula1 , sformula2 , ... , sformulam.
- 
      
      
      
        
      
    
      
        
        def
      
      
        sequentList[_](implicit arg0: P[Any]): P[List[Sequent]]
      
      
      sequentList ::= sequent ;;sequent;;...sequentList ::= sequent ;;sequent;;...;;sequent.
- 
      
      
      
        
      
    
      
        
        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 parserpNote we trypbefore-pbecause some parsers (likenumber) also consume -s.p | -p: possibly signed occurrences of what is parsed by parserpNote we trypbefore-pbecause some parsers (likenumber) also consume -s. Distinguishes between Left(Neg(x)) = (-x) and Right(Neg(x)) = -x.
- 
      
      
      
        
      
    
      
        
        def
      
      
        space[_](implicit arg0: P[Any]): P[Space]
      
      
      (|x1,x2,x3|) parses a space declaration 
- 
      
      
      
        
      
    
      
        
        def
      
      
        string[_](implicit arg0: P[Any]): P[String]
      
      
      "whatevs": Parse a string literal. "whatevs": Parse a string literal. (([^\\"]|\\"|\\(?!"))*+) 
-  def stringInterior[_](implicit arg0: P[Any]): P[String]
-  def summand[_](doAmbigCuts: Boolean)(implicit arg0: P[Any]): P[Term]
- 
      
      
      
        
      
    
      
        final 
        def
      
      
        synchronized[T0](arg0: ⇒ T0): T0
      
      
      - Definition Classes
- AnyRef
 
-  def systemSymbol[_](implicit arg0: P[Any]): P[AtomicProgram]
- 
      
      
      
        
      
    
      
        
        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. 
- 
      
      
      
        
      
    
      
        
        def
      
      
        termList[_](doAmbigCuts: Boolean)(implicit arg0: P[Any]): P[Term]
      
      
      (t1,t2,t3,...,tn) parenthesized list of terms 
- 
      
      
      
        
      
    
      
        
        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]
- 
      
      
      
        
      
    
      
        
        def
      
      
        toString(): String
      
      
      - Definition Classes
- Function1 → AnyRef → Any
 
-  def unambiguousBaseF[_](implicit arg0: P[Any]): P[Formula]
-  def unitFunctional[_](doAmbigCuts: Boolean)(implicit arg0: P[Any]): P[UnitFunctional]
- 
      
      
      
        
      
    
      
        
        def
      
      
        unitPredicational[_](implicit arg0: P[Any]): P[UnitPredicational]
      
      
      Unit predicationals c(||) 
-  def variable[_](implicit arg0: P[Any]): P[Variable]
- 
      
      
      
        
      
    
      
        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,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