#ifndef __ANTHEM__AST_COPY_H #define __ANTHEM__AST_COPY_H #include #include namespace anthem { namespace ast { //////////////////////////////////////////////////////////////////////////////////////////////////// // // ASTCopy // //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Preparing Deep Copying //////////////////////////////////////////////////////////////////////////////////////////////////// BinaryOperation prepareCopy(const BinaryOperation &other); Boolean prepareCopy(const Boolean &other); Comparison prepareCopy(const Comparison &other); Function prepareCopy(const Function &other); In prepareCopy(const In &other); Integer prepareCopy(const Integer &other); Interval prepareCopy(const Interval &other); Predicate prepareCopy(const Predicate &other); SpecialInteger prepareCopy(const SpecialInteger &other); String prepareCopy(const String &other); Variable prepareCopy(const Variable &other); VariableDeclaration prepareCopy(const VariableDeclaration &other); VariableDeclarationPointers prepareCopy(const VariableDeclarationPointers &other); And prepareCopy(const And &other); Biconditional prepareCopy(const Biconditional &other); Exists prepareCopy(const Exists &other); ForAll prepareCopy(const ForAll &other); Implies prepareCopy(const Implies &other); Not prepareCopy(const Not &other); Or prepareCopy(const Or &other); Term prepareCopy(const Term &term); std::vector prepareCopy(const std::vector &terms); Formula prepareCopy(const Formula &formula); std::vector prepareCopy(const std::vector &formulas); //////////////////////////////////////////////////////////////////////////////////////////////////// // Fixing Dangling Variables //////////////////////////////////////////////////////////////////////////////////////////////////// void fixDanglingVariables(ScopedFormula &scopedFormula); //////////////////////////////////////////////////////////////////////////////////////////////////// } } #endif