3#ifndef __PERCEMON_AST_HPP__
4#define __PERCEMON_AST_HPP__
6#include "percemon/ast/functions.hpp"
7#include "percemon/ast/primitives.hpp"
8#include "percemon/ast/s4u.hpp"
9#include "percemon/ast/tqtl.hpp"
15using namespace ast::primitives;
16using namespace ast::functions;
21ast::PinPtr Pinned(Var_x x, Var_f f);
22ast::PinPtr Pinned(Var_x x);
23ast::PinPtr Pinned(Var_f f);
25ast::ExistsPtr Exists(std::initializer_list<Var_id> id_list);
26ast::ForallPtr Forall(std::initializer_list<Var_id> id_list);
28ast::NotPtr Not(
const Expr& arg);
29ast::AndPtr And(
const std::vector<Expr>& args);
30ast::OrPtr Or(
const std::vector<Expr>& args);
31ast::PreviousPtr Previous(
const Expr& arg);
32ast::AlwaysPtr Always(
const Expr& arg);
33ast::SometimesPtr Sometimes(
const Expr& arg);
34ast::SincePtr Since(
const Expr& a,
const Expr& b);
35ast::BackToPtr BackTo(
const Expr& a,
const Expr& b);
37ast::AreaOf Area(Var_id
id,
double scale = 1.0);
38ast::SpArea Area(
const ast::SpatialExpr& expr,
double scale = 1.0);
40ast::SpExistsPtr SpExists(
const ast::SpatialExpr&);
41ast::SpForallPtr SpForall(
const ast::SpatialExpr&);
42ast::ComplementPtr Complement(
const ast::SpatialExpr&);
43ast::IntersectPtr Intersect(
const std::vector<ast::SpatialExpr>&);
44ast::UnionPtr Union(
const std::vector<ast::SpatialExpr>&);
45ast::InteriorPtr Interior(
const ast::SpatialExpr&);
46ast::ClosurePtr Closure(
const ast::SpatialExpr&);
48ast::SpPreviousPtr SpPrevious(
const ast::SpatialExpr&);
50ast::SpAlwaysPtr SpAlways(
const ast::SpatialExpr&);
51ast::SpAlwaysPtr SpAlways(
const FrameInterval&,
const ast::SpatialExpr&);
53ast::SpSometimesPtr SpSometimes(
const ast::SpatialExpr&);
54ast::SpSometimesPtr SpSometimes(
const FrameInterval&,
const ast::SpatialExpr&);
56ast::SpSincePtr SpSince(
const ast::SpatialExpr&,
const ast::SpatialExpr&);
58SpSince(
const FrameInterval&,
const ast::SpatialExpr&,
const ast::SpatialExpr&);
60ast::SpBackToPtr SpBackTo(
const ast::SpatialExpr&,
const ast::SpatialExpr&);
62SpBackTo(
const FrameInterval&,
const ast::SpatialExpr&,
const ast::SpatialExpr&);