Branch data Line data Source code
1 : : /****************************************************************************** 2 : : * Top contributors (to current version): 3 : : * Andrew Reynolds, Aina Niemetz, Mathias Preiner 4 : : * 5 : : * This file is part of the cvc5 project. 6 : : * 7 : : * Copyright (c) 2009-2024 by the authors listed in the file AUTHORS 8 : : * in the top-level source directory and their institutional affiliations. 9 : : * All rights reserved. See the file COPYING in the top-level source 10 : : * directory for licensing information. 11 : : * **************************************************************************** 12 : : * 13 : : * Bound variable manager. 14 : : */ 15 : : 16 : : #include "expr/bound_var_manager.h" 17 : : 18 : : #include "expr/node_manager_attributes.h" 19 : : #include "util/rational.h" 20 : : 21 : : using namespace cvc5::internal::kind; 22 : : 23 : : namespace cvc5::internal { 24 : : 25 : 27558 : BoundVarManager::BoundVarManager() : d_keepCacheVals(false) {} 26 : : 27 : 27558 : BoundVarManager::~BoundVarManager() {} 28 : : 29 : 19196 : void BoundVarManager::enableKeepCacheValues(bool isEnabled) 30 : : { 31 : 19196 : d_keepCacheVals = isEnabled; 32 : 19196 : } 33 : : 34 : 1506 : void BoundVarManager::setNameAttr(Node v, const std::string& name) 35 : : { 36 : 1506 : v.setAttribute(expr::VarNameAttr(), name); 37 : 1506 : } 38 : : 39 : 7257 : Node BoundVarManager::getCacheValue(TNode cv1, TNode cv2) 40 : : { 41 : 7257 : return NodeManager::currentNM()->mkNode(Kind::SEXPR, cv1, cv2); 42 : : } 43 : 4105 : Node BoundVarManager::getCacheValue(TNode cv1, TNode cv2, TNode cv3) 44 : : { 45 : 4105 : return NodeManager::currentNM()->mkNode(Kind::SEXPR, cv1, cv2, cv3); 46 : : } 47 : : 48 : 9881 : Node BoundVarManager::getCacheValue(TNode cv1, TNode cv2, size_t i) 49 : : { 50 : : return NodeManager::currentNM()->mkNode( 51 : 9881 : Kind::SEXPR, cv1, cv2, getCacheValue(i)); 52 : : } 53 : : 54 : 9881 : Node BoundVarManager::getCacheValue(size_t i) 55 : : { 56 : 19762 : return NodeManager::currentNM()->mkConstInt(Rational(i)); 57 : : } 58 : : 59 : 0 : Node BoundVarManager::getCacheValue(TNode cv, size_t i) 60 : : { 61 : 0 : return getCacheValue(cv, getCacheValue(i)); 62 : : } 63 : : 64 : : } // namespace cvc5::internal