souffle
2.0.2-371-g6315b36
|
Magic Set Transformation. More...
#include <MagicSet.h>
Data Structures | |
class | AdornDatabaseTransformer |
Database adornment. More... | |
class | LabelDatabaseTransformer |
Database labeller. More... | |
class | MagicSetCoreTransformer |
Core section of the magic set transformer. More... | |
class | NormaliseDatabaseTransformer |
Database normaliser for MST. More... | |
Public Member Functions | |
MagicSetTransformer * | clone () const override |
std::string | getName () const override |
MagicSetTransformer () | |
Public Member Functions inherited from souffle::ast::transform::PipelineTransformer | |
PipelineTransformer * | clone () const override |
void | disableTransformers (const std::set< std::string > &transforms) override |
std::string | getName () const override |
std::vector< Transformer * > | getSubtransformers () const override |
template<typename... Args> | |
PipelineTransformer (Args... args) | |
PipelineTransformer (VecOwn< Transformer > pipeline) | |
void | setDebugReport () override |
void | setVerbosity (bool verbose) override |
Public Member Functions inherited from souffle::ast::transform::MetaTransformer | |
bool | applySubtransformer (TranslationUnit &translationUnit, Transformer *transformer) |
Public Member Functions inherited from souffle::ast::transform::Transformer | |
bool | apply (TranslationUnit &translationUnit) |
virtual | ~Transformer ()=default |
Private Member Functions | |
bool | transform (TranslationUnit &tu) override |
Static Private Member Functions | |
static std::set< QualifiedName > | getRelationsToNotLabel (const TranslationUnit &tu) |
Gets the set of relations to not label. More... | |
static std::set< QualifiedName > | getStronglyIgnoredRelations (const TranslationUnit &tu) |
Gets the set of relations to strongly ignore during the MST process. More... | |
static std::set< QualifiedName > | getTriviallyIgnoredRelations (const TranslationUnit &tu) |
Gets the set of relations that are trivially computable, and so should not be magic-set. More... | |
static std::set< QualifiedName > | getWeaklyIgnoredRelations (const TranslationUnit &tu) |
Gets the set of relations to weakly ignore during the MST process. More... | |
static bool | shouldRun (const TranslationUnit &tu) |
Determines whether any part of the MST should be run. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from souffle::ast::transform::PipelineTransformer | |
bool | transform (TranslationUnit &translationUnit) override |
Protected Attributes inherited from souffle::ast::transform::PipelineTransformer | |
VecOwn< Transformer > | pipeline |
Protected Attributes inherited from souffle::ast::transform::MetaTransformer | |
bool | verbose = false |
Magic Set Transformation.
Involves four stages: (1) NormaliseDatabaseTransformer, for assumptions to hold (2) LabelDatabaseTransformer, to support negation (3) AdornDatabaseTransformer, to annotate information flow (4) MagicSetCoreTransformer, to perform the core magifying transformation
Definition at line 51 of file MagicSet.h.
|
inline |
|
inlineoverridevirtual |
Implements souffle::ast::transform::MetaTransformer.
Definition at line 67 of file MagicSet.h.
References MagicSetTransformer().
|
inlineoverridevirtual |
Implements souffle::ast::transform::Transformer.
Definition at line 63 of file MagicSet.h.
|
staticprivate |
Gets the set of relations to not label.
The union of strongly and trivially ignored.
Definition at line 270 of file MagicSet.cpp.
|
staticprivate |
Gets the set of relations to strongly ignore during the MST process.
Strongly-ignored relations cannot be safely duplicated without affecting semantics.
Definition at line 219 of file MagicSet.cpp.
References souffle::ast::visitDepthFirst().
|
staticprivate |
Gets the set of relations that are trivially computable, and so should not be magic-set.
Definition at line 70 of file MagicSet.cpp.
References souffle::ast::getClauses(), rel(), and souffle::ast::visitDepthFirst().
|
staticprivate |
Gets the set of relations to weakly ignore during the MST process.
Weakly-ignored relations cannot be adorned/magic'd. Superset of strongly-ignored relations.
Definition at line 96 of file MagicSet.cpp.
|
staticprivate |
Determines whether any part of the MST should be run.
Definition at line 281 of file MagicSet.cpp.
Referenced by transform().
|
inlineoverrideprivatevirtual |
Implements souffle::ast::transform::Transformer.
Definition at line 72 of file MagicSet.h.
References shouldRun(), and souffle::ast::transform::PipelineTransformer::transform().