package pt
Proof-term checker turns proof terms to proof certificates. edu.cmu.cs.ls.keymaerax.pt.ProofChecker turns a proof term to the edu.cmu.cs.ls.keymaerax.core.Provable that it proves.
ProofChecker : ProofTerm * Formula => Provable
This package defines
- Proof term language
- edu.cmu.cs.ls.keymaerax.pt.ProofChecker to interpret the proof term language
- Alphabetic
- By Inheritance
- pt
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
- case class AxiomTerm(name: String) extends ProofTerm with Product with Serializable
- case class BananaODE(sm: SymMode) extends SymMode with Product with Serializable
- case class ConSubst() extends SymMode with Product with Serializable
- case class ConversionException(msg: String) extends Exception with Product with Serializable
- case class Defun(sm: SymMode) extends SymMode with Product with Serializable
- case class DefunSubst() extends SymMode with Product with Serializable
- case class Depred(sm: SymMode) extends SymMode with Product with Serializable
- case class DepredSubst() extends SymMode with Product with Serializable
-
case class
ElidingProvable(provable: Provable, steps: Int, defs: Declaration) extends ProvableSig with Product with Serializable
A direct Provable straight from the core that does not keep track of its proof term, but only tracks number of proof steps.
A direct Provable straight from the core that does not keep track of its proof term, but only tracks number of proof steps. Directly forwards all function calls to provable.
- case class FOLRConstant(f: Formula) extends ProofTerm with Product with Serializable
- case class ForwardNewConsequenceTerm(child: ProofTerm, newConsequence: Sequent, rule: Rule) extends ProofTerm with Product with Serializable
- case class FunSubst() extends SymMode with Product with Serializable
- case class IAAllElim() extends Iaxiom with Product with Serializable
- case class IABoxSplit() extends Iaxiom with Product with Serializable
- case class IADC() extends Iaxiom with Product with Serializable
- case class IADE() extends Iaxiom with Product with Serializable
- case class IADG() extends Iaxiom with Product with Serializable
- case class IADIEq() extends Iaxiom with Product with Serializable
- case class IADS() extends Iaxiom with Product with Serializable
- case class IADW() extends Iaxiom with Product with Serializable
- case class IADiffEffectSys() extends Iaxiom with Product with Serializable
- case class IADiffLinear() extends Iaxiom with Product with Serializable
- case class IAEqualCommute() extends Iaxiom with Product with Serializable
- case class IAEquivReflexive() extends Iaxiom with Product with Serializable
- case class IAI() extends Iaxiom with Product with Serializable
- case class IAImpSelf() extends Iaxiom with Product with Serializable
- case class IAK() extends Iaxiom with Product with Serializable
- case class IAV() extends Iaxiom with Product with Serializable
- case class IAallInst() extends Iaxiom with Product with Serializable
- case class IAassign() extends Iaxiom with Product with Serializable
- case class IAassignEq() extends Iaxiom with Product with Serializable
- case class IAassignany() extends Iaxiom with Product with Serializable
- case class IAbox() extends Iaxiom with Product with Serializable
- case class IAchoice() extends Iaxiom with Product with Serializable
- case class IAcompose() extends Iaxiom with Product with Serializable
- case class IAconstFcong() extends Iaxiom with Product with Serializable
- case class IAdConst() extends Iaxiom with Product with Serializable
- case class IAdMinus() extends Iaxiom with Product with Serializable
- case class IAdMult() extends Iaxiom with Product with Serializable
- case class IAdPlus() extends Iaxiom with Product with Serializable
- case class IAdassign() extends Iaxiom with Product with Serializable
- case class IAdvar() extends Iaxiom with Product with Serializable
- case class IAllSpace() extends Ispace with Product with Serializable
- case class IAloopIter() extends Iaxiom with Product with Serializable
- case class IAnd(left: Iformula, right: Iformula) extends Iformula with Product with Serializable
- case class IAndL() extends Ilrule with Product with Serializable
- case class IAndR() extends Irrule with Product with Serializable
- case class IApplyLrule(r: Ilrule, i: Int) extends IruleApp with Product with Serializable
- case class IApplyRrule(r: Irrule, i: Int) extends IruleApp with Product with Serializable
- case class IAssign(id: ID, t: Itrm) extends Ihp with Product with Serializable
- case class IAssignRand(id: ID) extends Ihp with Product with Serializable
- case class IAtest() extends Iaxiom with Product with Serializable
- case class IAx(ax: Iaxiom) extends Ipt with Product with Serializable
- case class IAxRule(ar: IaxiomaticRule) extends Ipt with Product with Serializable
- case class IBRenameL(what: ID, repl: ID) extends Ilrule with Product with Serializable
- case class IBRenameR(what: ID, repl: ID) extends Irrule with Product with Serializable
- case class ICE() extends IaxiomaticRule with Product with Serializable
- case class ICQ() extends IaxiomaticRule with Product with Serializable
- case class ICT() extends IaxiomaticRule with Product with Serializable
- case class IChoice(left: Ihp, right: Ihp) extends Ihp with Product with Serializable
- case class ICloseId(i: Int, j: Int) extends IruleApp with Product with Serializable
- case class ICohide2(i: Int, j: Int) extends IruleApp with Product with Serializable
- case class ICohideR() extends Irrule with Product with Serializable
- case class ICohideRR() extends Irrule with Product with Serializable
- case class ICommuteEquivR() extends Irrule with Product with Serializable
- case class IConst(int: Int, sm: SymMode = NonSubst()) extends Itrm with Product with Serializable
- case class ICut(f: Iformula) extends IruleApp with Product with Serializable
- case class ICutLeft(f: Iformula) extends Ilrule with Product with Serializable
- case class ICutRight(f: Iformula) extends Irrule with Product with Serializable
- case class IDIGeqSchema(o: IODE, t1: Itrm, t2: Itrm) extends IruleApp with Product with Serializable
- case class IDMap(varMap: Map[(String, Option[Int]), String], funMap: Map[Either[String, String], String], predMap: Map[String, String], conMap: Map[Either[String, String], String], progMap: Map[String, String], odeMap: Map[String, String], fArity: Int, pArity: Int, maxVar: Int, maxFun: Int, maxPred: Int, maxCon: Int, maxProg: Int, maxOde: Int) extends Product with Serializable
- case class IDiamond(prog: Ihp, post: Iformula) extends Iformula with Product with Serializable
- case class IDiffAssign(id: ID, t: Itrm) extends Ihp with Product with Serializable
- case class IDiffVar(id: ID) extends Itrm with Product with Serializable
- case class IDifferential(child: Itrm) extends Itrm with Product with Serializable
- case class IEquivBackwardL() extends Ilrule with Product with Serializable
- case class IEquivForwardL() extends Ilrule with Product with Serializable
- case class IEquivL() extends Ilrule with Product with Serializable
- case class IEquivR() extends Irrule with Product with Serializable
- case class IEquivifyR() extends Irrule with Product with Serializable
- case class IEvolveODE(ode: IODE, con: Iformula) extends Ihp with Product with Serializable
- case class IExists(x: ID, child: Iformula) extends Iformula with Product with Serializable
- case class IFNC(child: Ipt, seq: Isequent, ra: IruleApp) extends Ipt with Product with Serializable
- case class IFOLRConstant(f: Iformula) extends Ipt with Product with Serializable
- case class IFunction(f: ID, args: List[Itrm]) extends Itrm with Product with Serializable
- case class IFunctional(f: ID) extends Itrm with Product with Serializable
- case class IG() extends IaxiomaticRule with Product with Serializable
- case class IGeq(left: Itrm, right: Itrm) extends Iformula with Product with Serializable
- case class IHideL() extends Ilrule with Product with Serializable
- case class IHideR() extends Irrule with Product with Serializable
- case class IImplyL() extends Ilrule with Product with Serializable
- case class IImplyR() extends Irrule with Product with Serializable
- case class IInContext(id: ID, child: Iformula) extends Iformula with Product with Serializable
- case class ILoop(child: Ihp) extends Ihp with Product with Serializable
- case class INBSpace(id: String) extends Ispace with Product with Serializable
- case class INot(child: Iformula) extends Iformula with Product with Serializable
- case class INotL() extends Ilrule with Product with Serializable
- sealed trait IODE extends AnyRef
- case class IOProd(left: IODE, right: IODE) extends IODE with Product with Serializable
- case class IOSing(x: ID, t: Itrm) extends IODE with Product with Serializable
- case class IOVar(id: ID, sp: Ispace) extends IODE with Product with Serializable
- case class IPlus(left: Itrm, right: Itrm) extends Itrm with Product with Serializable
- case class IPrUSubst(child: Ipt, sub: Isubst) extends Ipt with Product with Serializable
- case class IPro(child: Ipt, pro: Ipt) extends Ipt with Product with Serializable
- case class IProp(id: ID, args: List[Itrm]) extends Iformula with Product with Serializable
- case class IPvar(id: ID) extends Ihp with Product with Serializable
- case class IRuleApplication(child: Ipt, ra: IruleApp, branch: Int) extends Ipt with Product with Serializable
- case class ISequence(left: Ihp, right: Ihp) extends Ihp with Product with Serializable
- case class ISkolem() extends Irrule with Product with Serializable
- case class IStart(seq: Isequent) extends Ipt with Product with Serializable
- case class ISub(child: Ipt, sub: Ipt, branch: Int) extends Ipt with Product with Serializable
- case class ITest(child: Iformula) extends Ihp with Product with Serializable
- case class ITimes(left: Itrm, right: Itrm) extends Itrm with Product with Serializable
- case class ITrueR() extends Irrule with Product with Serializable
- case class IURename(what: ID, repl: ID) extends IruleApp with Product with Serializable
- case class IVar(id: ID) extends Itrm with Product with Serializable
- sealed trait Iaxiom extends AnyRef
- sealed trait IaxiomaticRule extends AnyRef
- sealed trait Iformula extends AnyRef
- sealed trait Ihp extends AnyRef
- sealed trait Ilrule extends AnyRef
- case class Imonb() extends IaxiomaticRule with Product with Serializable
- sealed trait Ipt extends AnyRef
- sealed trait Irrule extends AnyRef
- sealed trait IruleApp extends AnyRef
- class IsabelleConverter extends Logging
- sealed trait Ispace extends AnyRef
- case class Isubst(SFunctions: List[Option[Itrm]], SFuncls: List[Option[Itrm]], SPredicates: List[Option[Iformula]], SContexts: List[Option[Iformula]], SPrograms: List[Option[Ihp]], SODEs: List[Option[IODE]], SSpace: Ispace) extends Product with Serializable
- sealed trait Itrm extends AnyRef
- case class NonSubst() extends SymMode with Product with Serializable
- case class ProlongationTerm(child: ProofTerm, prolongation: ProofTerm) extends ProofTerm with Product with Serializable
-
sealed abstract
class
ProofTerm extends AnyRef
A Proof Term is a syntactic internalization of a proof of a differential dynamic logic theorem.
A Proof Term is a syntactic internalization of a proof of a differential dynamic logic theorem. Proof Terms can be converted to Provables by the ProofChecker. Created by nfulton on 10/15/15.
- See also
-
trait
ProvableSig extends AnyRef
A common signature for edu.cmu.cs.ls.keymaerax.pt.ProvableSig's and TermProvable's for use in the btactics package.
A common signature for edu.cmu.cs.ls.keymaerax.pt.ProvableSig's and TermProvable's for use in the btactics package. This allows for tactics to construct proof terms or not depending on which implementation they use.
This file mimics edu.cmu.cs.ls.keymaerax.core.Provable outside the core and forwards all operations to the core.
- See also
Provable
-
case class
RuleApplication(child: ProofTerm, rule: Rule, subgoal: Int) extends ProofTerm with Product with Serializable
Witness for rule application.
- case class RuleTerm(name: String) extends ProofTerm with Product with Serializable
- class ScalaBuilder extends SourceBuilder
- class SexpBuilder extends SourceBuilder
- abstract class SourceBuilder extends AnyRef
- case class StartProof(phi: Sequent) extends ProofTerm with Product with Serializable
- case class Sub(child: ProofTerm, sub: ProofTerm, idx: Int) extends ProofTerm with Product with Serializable
- sealed abstract class SymMode extends AnyRef
-
case class
TermProvable(provable: ProvableSig, pt: ProofTerm, defs: Declaration) extends ProvableSig with Logging with Product with Serializable
TermProvable has the same signature as Provable, but constructs proof terms alongside Provables.
TermProvable has the same signature as Provable, but constructs proof terms alongside Provables. The ProofTerms remember how the provable was proved.
- case class URenameTerm(child: ProofTerm, ren: URename) extends ProofTerm with Product with Serializable
- case class UsubstProvableTerm(child: ProofTerm, substitution: USubst) extends ProofTerm with Product with Serializable
Value Members
- object ElidingProvable extends Serializable
-
object
HOLConverter
Converts kyx expressions to subset used by hol formalization.
Converts kyx expressions to subset used by hol formalization. Just different enough from Isabelle syntax that it's not so easy to unify them just yet.
- object IDMap extends Logging with Serializable
- object Iaxiom extends Logging
- object IaxiomaticRule
-
object
IsabelleConverter extends Logging
Convert proof terms to sublanguage + syntax used by Isabelle formalization Created by bbohrer on 10/19/17.
Convert proof terms to sublanguage + syntax used by Isabelle formalization Created by bbohrer on 10/19/17.
- See also
- object NoProof extends ProofTerm with Product with Serializable
-
object
ProofChecker
ProofChecker maps a proof term to the Provable it proves.
ProofChecker maps a proof term to the Provable it proves.
ProofChecker : ProofTerm * Formula => Provable
with a successful answer if the proof indeed checked successfully. Not soundness-critical, because the proof checker compiles the proof term into subsequent proof rule and axiom applications in the prover core. Created by nfulton on 10/15/15.
- To do
Currently not operational: fixme
- See also
-
object
ProvableSig
- See also
Provable
- object TermProvable 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
,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