package time
- Alphabetic
- Public
- All
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.
Some minor classes that are used throughout MMT are defined in this package, in particular:
The package also contains root classes for certain types that are subclassed throughout the package. Most importantly:
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 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.
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.
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 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.
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.
The package utils defines general purpose APIs for files, URIs, HTML building, etc.
This package defines various MMT-independent high-level APIs.
This package defines various MMT-independent high-level APIs. Various basic functions are declared directly in this package object in order to be easily available.
Most other files in this package are self-contained and independent of the rest of MMT and each other. We describe them in groups below.
- Union disjoint union of Scala types - MyList extensions of Scala's lists (via implicit conversions) - HashRelation, HashMapToSet, and HashEquality: hash-related data structures for - While while loops that allow for break and continue
- Killable tasks that can be notified that they should be canceled. In particular, MMTTasks can be aborted without risking an inconsistent state. - Unparsed for simple parsing of strings - ScalaTo serialization helpers for Scala objects - ValueCache factory methods that introduce structure sharing by resuing previous pointers - XMLToScala framework for conveniently turning a set of case classes into an XML parser for the corresponding schema
MMT provides various APIs that extend or simplify APIs provided Java or Scala: - File file paths and interacting with files - URI URIs - xml various helper function for working with XML and dereferencing URLs (not really a wrapper but fits best here) - ShellCommand commands executed on the system shell
- Dot the dot languages for graph layouting - JSON the JSON language - HTML API for building HTML pages programmatically