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 refactoring
    Definition Classes
    api
  • package linkinversion
    Definition Classes
    refactoring
  • AssumeRewritable
  • ContinuationStyle
  • LinkInversionRulesProvider
  • LinkInverter
  • LinkInverterResult
  • LinkUtils
  • ModuleCreator
  • ReferenceSubstituter
  • RewriteAs
  • RewriteConstantError
  • RewriteError
  • RewriteErrorHandler
  • RewriteUnknownError
  • SkipDeclaration
p

info.kwarc.mmt.api.refactoring

linkinversion

package linkinversion

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. All

Type Members

  1. sealed abstract class ContinuationStyle extends AnyRef

    The continuation style telling LinkInverter.invertLink() how to continue after encountering a RewriteConstantError.

    The continuation style telling LinkInverter.invertLink() how to continue after encountering a RewriteConstantError.

    Apart from it being used a little bit internally for the control flow in LinkInverter, it usually is returned by a RewriteErrorHandler given as a callback to LinkInverter.invertLink().

  2. trait LinkInversionRulesProvider extends AnyRef

    Provider for inverse rewrite rules for links.

    Provider for inverse rewrite rules for links.

    Initially, the LinkInverter starts with the rules returned by LinkInversionRulesProvider.getInverseRewritingRules() and starts rewriting declarations.

    Different implementations may consider different "equality rules".

    - The simplest LinkInversionRulesProvider would return AbbrevRule instances for links which are renamings. Namely, those rules would rewrite the RHS of the renaming to the LHS. - A more complex implementation could in addition provide rules for link mappings d = d' where d' = OMBINDC(_, _, _). Namely, the rule would rewrite terms t', which are the same as d' modulo a renaming of the binding context, to d. - An even more complex implementation would also match terms, e.g. when t' is the body (scope) of the OMBINDC of d' with instantiated variables for the bound context, it woud rewrite t' to d [arguments for the instantiation]. See LFLinkInversionRulesProvider.

  3. final case class LinkInverterResult(invertedTheory: List[Declaration], generatedMorphism: List[Declaration]) extends Product with Serializable
  4. final case class RewriteAs(decl: Declaration) extends ContinuationStyle with Product with Serializable

    Forcefully rewrite the declaration to a provided one.

    Forcefully rewrite the declaration to a provided one.

    If you are within a RewriteErrorHandler, decl should start with the same new module path as passed to LinkInverter.invertLink().

    See also

    ContinuationStyle

  5. sealed case class RewriteConstantError(originalDecl: Constant, attemptedDecl: Option[Declaration], blamableTerms: scala.Predef.Map[ComponentKey, Seq[Term]]) extends RewriteError with Product with Serializable

    originalDecl

    The original declaration, which was supposed to be rewritten.

    attemptedDecl

    In case any attempt was made to rewrite the declaration, this option contains it. For example, when you received a RewriteError from LinkInverter.invertLink for a constant declaration, then the type or definiens component might still contain references to the theory S which was supposed to be generalized. However, in cases where the declarations wasn't known to LinkInverter.invertLink at all (e.g. proper structures - not inclusions), this might be None.

    blamableTerms

    In case the declaration was a constant declaration and could not be fully rewritten due to some left over terms referring to things in the theory S, which was supposed to be generalized, this map contains it grouped by their occurrence in the term's component.

  6. sealed abstract class RewriteError extends AnyRef
  7. trait RewriteErrorHandler extends AnyRef

    An error handler for LinkInverter.invertLink() called upon declarations which could not be rewritten due to a RewriteError.

    An error handler for LinkInverter.invertLink() called upon declarations which could not be rewritten due to a RewriteError. The handler decides how to continue using a ContinuationStyle.

  8. sealed case class RewriteUnknownError(originalDecl: Declaration) extends RewriteError with Product with Serializable

Value Members

  1. object AssumeRewritable extends ContinuationStyle with Product with Serializable

    Skip the failed declaration.

    Skip the failed declaration.

    See also

    ContinuationStyle

  2. object LinkInverter

    To do

    ComFreek: Document, especially when terms are not rewritable.

  3. object LinkUtils
  4. object ModuleCreator
  5. object SkipDeclaration extends ContinuationStyle with Product with Serializable

    Skip the failed declaration.

    Skip the failed declaration.

    See also

    ContinuationStyle

Deprecated Value Members

  1. object ReferenceSubstituter
    Annotations
    @deprecated
    Deprecated

    (Since version 2019-03-14) Directly use info.kwarc.mmt.api.symbols.Renamer

Ungrouped