FreeTensor
Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Member Functions | List of all members
freetensor::Z3Simplify Class Reference

#include <z3_simplify.h>

Inheritance diagram for freetensor::Z3Simplify:
Inheritance graph
[legend]
Collaboration diagram for freetensor::Z3Simplify:
Collaboration graph
[legend]

Public Member Functions

 Z3Simplify ()
 
- Public Member Functions inherited from freetensor::Mutator
virtual ~Mutator ()
 
virtual Stmt operator() (const Stmt &op) final
 
virtual Expr operator() (const Expr &op) final
 

Protected Member Functions

int getVarId (const Expr &op)
 
void put (const Expr &key, const z3::expr &expr, const std::vector< std::optional< z3::expr > > &conds={})
 
bool exists (const Expr &key)
 
const z3::expr & get (const Expr &key)
 
const std::vector< std::optional< z3::expr > > & conds (const Expr &key)
 
void push (const Expr &op)
 
void pop ()
 
bool prove (const Expr &op)
 
Expr visit (const Var &op) override
 
Expr visit (const Load &op) override
 
Expr visit (const IntConst &op) override
 
Expr visit (const BoolConst &op) override
 
Expr visit (const Add &op) override
 
Expr visit (const Sub &op) override
 
Expr visit (const Mul &op) override
 
Expr visit (const FloorDiv &op) override
 
Expr visit (const CeilDiv &op) override
 
Expr visit (const Mod &op) override
 
Expr visit (const Min &op) override
 
Expr visit (const Max &op) override
 
Expr visit (const LT &op) override
 
Expr visit (const LE &op) override
 
Expr visit (const GT &op) override
 
Expr visit (const GE &op) override
 
Expr visit (const EQ &op) override
 
Expr visit (const NE &op) override
 
Expr visit (const LAnd &op) override
 
Expr visit (const LOr &op) override
 
Expr visit (const LNot &op) override
 
Expr visit (const IfExpr &op) override
 
Stmt visit (const If &op) override
 
Stmt visit (const Assert &op) override
 
Stmt visit (const Assume &op) override
 
Stmt visit (const For &op) override
 
virtual Stmt visit (const Any &op)
 
virtual Stmt visit (const StmtSeq &op)
 
virtual Stmt visit (const VarDef &op)
 
virtual Expr visit (const Var &op)
 
virtual Stmt visit (const Store &op)
 
virtual Stmt visit (const Alloc &op)
 
virtual Stmt visit (const Free &op)
 
virtual Expr visit (const Load &op)
 
virtual Stmt visit (const ReduceTo &op)
 
virtual Expr visit (const AnyExpr &op)
 
virtual Expr visit (const IntConst &op)
 
virtual Expr visit (const FloatConst &op)
 
virtual Expr visit (const BoolConst &op)
 
virtual Expr visit (const Add &op)
 
virtual Expr visit (const Sub &op)
 
virtual Expr visit (const Mul &op)
 
virtual Expr visit (const RealDiv &op)
 
virtual Expr visit (const FloorDiv &op)
 
virtual Expr visit (const CeilDiv &op)
 
virtual Expr visit (const RoundTowards0Div &op)
 
virtual Expr visit (const Mod &op)
 
virtual Expr visit (const Remainder &op)
 
virtual Expr visit (const Min &op)
 
virtual Expr visit (const Max &op)
 
virtual Expr visit (const LT &op)
 
virtual Expr visit (const LE &op)
 
virtual Expr visit (const GT &op)
 
virtual Expr visit (const GE &op)
 
virtual Expr visit (const EQ &op)
 
virtual Expr visit (const NE &op)
 
virtual Expr visit (const LAnd &op)
 
virtual Expr visit (const LOr &op)
 
virtual Expr visit (const LNot &op)
 
virtual Expr visit (const Sqrt &op)
 
virtual Expr visit (const Exp &op)
 
virtual Expr visit (const Ln &op)
 
virtual Expr visit (const Square &op)
 
virtual Expr visit (const Sigmoid &op)
 
virtual Expr visit (const Sin &op)
 
virtual Expr visit (const Cos &op)
 
virtual Expr visit (const Tan &op)
 
virtual Expr visit (const Tanh &op)
 
virtual Expr visit (const Abs &op)
 
virtual Expr visit (const Floor &op)
 
virtual Expr visit (const Ceil &op)
 
virtual Expr visit (const Unbound &op)
 
virtual Stmt visit (const For &op)
 
virtual Stmt visit (const If &op)
 
virtual Stmt visit (const Assert &op)
 
virtual Stmt visit (const Assume &op)
 
virtual Expr visit (const IfExpr &op)
 
virtual Expr visit (const Cast &op)
 
virtual Expr visit (const Intrinsic &op)
 
virtual Stmt visit (const Eval &op)
 
virtual Stmt visit (const MatMul &op)
 
virtual Stmt visit (const MarkVersion &op)
 
virtual Expr visit (const LoadAtVersion &op)
 
- Protected Member Functions inherited from freetensor::Mutator
virtual Expr visitExpr (const Expr &op)
 
virtual Stmt visitStmt (const Stmt &op)
 
virtual Stmt visit (const Any &op)
 
virtual Stmt visit (const StmtSeq &op)
 
virtual Stmt visit (const VarDef &op)
 
virtual Expr visit (const Var &op)
 
virtual Stmt visit (const Store &op)
 
virtual Stmt visit (const Alloc &op)
 
virtual Stmt visit (const Free &op)
 
virtual Expr visit (const Load &op)
 
virtual Stmt visit (const ReduceTo &op)
 
virtual Expr visit (const AnyExpr &op)
 
virtual Expr visit (const IntConst &op)
 
virtual Expr visit (const FloatConst &op)
 
virtual Expr visit (const BoolConst &op)
 
virtual Expr visit (const Add &op)
 
virtual Expr visit (const Sub &op)
 
virtual Expr visit (const Mul &op)
 
virtual Expr visit (const RealDiv &op)
 
virtual Expr visit (const FloorDiv &op)
 
virtual Expr visit (const CeilDiv &op)
 
virtual Expr visit (const RoundTowards0Div &op)
 
virtual Expr visit (const Mod &op)
 
virtual Expr visit (const Remainder &op)
 
virtual Expr visit (const Min &op)
 
virtual Expr visit (const Max &op)
 
virtual Expr visit (const LT &op)
 
virtual Expr visit (const LE &op)
 
virtual Expr visit (const GT &op)
 
virtual Expr visit (const GE &op)
 
virtual Expr visit (const EQ &op)
 
virtual Expr visit (const NE &op)
 
virtual Expr visit (const LAnd &op)
 
virtual Expr visit (const LOr &op)
 
virtual Expr visit (const LNot &op)
 
virtual Expr visit (const Sqrt &op)
 
virtual Expr visit (const Exp &op)
 
virtual Expr visit (const Ln &op)
 
virtual Expr visit (const Square &op)
 
virtual Expr visit (const Sigmoid &op)
 
virtual Expr visit (const Sin &op)
 
virtual Expr visit (const Cos &op)
 
virtual Expr visit (const Tan &op)
 
virtual Expr visit (const Tanh &op)
 
virtual Expr visit (const Abs &op)
 
virtual Expr visit (const Floor &op)
 
virtual Expr visit (const Ceil &op)
 
virtual Expr visit (const Unbound &op)
 
virtual Stmt visit (const For &op)
 
virtual Stmt visit (const If &op)
 
virtual Stmt visit (const Assert &op)
 
virtual Stmt visit (const Assume &op)
 
virtual Expr visit (const IfExpr &op)
 
virtual Expr visit (const Cast &op)
 
virtual Expr visit (const Intrinsic &op)
 
virtual Stmt visit (const Eval &op)
 
virtual Stmt visit (const MatMul &op)
 
virtual Stmt visit (const MarkVersion &op)
 
virtual Expr visit (const LoadAtVersion &op)
 

Additional Inherited Members

- Public Types inherited from freetensor::Mutator
typedef Expr ExprRetType
 
typedef Stmt StmtRetType
 

Detailed Description

Simplify the AST using Z3

Comparing to SimplifyPass, Z3Simplify has the following features:

Z3Simplify can work on a root-less sub-AST, but in this case, it will not benefit from context from the missing ancestor nodes.

Z3Simplify is conflict with SymbolTable. If you want to use these two classes together, please use Z3SimplifyWithSymbolTable.

Constructor & Destructor Documentation

◆ Z3Simplify()

freetensor::Z3Simplify::Z3Simplify ( )
inline

Member Function Documentation

◆ conds()

const std::vector< std::optional< z3::expr > > & freetensor::Z3Simplify::conds ( const Expr key)
protected

◆ exists()

bool freetensor::Z3Simplify::exists ( const Expr key)
protected

◆ get()

const z3::expr & freetensor::Z3Simplify::get ( const Expr key)
protected

◆ getVarId()

int freetensor::Z3Simplify::getVarId ( const Expr op)
protected

◆ pop()

void freetensor::Z3Simplify::pop ( )
protected

◆ prove()

bool freetensor::Z3Simplify::prove ( const Expr op)
protected

◆ push()

void freetensor::Z3Simplify::push ( const Expr op)
protected

◆ put()

void freetensor::Z3Simplify::put ( const Expr key,
const z3::expr &  expr,
const std::vector< std::optional< z3::expr > > &  conds = {} 
)
protected

◆ visit() [1/83]

virtual Expr freetensor::Mutator::visit ( const Abs op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [2/83]

virtual Expr freetensor::Mutator::visit ( const Add op)
inlineprotectedvirtual

◆ visit() [3/83]

Expr freetensor::Z3Simplify::visit ( const Add op)
overrideprotectedvirtual

◆ visit() [4/83]

virtual Stmt freetensor::Mutator::visit ( const Alloc op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [5/83]

virtual Stmt freetensor::Mutator::visit ( const Any op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [6/83]

virtual Expr freetensor::Mutator::visit ( const AnyExpr op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [7/83]

virtual Stmt freetensor::Mutator::visit ( const Assert op)
inlineprotectedvirtual

◆ visit() [8/83]

Stmt freetensor::Z3Simplify::visit ( const Assert op)
overrideprotectedvirtual

◆ visit() [9/83]

virtual Stmt freetensor::Mutator::visit ( const Assume op)
inlineprotectedvirtual

◆ visit() [10/83]

Stmt freetensor::Z3Simplify::visit ( const Assume op)
overrideprotectedvirtual

◆ visit() [11/83]

virtual Expr freetensor::Mutator::visit ( const BoolConst op)
inlineprotectedvirtual

◆ visit() [12/83]

Expr freetensor::Z3Simplify::visit ( const BoolConst op)
overrideprotectedvirtual

◆ visit() [13/83]

virtual Expr freetensor::Mutator::visit ( const Cast op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [14/83]

virtual Expr freetensor::Mutator::visit ( const Ceil op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [15/83]

virtual Expr freetensor::Mutator::visit ( const CeilDiv op)
inlineprotectedvirtual

◆ visit() [16/83]

Expr freetensor::Z3Simplify::visit ( const CeilDiv op)
overrideprotectedvirtual

◆ visit() [17/83]

virtual Expr freetensor::Mutator::visit ( const Cos op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [18/83]

virtual Expr freetensor::Mutator::visit ( const EQ op)
inlineprotectedvirtual

◆ visit() [19/83]

Expr freetensor::Z3Simplify::visit ( const EQ op)
overrideprotectedvirtual

◆ visit() [20/83]

virtual Stmt freetensor::Mutator::visit ( const Eval op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [21/83]

virtual Expr freetensor::Mutator::visit ( const Exp op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [22/83]

virtual Expr freetensor::Mutator::visit ( const FloatConst op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [23/83]

virtual Expr freetensor::Mutator::visit ( const Floor op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [24/83]

virtual Expr freetensor::Mutator::visit ( const FloorDiv op)
inlineprotectedvirtual

◆ visit() [25/83]

Expr freetensor::Z3Simplify::visit ( const FloorDiv op)
overrideprotectedvirtual

◆ visit() [26/83]

virtual Stmt freetensor::Mutator::visit ( const For op)
inlineprotectedvirtual

◆ visit() [27/83]

Stmt freetensor::Z3Simplify::visit ( const For op)
overrideprotectedvirtual

◆ visit() [28/83]

virtual Stmt freetensor::Mutator::visit ( const Free op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [29/83]

virtual Expr freetensor::Mutator::visit ( const GE op)
inlineprotectedvirtual

◆ visit() [30/83]

Expr freetensor::Z3Simplify::visit ( const GE op)
overrideprotectedvirtual

◆ visit() [31/83]

virtual Expr freetensor::Mutator::visit ( const GT op)
inlineprotectedvirtual

◆ visit() [32/83]

Expr freetensor::Z3Simplify::visit ( const GT op)
overrideprotectedvirtual

◆ visit() [33/83]

virtual Stmt freetensor::Mutator::visit ( const If op)
inlineprotectedvirtual

◆ visit() [34/83]

Stmt freetensor::Z3Simplify::visit ( const If op)
overrideprotectedvirtual

◆ visit() [35/83]

virtual Expr freetensor::Mutator::visit ( const IfExpr op)
inlineprotectedvirtual

◆ visit() [36/83]

Expr freetensor::Z3Simplify::visit ( const IfExpr op)
overrideprotectedvirtual

◆ visit() [37/83]

virtual Expr freetensor::Mutator::visit ( const IntConst op)
inlineprotectedvirtual

◆ visit() [38/83]

Expr freetensor::Z3Simplify::visit ( const IntConst op)
overrideprotectedvirtual

◆ visit() [39/83]

virtual Expr freetensor::Mutator::visit ( const Intrinsic op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [40/83]

virtual Expr freetensor::Mutator::visit ( const LAnd op)
inlineprotectedvirtual

◆ visit() [41/83]

Expr freetensor::Z3Simplify::visit ( const LAnd op)
overrideprotectedvirtual

◆ visit() [42/83]

virtual Expr freetensor::Mutator::visit ( const LE op)
inlineprotectedvirtual

◆ visit() [43/83]

Expr freetensor::Z3Simplify::visit ( const LE op)
overrideprotectedvirtual

◆ visit() [44/83]

virtual Expr freetensor::Mutator::visit ( const Ln op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [45/83]

virtual Expr freetensor::Mutator::visit ( const LNot op)
inlineprotectedvirtual

◆ visit() [46/83]

Expr freetensor::Z3Simplify::visit ( const LNot op)
overrideprotectedvirtual

◆ visit() [47/83]

virtual Expr freetensor::Mutator::visit ( const Load op)
inlineprotectedvirtual

◆ visit() [48/83]

Expr freetensor::Z3Simplify::visit ( const Load op)
overrideprotectedvirtual

◆ visit() [49/83]

virtual Expr freetensor::Mutator::visit ( const LoadAtVersion op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [50/83]

virtual Expr freetensor::Mutator::visit ( const LOr op)
inlineprotectedvirtual

◆ visit() [51/83]

Expr freetensor::Z3Simplify::visit ( const LOr op)
overrideprotectedvirtual

◆ visit() [52/83]

virtual Expr freetensor::Mutator::visit ( const LT op)
inlineprotectedvirtual

◆ visit() [53/83]

Expr freetensor::Z3Simplify::visit ( const LT op)
overrideprotectedvirtual

◆ visit() [54/83]

virtual Stmt freetensor::Mutator::visit ( const MarkVersion op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [55/83]

virtual Stmt freetensor::Mutator::visit ( const MatMul op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [56/83]

virtual Expr freetensor::Mutator::visit ( const Max op)
inlineprotectedvirtual

◆ visit() [57/83]

Expr freetensor::Z3Simplify::visit ( const Max op)
overrideprotectedvirtual

◆ visit() [58/83]

virtual Expr freetensor::Mutator::visit ( const Min op)
inlineprotectedvirtual

◆ visit() [59/83]

Expr freetensor::Z3Simplify::visit ( const Min op)
overrideprotectedvirtual

◆ visit() [60/83]

virtual Expr freetensor::Mutator::visit ( const Mod op)
inlineprotectedvirtual

◆ visit() [61/83]

Expr freetensor::Z3Simplify::visit ( const Mod op)
overrideprotectedvirtual

◆ visit() [62/83]

virtual Expr freetensor::Mutator::visit ( const Mul op)
inlineprotectedvirtual

◆ visit() [63/83]

Expr freetensor::Z3Simplify::visit ( const Mul op)
overrideprotectedvirtual

◆ visit() [64/83]

virtual Expr freetensor::Mutator::visit ( const NE op)
inlineprotectedvirtual

◆ visit() [65/83]

Expr freetensor::Z3Simplify::visit ( const NE op)
overrideprotectedvirtual

◆ visit() [66/83]

virtual Expr freetensor::Mutator::visit ( const RealDiv op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [67/83]

virtual Stmt freetensor::Mutator::visit ( const ReduceTo op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [68/83]

virtual Expr freetensor::Mutator::visit ( const Remainder op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [69/83]

virtual Expr freetensor::Mutator::visit ( const RoundTowards0Div op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [70/83]

virtual Expr freetensor::Mutator::visit ( const Sigmoid op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [71/83]

virtual Expr freetensor::Mutator::visit ( const Sin op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [72/83]

virtual Expr freetensor::Mutator::visit ( const Sqrt op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [73/83]

virtual Expr freetensor::Mutator::visit ( const Square op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [74/83]

virtual Stmt freetensor::Mutator::visit ( const StmtSeq op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [75/83]

virtual Stmt freetensor::Mutator::visit ( const Store op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [76/83]

virtual Expr freetensor::Mutator::visit ( const Sub op)
inlineprotectedvirtual

◆ visit() [77/83]

Expr freetensor::Z3Simplify::visit ( const Sub op)
overrideprotectedvirtual

◆ visit() [78/83]

virtual Expr freetensor::Mutator::visit ( const Tan op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [79/83]

virtual Expr freetensor::Mutator::visit ( const Tanh op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [80/83]

virtual Expr freetensor::Mutator::visit ( const Unbound op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.

◆ visit() [81/83]

virtual Expr freetensor::Mutator::visit ( const Var op)
inlineprotectedvirtual

◆ visit() [82/83]

Expr freetensor::Z3Simplify::visit ( const Var op)
overrideprotectedvirtual

◆ visit() [83/83]

virtual Stmt freetensor::Mutator::visit ( const VarDef op)
inlineprotectedvirtual

Reimplemented from freetensor::Mutator.

Reimplemented in freetensor::Z3SimplifyWithSymbolTable.


The documentation for this class was generated from the following files: