| souffle
    2.0.2-371-g6315b36
    | 
Apply a grounding so that the witness of a selection aggregate (min/max) can be transferred to the outer scope. More...
#include <GroundWitnesses.h>


| Public Member Functions | |
| GroundWitnessesTransformer * | clone () const override | 
| std::string | getName () const override | 
|  Public Member Functions inherited from souffle::ast::transform::Transformer | |
| bool | apply (TranslationUnit &translationUnit) | 
| virtual | ~Transformer ()=default | 
| Private Member Functions | |
| bool | transform (TranslationUnit &translationUnit) override | 
Apply a grounding so that the witness of a selection aggregate (min/max) can be transferred to the outer scope.
Here is an example:
Tallest(student) :- _ = max height : { Student(student, height) }.
student occurs ungrounded in the outer scope, but we can fix this by using the aggregate result to figure out which students satisfy this aggregate.
Tallest(student) :- n = max height : { Student(student0, height) }, Student(student, n).
This transformation is really just syntactic sugar.
Definition at line 49 of file GroundWitnesses.h.
| 
 | inlineoverridevirtual | 
Implements souffle::ast::transform::Transformer.
Definition at line 62 of file GroundWitnesses.h.
| 
 | inlineoverridevirtual | 
Implements souffle::ast::transform::Transformer.
Definition at line 58 of file GroundWitnesses.h.
| 
 | overrideprivatevirtual | 
Implements souffle::ast::transform::Transformer.
Definition at line 31 of file GroundWitnesses.cpp.
 1.8.17
 1.8.17