Packages

  • package root
    Definition Classes
    root
  • package info
    Definition Classes
    root
  • package kwarc
    Definition Classes
    info
  • package mmt
    Definition Classes
    kwarc
  • package api

    This is the main package of the MMT API.

    This is the main package of the MMT API.

    It holds subpackages for all data structures, data containers, and the central algorithms and services.

    Classes directly defined in the package

    Some minor classes that are used throughout MMT are defined in this package, in particular:

    • MMT URIs in the class Path and Namespace
    • processing and content errors in the class Error

    The package also contains root classes for certain types that are subclassed throughout the package. Most importantly:

    • StructuralElement: structure-level (= named) parts in the data structures for the MMT language: documents, theories, constants, ...
    • MMTTask: tasks for a single object: parsing, checking, ...
    • Rule: object-level part of the MMT language that is written in Scala

    Subpackages

    Data structures for the MMT language

    The data structures for the MMT languages are defined in 4 packages corresponding to the 4 levels: - documents: Documents and all other NarrativeElements - modules: Modules (= the toplevel declarations), in particular Theorys and Views - symbols: all Declarations inside modules, in particular Constants - objects: all anonymous Objects (e.g., formulas, functions, etc.), in particular Contexts and Terms

    The former 3 levels are jointly called 'structural' levels. All elements subclass StructuralElement, have an MMT URI, and carry an MMT URI referring to their parent in the MMT abstract syntax tree.

    Structural elements are extensible (via DerivedModules and DerivedDeclarations), and the package patterns defines declaration patterns as a built-in extension.

    All structural elements are mutable and implement the ContainerElement interface for changing their children. Objects, by contrast, are represented as immutable inductive types.(except for carrying metadata.Metadata and objects.ClientProperties). The boundary between structural elements and objects is mediated by ComponentContainers: these are mutable, owned by structural elements, and maintain objects.

    A few auxiliary data structures shifted to separate packages: - opaque: external (i.e., informal, computation) content - informal: partially outdated informal data structures - metadata: metadata annotations to all structural elements or objects

    The MMT main class and its internal state

    The package frontend contains the class Controller, which owns all state relevant for running MMT. Typically, each application creates a single instance of this class. The package also defines several other essential classes, most importantly MMT's extension (=plug-in, add-on) interfaces via the Extension class.

    The package libraries maintains the instances of MMT language data structures, in particular the Library class. Controller owns a Library, which stores all structural elements that have been loaded into memory.

    User interfaces

    The package frontend also contains the main executable classes, in particular the Shell class.

    The package gui collects all classes for building graphical user interfaces. This includes auxiliary classes for use in IDE plugins.

    The package web collects all classes for the HTTP interface of MMT.

    Physical storage of the MMT language files

    The package archives defines MMT Archives (= projects) as well as classes for building and working with archives. The latter include in particular the BuildManager and BuildTarget. Build targets include Importers and [Exporter]]s that translate between MMT and other formats.

    The package backend defines classes for maintaining archives and translating between the MMT URIs of structural elements and their physical storage locations.

    The central algorithms for processing MMT content

    The processing model of MMT consists of several major algorithms. - parser: read strings into MMT data structures - checking: check and refine MMT data structures - uom: pure computation on MMT data structures - proving: theorem proving on MMT data structures (in very early state)) - execution: imperative computation (in very, very early state) - presentation: rendering MMT data structures in user-facing formats (including HTML+presentation MathML)

    All algorithms are defined in Extensions coupled with default implementations. Moreover, all algorithms are split into two separate levels, one for structural elements and objects. See LeveledExtension.

    The package notations maintains the common code for parsing and presentation.

    The package valuebases maintains mathematical databases as a part of MMT.

    Other algorithms on the MMT data structures

    The package ontology contains a relational, semantic web-style ontology and query engine for it.

    The package moc contains change management.

    The package refactoring contains refactoring principles.

    General purpose utility functions

    The package utils defines general purpose APIs for files, URIs, HTML building, etc.

    Definition Classes
    mmt
  • package proving

    The algorithm for proving theorems about MMT content.

    The algorithm for proving theorems about MMT content. This is very premature and experimental.

    See api for an overview of the algorithms.

    The main interfaces are - Prover: object level proving

    Structure level proving does not exist yet.

    The main implementations are - RuleBasedProver for object-level proving

    The latter creates a Searcher for each proving task, which applies search rules to find MMT objects.

    Definition Classes
    api
  • package imperative
    Definition Classes
    proving
  • Alternative
  • ApplicableTactic
  • Atom
  • AtomicShape
  • BackwardInvertible
  • BackwardSearch
  • BoundShape
  • ComplexShape
  • EquivalenceClass
  • EquivalenceRelation
  • Fact
  • Facts
  • ForwardInvertible
  • ForwardSearch
  • Goal
  • InvertibleTactic
  • Prover
  • ProvingUnit
  • RuleBasedProver
  • Searcher
  • Shape
  • ShapeIndexedSet
  • Tactic
  • Wildcard

class Goal extends AnyRef

A Goal is a single-conclusion sequent - the basic node in a proof tree. A goal nodes knows its parent (except for the root goal) and children (the alternatives and their subgoals).

Each Goal stores a partial proof: a list of alternatives each of which stores a list of subgoals. Goals are disjunctive: a goal can be closed if all subgoals of one alternative can be closed.

The conclusion, the proof alternatives, and the proof term are stored statefully and are set by this class or other prover components.

The prover expands new goals greedily by applying invertible rules, and each goal stores those invertible rules that have not been applied yet.

Source
Goal.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Goal
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new Goal(context: Context, concVar: Term)

    context

    the premises added to the sequent by this goal; the full antecedent arises by prepending the one of the parent goal

    concVar

    the conclusion of the sequent

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def below(that: Goal): Boolean

    true if that is an ancestor (reflexive, transitive) of this goal

  6. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  7. def conc: Term

    the conclusion (may have been simplified since Goal creation)

  8. val context: Context
  9. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  10. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  11. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  12. lazy val fullContext: Context

    the complete context/antecedent (i.e., including the parent's context) of this sequent

  13. lazy val fullVarAtoms: List[Atom]

    the complete context of this goal seen as a list of atomic facts that rules can make use of

  14. def getAlternatives: List[Alternative]

    the list of explored directions in the backward search space that can prove the goal

  15. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  16. def getNextExpansion: Option[ApplicableTactic]

    the invertible backward/forward tactics that have not been applied yet are stored here, but set and read by the Prover this method retrieves the next tactic to apply

  17. final def getNextSearch(prover: Searcher): List[ApplicableTactic]
    Annotations
    @tailrec()
  18. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  19. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  20. def isSolved: Boolean

    checks if the goal can be closed by closing all subgoals of some alternative the result is cached so that the method can be called arbitrarily often without performance penalty

  21. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  22. def newFacts(implicit facts: Facts): Unit

    recursively checks if the goal can be closed by using the axiom rule

    recursively checks if the goal can be closed by using the axiom rule

    should be called iff there are new facts available (result is cached by isSolved)

  23. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  24. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  25. def path: List[Goal]

    the path from this goal up to the root of the proof tree

  26. def present(depth: Int)(implicit presentObj: (Obj) ⇒ String, current: Option[Goal], newAlt: Option[Alternative]): String
  27. def presentHtml(depth: Int, firstTime: Boolean = true)(implicit presentObj: (Obj) ⇒ String, current: Option[Goal], newAlt: Option[Alternative]): String
  28. def proof: Term

    stores the proof, contains holes if the goal is not solved

  29. def setExpansionTactics(prover: Searcher, backw: List[BackwardInvertible], forw: List[ForwardInvertible]): Unit

    initializes the invertible backward/forward tactics that can be applied

  30. def setSearchTactics(prover: Searcher, backw: List[BackwardSearch]): Unit
  31. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  32. def toString(): String
    Definition Classes
    Goal → AnyRef → Any
  33. lazy val varAtoms: List[Atom]

    the local context of this goal seen as a list of atomic facts that rules can make use of

  34. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  35. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  36. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()

Inherited from AnyRef

Inherited from Any

Ungrouped