object TreeForm
Represent terms as recursive lists of logical symbols. This simplified structure is useful for certain analyses that treat all the operators in a relatively uniform way. This representation flattens the term's structure as much as possible (e.g. turning a+(b+c) into (a+b+c)), to make analyses that consider the depth of a term more meaningful. Created by bbohrer on 10/23/15.
- Alphabetic
- By Inheritance
- TreeForm
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
- final case class Constant(value: Number) extends TermSymbol with Product with Serializable
-
class
DepthKBOrdering extends Ordering[Term]
Variant of Knuth-Bendix ordering where the weight of every occurrence of a symbol is multiplied by its depth in the formula, which has the affect of penalizing values at the leaves of a term.
- final case class DiffVar(name: String) extends TermSymbol with Product with Serializable
- final case class Func(name: String) extends TermSymbol with Product with Serializable
-
class
GenericKBOrdering extends Ordering[Term]
Generalization of Knuth-Bendix ordering that allows arbitrary comparisons on the Stat's computed for the terms and tweaking the depth/size by replacing each depth with depthFactor(depth) and each size with sizeFactor(size)
-
class
KnuthBendixOrdering extends Ordering[Term]
Knuth-Bendix orderings assign a constant weight to each symbol and then weigh the terms based on the sum of all the symbols within and compare by the weight.
Knuth-Bendix orderings assign a constant weight to each symbol and then weigh the terms based on the sum of all the symbols within and compare by the weight. Weights for operators without an arity specified apply to all arities for that operator.
- See also
Knuth, D. E., Bendix, P. B.Simple word problems in universal algebras.
-
class
LexicographicOrdering extends Ordering[Term]
General lexicographic ordering: given a list of orderings, tries each ordering in turn until some ordering declares the terms to be unequal.
General lexicographic ordering: given a list of orderings, tries each ordering in turn until some ordering declares the terms to be unequal. For performance reasons, it may be preferable to reimplement this logic for each lexicographic ordering of interest, but this class is useful for quickly writing experiments.
-
class
LexicographicSymbolOrdering extends Ordering[Term]
Given a list of symbols, and two terms x and y, a LexicographicSymbolOrdering counts the number of occurrences of each symbol in x and y, and considers x > y if x has more occurrences of the first symbol for which they differ.
- type Multiset[A] = Set[(A, Int)]
- final case class Operator(name: String, arity: Option[Int]) extends TermSymbol with Product with Serializable
-
class
RecursivePathOrdering extends Ordering[Term]
Recursive path orderings are one general way to extend orderings on logical symbols to orderings on terms.
Recursive path orderings are one general way to extend orderings on logical symbols to orderings on terms. They obey some of the intuition one might want from a term ordering. For example, if the most complex symbol in t1 is more complex than the most complex symbol of t2, then t1 > t2.
- See also
Nachum Dershowitz. Orderings for Term-Rewriting Systems. Theoretical Computer Science, 1982.
-
class
SizeKBOrdering extends Ordering[Term]
Variant of Knuth-Bendix ordering where the weight of every occurrence of a symbol is multiplied by the size of the subterm starting at that symbol.
Variant of Knuth-Bendix ordering where the weight of every occurrence of a symbol is multiplied by the size of the subterm starting at that symbol. This has the effect of penalizing large terms over small terms with the same root symbol.
- case class Stat(count: Int, depthWeighted: Int, sizeWeighted: Int) extends Product with Serializable
- class StatOrdering extends Ordering[Term]
-
case class
Stats(t: Term, depthFactor: (Int) ⇒ Int = {case i => 1}, sizeFactor: (Int) ⇒ Int = {case i => 1}) extends Product with Serializable
A Stats accumulates data about a term that can be used to implement a variety of useful orderings.
- sealed trait TermSymbol extends AnyRef
- final case class Tree(sym: TermSymbol, args: List[Tree]) extends Product with Serializable
- final case class Var(name: String) extends TermSymbol with Product with Serializable
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
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
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] )
-
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
- def multiset[A](l: List[A]): Multiset[A]
-
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()
- def subtract[A](x: Multiset[A], y: Multiset[A]): Multiset[A]
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
- def toSet[A](x: Multiset[A]): Set[A]
-
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( ... )
- def weightOrdering(f: (Stats) ⇒ Int): Ordering[Term]
- object Stat extends Serializable
- object Tree extends Serializable
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