souffle  2.0.2-371-g6315b36
Namespaces | Functions
Aggregate.cpp File Reference
#include "ast/analysis/Aggregate.h"
#include "ast/Aggregator.h"
#include "ast/Atom.h"
#include "ast/Clause.h"
#include "ast/Relation.h"
#include "ast/TranslationUnit.h"
#include "ast/Variable.h"
#include "ast/analysis/Ground.h"
#include "ast/utility/NodeMapper.h"
#include "ast/utility/Utils.h"
#include "ast/utility/Visitor.h"
#include "souffle/utility/StringUtil.h"
#include <algorithm>
#include <map>
#include <memory>
#include <ostream>
#include <set>
#include <string>
#include <utility>
#include <vector>
Include dependency graph for Aggregate.cpp:

Go to the source code of this file.

Namespaces

 souffle
 
 souffle::ast
 
 souffle::ast::analysis
 

Functions

std::string souffle::ast::analysis::findUniqueRelationName (const Program &program, std::string base)
 Find a new relation name. More...
 
std::string souffle::ast::analysis::findUniqueVariableName (const Clause &clause, std::string base)
 Find a variable name using base to form a string like base1 Use this when you need to limit the scope of a variable to the inside of an aggregate. More...
 
std::set< std::string > souffle::ast::analysis::getInjectedVariables (const TranslationUnit &tu, const Clause &clause, const Aggregator &aggregate)
 Given an aggregate and a clause, we find all the variables that have been injected into the aggregate. More...
 
std::set< std::string > souffle::ast::analysis::getLocalVariables (const TranslationUnit &tu, const Clause &clause, const Aggregator &aggregate)
 Computes the set of local variables in an aggregate expression. More...
 
std::set< std::string > souffle::ast::analysis::getVariablesOutsideAggregate (const Clause &clause, const Aggregator &aggregate)
 Computes the set of variables occurring outside the aggregate. More...
 
std::set< std::string > souffle::ast::analysis::getWitnessVariables (const TranslationUnit &tu, const Clause &clause, const Aggregator &aggregate)
 Computes the set of witness variables that are used in the aggregate A variable is a witness if it occurs in the aggregate body (but not in an inner aggregate) and also occurs ungrounded in the outer scope. More...