LCOV - code coverage report
Current view: top level - buildbot/coverage/build/src/theory - ee_setup_info.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 7 7 100.0 %
Date: 2024-09-23 10:48:02 Functions: 4 4 100.0 %
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /******************************************************************************
       2                 :            :  * Top contributors (to current version):
       3                 :            :  *   Andrew Reynolds, Aina Niemetz
       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                 :            :  * Setup information for an equality engine.
      14                 :            :  */
      15                 :            : 
      16                 :            : #include "cvc5_private.h"
      17                 :            : 
      18                 :            : #ifndef CVC5__THEORY__EE_SETUP_INFO__H
      19                 :            : #define CVC5__THEORY__EE_SETUP_INFO__H
      20                 :            : 
      21                 :            : #include <string>
      22                 :            : 
      23                 :            : namespace cvc5::internal {
      24                 :            : namespace theory {
      25                 :            : 
      26                 :            : namespace eq {
      27                 :            : class EqualityEngineNotify;
      28                 :            : }
      29                 :            : 
      30                 :            : /**
      31                 :            :  * This is a helper class that encapsulates instructions for how a Theory
      32                 :            :  * wishes to initialize and setup notifications with its official equality
      33                 :            :  * engine, e.g. via a notification class (eq::EqualityEngineNotify).
      34                 :            :  *
      35                 :            :  * This includes (at a basic level) the arguments to the equality engine
      36                 :            :  * constructor that theories may wish to modify. This information is determined
      37                 :            :  * by the Theory during needsEqualityEngine.
      38                 :            :  */
      39                 :            : struct EeSetupInfo
      40                 :            : {
      41                 :     786752 :   EeSetupInfo()
      42                 :     786752 :       : d_notify(nullptr),
      43                 :            :         d_constantsAreTriggers(true),
      44                 :            :         d_notifyNewClass(false),
      45                 :            :         d_notifyMerge(false),
      46                 :            :         d_notifyDisequal(false),
      47                 :     786752 :         d_useMaster(false)
      48                 :            :   {
      49                 :     786752 :   }
      50                 :            :   /** The notification class of the theory */
      51                 :            :   eq::EqualityEngineNotify* d_notify;
      52                 :            :   /** The name of the equality engine */
      53                 :            :   std::string d_name;
      54                 :            :   /** Constants are triggers */
      55                 :            :   bool d_constantsAreTriggers;
      56                 :            :   //-------------------------- fine grained notifications
      57                 :            :   /** Whether we need to be notified of new equivalence classes */
      58                 :            :   bool d_notifyNewClass;
      59                 :            :   /** Whether we need to be notified of merged equivalence classes */
      60                 :            :   bool d_notifyMerge;
      61                 :            :   /** Whether we need to be notified of disequal equivalence classes */
      62                 :            :   bool d_notifyDisequal;
      63                 :            :   //-------------------------- end fine grained notifications
      64                 :            :   /**
      65                 :            :    * Whether we want our state to use the master equality engine. This should
      66                 :            :    * be true exclusively for the theory of quantifiers.
      67                 :            :    */
      68                 :            :   bool d_useMaster;
      69                 :            :   /** Does it need notifications when equivalence classes are created? */
      70                 :        590 :   bool needsNotifyNewClass() const { return d_notifyNewClass; }
      71                 :            :   /** Does it need notifications when equivalence classes are merged? */
      72                 :        590 :   bool needsNotifyMerge() const { return d_notifyMerge; }
      73                 :            :   /** Does it need notifications when disequalities are generated? */
      74                 :        590 :   bool needsNotifyDisequal() const { return d_notifyDisequal; }
      75                 :            : };
      76                 :            : 
      77                 :            : }  // namespace theory
      78                 :            : }  // namespace cvc5::internal
      79                 :            : 
      80                 :            : #endif /* CVC5__THEORY__EE_SETUP_INFO__H */

Generated by: LCOV version 1.14