Branch data Line data Source code
1 : : /****************************************************************************** 2 : : * Top contributors (to current version): 3 : : * Andrew Reynolds 4 : : * 5 : : * This file is part of the cvc5 project. 6 : : * 7 : : * Copyright (c) 2009-2025 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 : : * The lemma property definition 14 : : */ 15 : : 16 : : #include "theory/lemma_property.h" 17 : : 18 : : #include <ostream> 19 : : 20 : : namespace cvc5::internal { 21 : : namespace theory { 22 : : 23 : 4383 : LemmaProperty operator|(LemmaProperty lhs, LemmaProperty rhs) 24 : : { 25 : : return static_cast<LemmaProperty>(static_cast<uint32_t>(lhs) 26 : 4383 : | static_cast<uint32_t>(rhs)); 27 : : } 28 : 4383 : LemmaProperty& operator|=(LemmaProperty& lhs, LemmaProperty rhs) 29 : : { 30 : 4383 : lhs = lhs | rhs; 31 : 4383 : return lhs; 32 : : } 33 : 3231850 : LemmaProperty operator&(LemmaProperty lhs, LemmaProperty rhs) 34 : : { 35 : : return static_cast<LemmaProperty>(static_cast<uint32_t>(lhs) 36 : 3231850 : & static_cast<uint32_t>(rhs)); 37 : : } 38 : 0 : LemmaProperty& operator&=(LemmaProperty& lhs, LemmaProperty rhs) 39 : : { 40 : 0 : lhs = lhs & rhs; 41 : 0 : return lhs; 42 : : } 43 : 855335 : bool isLemmaPropertyRemovable(LemmaProperty p) 44 : : { 45 : 855335 : return (p & LemmaProperty::REMOVABLE) == LemmaProperty::REMOVABLE; 46 : : } 47 : 665653 : bool isLemmaPropertySendAtoms(LemmaProperty p) 48 : : { 49 : 665653 : return (p & LemmaProperty::SEND_ATOMS) == LemmaProperty::SEND_ATOMS; 50 : : } 51 : 190 : bool isLemmaPropertyNeedsJustify(LemmaProperty p) 52 : : { 53 : 190 : return (p & LemmaProperty::NEEDS_JUSTIFY) == LemmaProperty::NEEDS_JUSTIFY; 54 : : } 55 : 855335 : bool isLemmaPropertyInprocess(LemmaProperty p) 56 : : { 57 : 855335 : return (p & LemmaProperty::INPROCESS) == LemmaProperty::INPROCESS; 58 : : } 59 : 855335 : bool isLemmaPropertyLocal(LemmaProperty p) 60 : : { 61 : 855335 : return (p & LemmaProperty::LOCAL) == LemmaProperty::LOCAL; 62 : : } 63 : : 64 : 0 : std::ostream& operator<<(std::ostream& out, LemmaProperty p) 65 : : { 66 [ - - ]: 0 : if (p == LemmaProperty::NONE) 67 : : { 68 : 0 : out << "NONE"; 69 : : } 70 : : else 71 : : { 72 : 0 : out << "{"; 73 [ - - ]: 0 : if (isLemmaPropertyRemovable(p)) 74 : : { 75 : 0 : out << " REMOVABLE"; 76 : : } 77 [ - - ]: 0 : if (isLemmaPropertySendAtoms(p)) 78 : : { 79 : 0 : out << " SEND_ATOMS"; 80 : : } 81 [ - - ]: 0 : if (isLemmaPropertyNeedsJustify(p)) 82 : : { 83 : 0 : out << " NEEDS_JUSTIFY"; 84 : : } 85 [ - - ]: 0 : if (isLemmaPropertyInprocess(p)) 86 : : { 87 : 0 : out << " INPROCESS"; 88 : : } 89 [ - - ]: 0 : if (isLemmaPropertyLocal(p)) 90 : : { 91 : 0 : out << " LOCAL"; 92 : : } 93 : 0 : out << " }"; 94 : : } 95 : 0 : return out; 96 : : } 97 : : 98 : : } // namespace theory 99 : : } // namespace cvc5::internal