implicit class TacticForNameFactory extends Logging
Creates named dependent tactics.
"[:=] assign" by (pos => useAt(Ax.assignbAxiom)(pos))
- Alphabetic
- By Inheritance
- TacticForNameFactory
- Logging
- LazyLogging
- LoggerHolder
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
-
new
TacticForNameFactory(name: String)
- name
The tactic name. Use the special name ANON to indicate that this is an anonymous inner tactic that needs no storage.
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
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
by(t: (ProvableSig, Position, Position) ⇒ ProvableSig): BuiltInTwoPositionTactic
Creates a BuiltInTwoPositionTactic from a function turning provables and two positions into new provables.
Creates a BuiltInTwoPositionTactic from a function turning provables and two positions into new provables.
"andL" by((pr,pos)=> pr(AndLeft(pos.top),0))
Example: -
def
by(t: (ProvableSig, Position) ⇒ ProvableSig): BuiltInPositionTactic
Creates a BuiltInTactic from a function turning provables and antecedent positions into new provables.
-
def
by(t: (ProvableSig) ⇒ ProvableSig): BuiltInTactic
Creates a BuiltInTactic from a function turning provables into new provables.
-
def
by(t: (ProvableSig, AntePosition) ⇒ ProvableSig): BuiltInLeftTactic
Creates a BuiltInLeftTactic from a function turning provables and antecedent positions into new provables.
Creates a BuiltInLeftTactic from a function turning provables and antecedent positions into new provables.
"andL" by((pr,pos)=> pr(AndLeft(pos.top),0))
Example: -
def
by(t: (ProvableSig, SuccPosition) ⇒ ProvableSig): BuiltInRightTactic
Creates a BuiltInRightTactic from a function turning provables and succedent positions into new provables.
Creates a BuiltInRightTactic from a function turning provables and succedent positions into new provables.
"andR" by((pr,pos)=> pr(AndRight(pos.top),0))
Example: -
def
by(t: (Sequent) ⇒ BelleExpr): DependentTactic
Creates a dependent tactic, which can inspect the sole sequent
- def by(t: (ProvableSig, Position, Position) ⇒ BelleExpr): DependentTwoPositionTactic
- def by(t: (Position, Sequent, Declaration) ⇒ BelleExpr): DependentPositionTactic
-
def
by(t: (Position, Sequent) ⇒ BelleExpr): DependentPositionTactic
Creates a dependent position tactic while inspecting the sequent/formula at that position
-
def
by(t: (Position) ⇒ BelleExpr): DependentPositionTactic
Creates a dependent position tactic without inspecting the formula at that position
-
def
by(t: BelleExpr): BelleExpr
Creates a named tactic
-
def
byL(t: (AntePosition) ⇒ BelleExpr): DependentPositionTactic
Creates a dependent position tactic without inspecting the formula at that position
-
def
byLR(t: (AntePosition, SuccPosition) ⇒ BelleExpr): DependentTwoPositionTactic
Creates a dependent two position tactic without inspecting the formula at that position
-
def
byR(t: (SuccPosition) ⇒ BelleExpr): DependentPositionTactic
Creates a dependent position tactic without inspecting the formula at that position
- def byTactic(t: (ProvableSig, Position, Position) ⇒ BelleExpr): DependentTwoPositionTactic
- def byWithInputs(input: Seq[Any], t: (Sequent) ⇒ BelleExpr): InputTactic
-
def
byWithInputs(inputs: Seq[Any], t: ⇒ BelleExpr): InputTactic
A named tactic with multiple inputs.
-
def
byWithInputs(inputs: Seq[Any], t: (Position) ⇒ BelleExpr): DependentPositionWithAppliedInputTactic
A position tactic with multiple inputs.
- def byWithInputs(inputs: Seq[Any], t: (Position, Sequent, Declaration) ⇒ BelleExpr): DependentPositionWithAppliedInputTactic
-
def
byWithInputs(inputs: Seq[Any], t: (Position, Sequent) ⇒ BelleExpr): DependentPositionWithAppliedInputTactic
A position tactic with multiple inputs.
- def byWithInputsNoop(inputs: Seq[Any], t: ⇒ BelleExpr): InputTactic with NoOpTactic
-
def
byWithInputsP(inputs: Seq[Any], t: (ProvableSig, Position) ⇒ ProvableSig): DependentPositionWithAppliedInputTactic
Creates a Tactic with applied inputs from a function turning provables and antecedent positions into new provables.
- def byWithInputsP(input: Seq[Any], t: (ProvableSig) ⇒ ProvableSig): InputTactic
- def byWithInputsS(input: Seq[String], t: (ProvableSig) ⇒ ProvableSig): StringInputTactic
- def bys(t: (ProvableSig) ⇒ ProvableSig): BuiltInTactic
- def bys(t: (ProvableSig) ⇒ BelleExpr): DependentTactic
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
def
coreby(t: (ProvableSig, AntePosition) ⇒ ProvableSig): CoreLeftTactic
Creates a BuiltInLeftTactic from a function turning provables and antecedent positions into new provables.
Creates a BuiltInLeftTactic from a function turning provables and antecedent positions into new provables. Unlike by, the coreby will augment MatchErrors from the kernel into readable error messages.
"andL" coreby((pr,pos)=> pr(AndLeft(pos.top),0))
- See also
Rule
TacticInapplicableFailure
Example: -
def
coreby(t: (ProvableSig, SuccPosition) ⇒ ProvableSig): CoreRightTactic
Creates a CoreRightTactic from a function turning provables and succedent positions into new provables.
Creates a CoreRightTactic from a function turning provables and succedent positions into new provables. Unlike by, the coreby will augment MatchErrors from the kernel into readable error messages.
"andR" coreby((pr,pos)=> pr(AndRight(pos.top),0))
- See also
Rule
TacticInapplicableFailure
Example: -
def
corebyWithInputsL(inputs: Seq[Any], t: (ProvableSig, AntePosition) ⇒ ProvableSig): DependentPositionWithAppliedInputTactic
Creates a CoreLeftTactic with applied inputs from a function turning provables and antecedent positions into new provables.
Creates a CoreLeftTactic with applied inputs from a function turning provables and antecedent positions into new provables. Unlike by, the coreby will augment MatchErrors from the kernel into readable error messages.
"andL" coreby((pr,pos)=> pr(AndLeft(pos.top),0))
- See also
Rule
TacticInapplicableFailure
Example: -
def
corebyWithInputsR(inputs: Seq[Any], t: (ProvableSig, SuccPosition) ⇒ ProvableSig): DependentPositionWithAppliedInputTactic
Creates a CoreRightTactic with applied inputs from a function turning provables and succedent positions into new provables.
Creates a CoreRightTactic with applied inputs from a function turning provables and succedent positions into new provables. Unlike by, the coreby will augment MatchErrors from the kernel into readable error messages.
"andR" coreby((pr,pos)=> pr(AndRight(pos.top),0))
- See also
Rule
TacticInapplicableFailure
Example: -
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
- def forward(t: InputTactic): InputTactic
- def forward(t: BuiltInTwoPositionTactic): BuiltInTwoPositionTactic
- def forward(t: DependentPositionWithAppliedInputTactic): DependentPositionWithAppliedInputTactic
- def forward(t: DependentPositionTactic): DependentPositionTactic
- def forward(t: DependentTactic): DependentTactic
- def forward(t: CoreRightTactic): CoreRightTactic
- def forward(t: CoreLeftTactic): CoreLeftTactic
- def forward(t: BuiltInRightTactic): BuiltInRightTactic
- def forward(t: BuiltInLeftTactic): BuiltInLeftTactic
- def forward(t: BuiltInPositionTactic): BuiltInPositionTactic
- def forward(t: BuiltInTactic): BuiltInTactic
- def forward(t: StringInputTactic): StringInputTactic
- def forward(t: BelleExpr): BelleExpr
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
lazy val
logger: Logger
- Attributes
- protected
- Definition Classes
- LazyLogging → LoggerHolder
-
final
val
loggerName: String
- Attributes
- protected
- Definition Classes
- LoggerHolder
- val name: String
-
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()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
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