LCOV - code coverage report
Current view: top level - buildbot/coverage/build/src/proof - trust_id.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 64 109 58.7 %
Date: 2026-02-26 11:40:56 Functions: 4 4 100.0 %
Branches: 43 78 55.1 %

           Branch data     Line data    Source code
       1                 :            : /******************************************************************************
       2                 :            :  * This file is part of the cvc5 project.
       3                 :            :  *
       4                 :            :  * Copyright (c) 2009-2026 by the authors listed in the file AUTHORS
       5                 :            :  * in the top-level source directory and their institutional affiliations.
       6                 :            :  * All rights reserved.  See the file COPYING in the top-level source
       7                 :            :  * directory for licensing information.
       8                 :            :  * ****************************************************************************
       9                 :            :  *
      10                 :            :  * Implementation of trust identifier
      11                 :            :  */
      12                 :            : 
      13                 :            : #include "proof/trust_id.h"
      14                 :            : 
      15                 :            : #include "proof/proof_checker.h"
      16                 :            : #include "util/rational.h"
      17                 :            : 
      18                 :            : using namespace cvc5::internal::kind;
      19                 :            : 
      20                 :            : namespace cvc5::internal {
      21                 :            : 
      22                 :       7096 : const char* toString(TrustId id)
      23                 :            : {
      24 [ -  - ][ +  - ]:       7096 :   switch (id)
         [ +  - ][ +  + ]
         [ +  + ][ +  + ]
         [ +  - ][ -  - ]
         [ +  - ][ -  - ]
         [ +  + ][ +  + ]
         [ +  - ][ +  - ]
         [ +  - ][ -  - ]
         [ -  - ][ -  - ]
         [ +  + ][ +  + ]
         [ -  - ][ -  + ]
         [ -  + ][ +  + ]
         [ -  + ][ -  - ]
         [ +  + ][ +  + ]
         [ -  + ][ -  - ]
         [ +  + ][ +  - ]
         [ +  + ][ +  + ]
         [ +  + ][ -  + ]
         [ +  - ][ -  - ]
      25                 :            :   {
      26                 :          0 :     case TrustId::NONE: return "NONE";
      27                 :          0 :     case TrustId::PREPROCESSED_INPUT: return "PREPROCESSED_INPUT";
      28                 :        796 :     case TrustId::THEORY_LEMMA: return "THEORY_LEMMA";
      29                 :          0 :     case TrustId::SMT_REFUTATION: return "SMT_REFUTATION";
      30                 :            :     // core
      31                 :       3007 :     case TrustId::THEORY_INFERENCE_ARITH: return "THEORY_INFERENCE_ARITH";
      32                 :          0 :     case TrustId::THEORY_INFERENCE_ARRAYS: return "THEORY_INFERENCE_ARRAYS";
      33                 :          3 :     case TrustId::THEORY_INFERENCE_DATATYPES:
      34                 :          3 :       return "THEORY_INFERENCE_DATATYPES";
      35                 :         33 :     case TrustId::THEORY_INFERENCE_SEP: return "THEORY_INFERENCE_SEP";
      36                 :        146 :     case TrustId::THEORY_INFERENCE_SETS: return "THEORY_INFERENCE_SETS";
      37                 :         53 :     case TrustId::THEORY_INFERENCE_STRINGS: return "THEORY_INFERENCE_STRINGS";
      38                 :         25 :     case TrustId::PP_STATIC_REWRITE: return "PP_STATIC_REWRITE";
      39                 :          6 :     case TrustId::THEORY_PREPROCESS: return "THEORY_PREPROCESS";
      40                 :         12 :     case TrustId::THEORY_PREPROCESS_LEMMA: return "THEORY_PREPROCESS_LEMMA";
      41                 :          0 :     case TrustId::THEORY_EXPAND_DEF: return "THEORY_EXPAND_DEF";
      42                 :            :     // preprocess passes
      43                 :          0 :     case TrustId::PREPROCESS_BV_GUASS: return "PREPROCESS_BV_GUASS";
      44                 :          0 :     case TrustId::PREPROCESS_BV_GUASS_LEMMA: return "PREPROCESS_BV_GUASS_LEMMA";
      45                 :         20 :     case TrustId::PREPROCESS_BV_TO_BOOL: return "PREPROCESS_BV_TO_BOOL";
      46                 :          0 :     case TrustId::PREPROCESS_BV_TO_INT: return "PREPROCESS_BV_TO_INT";
      47                 :          0 :     case TrustId::PREPROCESS_BV_TO_INT_LEMMA:
      48                 :          0 :       return "PREPROCESS_BV_TO_INT_LEMMA";
      49                 :          0 :     case TrustId::PREPROCESS_BOOL_TO_BV: return "PREPROCESS_BOOL_TO_BV";
      50                 :          8 :     case TrustId::PREPROCESS_ACKERMANN: return "PREPROCESS_ACKERMANN";
      51                 :         60 :     case TrustId::PREPROCESS_ACKERMANN_LEMMA:
      52                 :         60 :       return "PREPROCESS_ACKERMANN_LEMMA";
      53                 :          1 :     case TrustId::PREPROCESS_STATIC_LEARNING_LEMMA:
      54                 :          1 :       return "PREPROCESS_STATIC_LEARNING_LEMMA";
      55                 :         20 :     case TrustId::PREPROCESS_HO_ELIM: return "PREPROCESS_HO_ELIM";
      56                 :          3 :     case TrustId::PREPROCESS_HO_ELIM_LEMMA: return "PREPROCESS_HO_ELIM_LEMMA";
      57                 :          0 :     case TrustId::PREPROCESS_BITVECTOR_EAGER_ATOMS:
      58                 :          0 :       return "PREPROCESS_BITVECTOR_EAGER_ATOMS";
      59                 :          1 :     case TrustId::PREPROCESS_FF_BITSUM: return "PREPROCESS_FF_BITSUM";
      60                 :          0 :     case TrustId::PREPROCESS_FF_DISJUNCTIVE_BIT:
      61                 :          0 :       return "PREPROCESS_FF_DISJUNCTIVE_BIT";
      62                 :         13 :     case TrustId::PREPROCESS_FUN_DEF_FMF: return "PREPROCESS_FUN_DEF_FMF";
      63                 :          0 :     case TrustId::PREPROCESS_ITE_SIMP: return "PREPROCESS_ITE_SIMP";
      64                 :          0 :     case TrustId::PREPROCESS_LEARNED_REWRITE:
      65                 :          0 :       return "PREPROCESS_LEARNED_REWRITE";
      66                 :          0 :     case TrustId::PREPROCESS_LEARNED_REWRITE_LEMMA:
      67                 :          0 :       return "PREPROCESS_LEARNED_REWRITE_LEMMA";
      68                 :          0 :     case TrustId::PREPROCESS_MIPLIB_TRICK: return "PREPROCESS_MIPLIB_TRICK";
      69                 :          0 :     case TrustId::PREPROCESS_MIPLIB_TRICK_LEMMA:
      70                 :          0 :       return "PREPROCESS_MIPLIB_TRICK_LEMMA";
      71                 :          0 :     case TrustId::PREPROCESS_NL_EXT_PURIFY: return "PREPROCESS_NL_EXT_PURIFY";
      72                 :          0 :     case TrustId::PREPROCESS_NL_EXT_PURIFY_LEMMA:
      73                 :          0 :       return "PREPROCESS_NL_EXT_PURIFY_LEMMA";
      74                 :          3 :     case TrustId::PREPROCESS_BV_INTRO_POW2: return "PREPROCESS_BV_INTRO_POW2";
      75                 :          1 :     case TrustId::PREPROCESS_FOREIGN_THEORY_REWRITE:
      76                 :          1 :       return "PREPROCESS_FOREIGN_THEORY_REWRITE";
      77                 :         11 :     case TrustId::PREPROCESS_UNCONSTRAINED_SIMP:
      78                 :         11 :       return "PREPROCESS_UNCONSTRAINED_SIMP";
      79                 :          2 :     case TrustId::PREPROCESS_QUANTIFIERS_PP: return "PREPROCESS_QUANTIFIERS_PP";
      80                 :          0 :     case TrustId::PREPROCESS_REAL_TO_INT: return "PREPROCESS_REAL_TO_INT";
      81                 :          0 :     case TrustId::PREPROCESS_SORT_INFER: return "PREPROCESS_SORT_INFER";
      82                 :          0 :     case TrustId::PREPROCESS_SORT_INFER_LEMMA:
      83                 :          0 :       return "PREPROCESS_SORT_INFER_LEMMA";
      84                 :          3 :     case TrustId::PREPROCESS_STRINGS_EAGER_PP:
      85                 :          3 :       return "PREPROCESS_STRINGS_EAGER_PP";
      86                 :            :     // other
      87                 :          0 :     case TrustId::UF_DISTINCT: return "UF_DISTINCT";
      88                 :         31 :     case TrustId::ARITH_NL_COVERING_DIRECT: return "ARITH_NL_COVERING_DIRECT";
      89                 :         21 :     case TrustId::ARITH_NL_COVERING_RECURSIVE:
      90                 :         21 :       return "ARITH_NL_COVERING_RECURSIVE";
      91                 :         92 :     case TrustId::ARITH_NL_COMPARE_LIT_TRANSFORM:
      92                 :         92 :       return "ARITH_NL_COMPARE_LIT_TRANSFORM";
      93                 :          0 :     case TrustId::ARITH_DIO_LEMMA: return "ARITH_DIO_LEMMA";
      94                 :         47 :     case TrustId::ARITH_STATIC_LEARN: return "ARITH_STATIC_LEARN";
      95                 :          0 :     case TrustId::ARITH_NL_COMPARE_LEMMA: return "ARITH_NL_COMPARE_LEMMA";
      96                 :          0 :     case TrustId::ARITH_NL_FLATTEN_MON_LEMMA:
      97                 :          0 :       return "ARITH_NL_FLATTEN_MON_LEMMA";
      98                 :        141 :     case TrustId::BV_BITBLAST_CONFLICT: return "BV_BITBLAST_CONFLICT";
      99                 :         12 :     case TrustId::BV_PP_ASSERT: return "BV_PP_ASSERT";
     100                 :        149 :     case TrustId::DIAMONDS: return "DIAMONDS";
     101                 :         16 :     case TrustId::EXT_THEORY_REWRITE: return "EXT_THEORY_REWRITE";
     102                 :          0 :     case TrustId::REWRITE_NO_ELABORATE: return "REWRITE_NO_ELABORATE";
     103                 :          1 :     case TrustId::FLATTENING_REWRITE: return "FLATTENING_REWRITE";
     104                 :          0 :     case TrustId::SUBS_NO_ELABORATE: return "SUBS_NO_ELABORATE";
     105                 :          0 :     case TrustId::SUBS_MAP: return "SUBS_MAP";
     106                 :          6 :     case TrustId::SUBS_EQ: return "SUBS_EQ";
     107                 :       2062 :     case TrustId::ARITH_PRED_CAST_TYPE: return "ARITH_PRED_CAST_TYPE";
     108                 :         21 :     case TrustId::RE_ELIM: return "RE_ELIM";
     109                 :          0 :     case TrustId::QUANTIFIERS_PREPROCESS: return "QUANTIFIERS_PREPROCESS";
     110                 :          7 :     case TrustId::QUANTIFIERS_INST_REWRITE: return "QUANTIFIERS_INST_REWRITE";
     111                 :          2 :     case TrustId::QUANTIFIERS_SUB_CBQI_LEMMA:
     112                 :          2 :       return "QUANTIFIERS_SUB_CBQI_LEMMA";
     113                 :          6 :     case TrustId::QUANTIFIERS_NESTED_QE_LEMMA:
     114                 :          6 :       return "QUANTIFIERS_NESTED_QE_LEMMA";
     115                 :         40 :     case TrustId::STRINGS_PP_STATIC_REWRITE: return "STRINGS_PP_STATIC_REWRITE";
     116                 :         26 :     case TrustId::VALID_WITNESS: return "VALID_WITNESS";
     117                 :          4 :     case TrustId::SUBTYPE_ELIMINATION: return "SUBTYPE_ELIMINATION";
     118                 :          0 :     case TrustId::MACRO_THEORY_REWRITE_RCONS:
     119                 :          0 :       return "MACRO_THEORY_REWRITE_RCONS";
     120                 :         15 :     case TrustId::MACRO_THEORY_REWRITE_RCONS_SIMPLE:
     121                 :         15 :       return "MACRO_THEORY_REWRITE_RCONS_SIMPLE";
     122                 :        170 :     case TrustId::INT_BLASTER: return "INT_BLASTER";
     123                 :            :     // unknown sources
     124                 :          0 :     case TrustId::UNKNOWN_PREPROCESS: return "UNKNOWN_PREPROCESS";
     125                 :          0 :     case TrustId::UNKNOWN_PREPROCESS_LEMMA: return "UNKNOWN_PREPROCESS_LEMMA";
     126                 :          0 :     default: return "TrustId::Unknown";
     127                 :            :   };
     128                 :            : }
     129                 :            : 
     130                 :       7096 : std::ostream& operator<<(std::ostream& out, TrustId id)
     131                 :            : {
     132                 :       7096 :   out << toString(id);
     133                 :       7096 :   return out;
     134                 :            : }
     135                 :            : 
     136                 :     295378 : Node mkTrustId(NodeManager* nm, TrustId id)
     137                 :            : {
     138                 :     590756 :   return nm->mkConstInt(Rational(static_cast<uint32_t>(id)));
     139                 :            : }
     140                 :            : 
     141                 :      75756 : bool getTrustId(TNode n, TrustId& i)
     142                 :            : {
     143                 :            :   uint32_t index;
     144         [ -  + ]:      75756 :   if (!ProofRuleChecker::getUInt32(n, index))
     145                 :            :   {
     146                 :          0 :     return false;
     147                 :            :   }
     148                 :      75756 :   i = static_cast<TrustId>(index);
     149                 :      75756 :   return true;
     150                 :            : }
     151                 :            : 
     152                 :            : }  // namespace cvc5::internal

Generated by: LCOV version 1.14