Clingo
Loading...
Searching...
No Matches
substitute.hh
1#pragma once
2
3#include <clingo/input/rewrite/rewrite_context.hh>
4
5namespace CppClingo::Input {
6
9
11[[nodiscard]] auto map_params(RewriteContext &ctx, Location const &loc, Symbol const &sym) -> std::variant<Symbol, Stm>;
12
14[[nodiscard]] auto map_params(RewriteContext &ctx, Term const &term) -> std::optional<Term>;
15
17[[nodiscard]] auto map_params(RewriteContext &ctx, Lit const &lit) -> std::optional<Lit>;
18
20[[nodiscard]] auto map_params(RewriteContext &ctx, HdLit const &lit) -> std::optional<HdLit>;
21
23[[nodiscard]] auto map_params(RewriteContext &ctx, BdLit const &lit) -> std::optional<BdLit>;
24
26[[nodiscard]] auto map_params(RewriteContext &ctx, Stm const &stm) -> std::optional<Stm>;
27
29[[nodiscard]] auto unmap_params(SymbolStore &store, ParamUnmap const &map, Stm const &stm) -> std::optional<Stm>;
30
32void collect_ids(Symbol const &sym, StringSet &ids);
33
35void collect_ids(Stm const &stm, StringSet &ids);
36
39
41
42} // namespace CppClingo::Input
Helper to pass arguments to rewrite functions.
Definition rewrite_context.hh:97
The Location of an expression in an input source.
Definition location.hh:44
A store for symbols.
Definition symbol.hh:454
Variant-like class to store symbols stored in a symbol store.
Definition symbol.hh:225
Util::unordered_set< String > StringSet
A set of strings.
Definition symbol.hh:83
std::variant< BdLitSimple, BdLitConjunction, BdLitAggregate, BdLitSetAggregate, BdLitTheoryAtom > BdLit
A body literal.
Definition body_literal.hh:116
std::variant< HdLitSimple, HdLitDisjunction, HdLitAggregate, HdLitSetAggregate, HdLitTheoryAtom > HdLit
A head literal.
Definition head_literal.hh:130
std::variant< LitBool, LitComparison, LitSymbolic > Lit
Variant holding the different literal types.
Definition literal.hh:129
Util::ordered_map< SharedString, SharedString > ParamUnmap
Map from parameters to their replacements.
Definition program.hh:37
void collect_ids(Symbol const &sym, StringSet &ids)
Collect all ids appearing in the symbol.
auto unmap_params(SymbolStore &store, ParamUnmap const &map, Stm const &stm) -> std::optional< Stm >
Replace all variables with the given names in the statement.
auto substitute(RewriteContext &ctx, Stm const &stm) -> Util::ResultState< Stm, TruthValue >
Substitute variables in terms of form X=term in the statement.
auto map_params(RewriteContext &ctx, Location const &loc, Symbol const &sym) -> std::variant< Symbol, Stm >
Replace all parameters in the given fact.
std::variant< StmRule, StmTheory, StmOptimize, StmWeakConstraint, StmShow, StmShowNothing, StmShowSig, StmProject, StmProjectSig, StmDefined, StmExternal, StmEdge, StmHeuristic, StmScript, StmInclude, StmProgram, StmConst, StmParts, StmComment > Stm
Variant of available statements.
Definition statement.hh:828
std::variant< TermVariable, TermSymbol, TermTuple, TermFunction, TermAbs, TermUnary, TermBinary > Term
Variant holding the different term types.
Definition term.hh:45
The result of a simplification.
Definition optional.hh:128