LCOV - code coverage report
Current view: top level - buildbot/coverage/build/test/api/cpp/issues - proj-issue581.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 95 95 100.0 %
Date: 2026-05-02 10:46:03 Functions: 1 1 100.0 %
Branches: 0 0 -

           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                 :            :  * Test for project issue #581
      11                 :            :  *
      12                 :            :  */
      13                 :            : #include <cvc5/cvc5.h>
      14                 :            : 
      15                 :            : using namespace cvc5;
      16                 :          1 : int main(void)
      17                 :            : {
      18                 :          1 :   TermManager tm;
      19                 :          1 :   Solver solver(tm);
      20                 :          1 :   solver.setOption("incremental", "false");
      21                 :          1 :   solver.setOption("sets-exp", "true");
      22                 :          1 :   solver.setOption("produce-interpolants", "true");
      23                 :          2 :   DatatypeDecl d0 = tm.mkDatatypeDecl("_dt0");
      24                 :          2 :   DatatypeConstructorDecl dtcd1 = tm.mkDatatypeConstructorDecl("_cons8");
      25                 :          1 :   d0.addConstructor(dtcd1);
      26                 :          1 :   Sort s2 = tm.mkParamSort("_p2");
      27                 :          1 :   Sort s3 = tm.mkParamSort("_p3");
      28                 :          4 :   DatatypeDecl d4 = tm.mkDatatypeDecl("_dt1", {s2, s3});
      29                 :          2 :   DatatypeConstructorDecl dtcd5 = tm.mkDatatypeConstructorDecl("_cons14");
      30                 :          2 :   Sort s6 = tm.mkUnresolvedDatatypeSort("_dt4", 3);
      31                 :          5 :   Sort s7 = s6.instantiate({s2, s2, s2});
      32                 :          1 :   dtcd5.addSelector("_sel9", s7);
      33                 :          1 :   dtcd5.addSelectorSelf("_sel10");
      34                 :          1 :   dtcd5.addSelectorSelf("_sel11");
      35                 :          2 :   Sort s8 = tm.mkUnresolvedDatatypeSort("_dt0", 0);
      36                 :          1 :   dtcd5.addSelector("_sel12", s8);
      37                 :          1 :   dtcd5.addSelectorSelf("_sel13");
      38                 :          1 :   d4.addConstructor(dtcd5);
      39                 :          2 :   DatatypeConstructorDecl dtcd9 = tm.mkDatatypeConstructorDecl("_cons19");
      40                 :          1 :   dtcd9.addSelector("_sel15", s2);
      41                 :          1 :   dtcd9.addSelectorSelf("_sel16");
      42                 :          1 :   dtcd9.addSelector("_sel17", s8);
      43                 :          1 :   dtcd9.addSelector("_sel18", s8);
      44                 :          1 :   d4.addConstructor(dtcd9);
      45                 :          2 :   DatatypeConstructorDecl dtcd10 = tm.mkDatatypeConstructorDecl("_cons25");
      46                 :          1 :   dtcd10.addSelector("_sel20", s3);
      47                 :          1 :   dtcd10.addSelector("_sel21", s3);
      48                 :          1 :   dtcd10.addSelector("_sel22", s3);
      49                 :          1 :   dtcd10.addSelector("_sel23", s3);
      50                 :          1 :   dtcd10.addSelector("_sel24", s3);
      51                 :          1 :   d4.addConstructor(dtcd10);
      52                 :          2 :   DatatypeConstructorDecl dtcd11 = tm.mkDatatypeConstructorDecl("_cons31");
      53                 :          1 :   dtcd11.addSelector("_sel26", s2);
      54                 :          5 :   Sort s12 = s6.instantiate({s3, s2, s2});
      55                 :          1 :   dtcd11.addSelector("_sel27", s12);
      56                 :          5 :   Sort s13 = s6.instantiate({s3, s2, s3});
      57                 :          1 :   dtcd11.addSelector("_sel28", s13);
      58                 :          1 :   dtcd11.addSelector("_sel29", s2);
      59                 :          1 :   dtcd11.addSelector("_sel30", s3);
      60                 :          1 :   d4.addConstructor(dtcd11);
      61                 :          1 :   Sort s14 = tm.mkParamSort("_p5");
      62                 :          1 :   Sort s15 = tm.mkParamSort("_p6");
      63                 :          1 :   Sort s16 = tm.mkParamSort("_p7");
      64                 :          5 :   DatatypeDecl d17 = tm.mkDatatypeDecl("_dt4", {s14, s15, s16});
      65                 :          2 :   DatatypeConstructorDecl dtcd18 = tm.mkDatatypeConstructorDecl("_cons32");
      66                 :          1 :   d17.addConstructor(dtcd18);
      67                 :          2 :   DatatypeConstructorDecl dtcd19 = tm.mkDatatypeConstructorDecl("_cons35");
      68                 :          2 :   Sort s20 = tm.mkUnresolvedDatatypeSort("_dt0", 0);
      69                 :          1 :   dtcd19.addSelector("_sel33", s20);
      70                 :          1 :   dtcd19.addSelectorSelf("_sel34");
      71                 :          1 :   d17.addConstructor(dtcd19);
      72                 :          2 :   DatatypeConstructorDecl dtcd21 = tm.mkDatatypeConstructorDecl("_cons39");
      73                 :          1 :   dtcd21.addSelectorSelf("_sel36");
      74                 :          2 :   Sort s22 = tm.mkUnresolvedDatatypeSort("_dt1", 2);
      75                 :          4 :   Sort s23 = s22.instantiate({s16, s16});
      76                 :          1 :   dtcd21.addSelector("_sel37", s23);
      77                 :          1 :   dtcd21.addSelector("_sel38", s15);
      78                 :          1 :   d17.addConstructor(dtcd21);
      79                 :          2 :   DatatypeConstructorDecl dtcd24 = tm.mkDatatypeConstructorDecl("_cons44");
      80                 :          1 :   dtcd24.addSelectorSelf("_sel40");
      81                 :          1 :   dtcd24.addSelector("_sel41", s15);
      82                 :          1 :   dtcd24.addSelector("_sel42", s20);
      83                 :          1 :   dtcd24.addSelector("_sel43", s16);
      84                 :          1 :   d17.addConstructor(dtcd24);
      85                 :          5 :   std::vector<Sort> v25 = tm.mkDatatypeSorts({d0, d4, d17});
      86                 :          1 :   Sort s26 = v25[0];
      87                 :          1 :   Sort s27 = v25[1];
      88                 :          1 :   Sort s28 = v25[2];
      89                 :          1 :   Sort s29 = tm.mkSetSort(s26);
      90                 :          1 :   Term t30 = tm.mkConst(s29, "_x46");
      91                 :          1 :   Term t31 = tm.mkUniverseSet(s29);
      92                 :          1 :   Term t32 = tm.mkVar(s29, "_f49_0");
      93                 :          1 :   Term t33 = tm.mkVar(s29, "_f49_1");
      94                 :          1 :   Term t34 = tm.mkVar(s29, "_f49_2");
      95                 :          3 :   Term t35 = tm.mkTerm(Kind::SET_CHOOSE, {t34});
      96                 :          4 :   Term t36 = tm.mkTerm(Kind::SET_INSERT, {t35, t30});
      97                 :          5 :   Sort s37 = tm.mkFunctionSort({s29, s29, s29}, s29);
      98                 :          5 :   Term t38 = solver.defineFun("_f49", {t32, t33, t34}, s29, t36, true);
      99                 :          6 :   Term t39 = tm.mkTerm(Kind::APPLY_UF, {t38, t30, t30, t30});
     100                 :          1 :   Op o40 = tm.mkOp(Kind::SET_MINUS);
     101                 :          4 :   Term t41 = tm.mkTerm(o40, {t30, t30});
     102                 :          1 :   Op o42 = tm.mkOp(Kind::SET_IS_SINGLETON);
     103                 :          3 :   Term t43 = tm.mkTerm(o42, {t31});
     104                 :          1 :   Sort s44 = t43.getSort();
     105                 :          1 :   Op o45 = tm.mkOp(Kind::EQUAL);
     106                 :          1 :   Term t46 = t39.eqTerm(t41);
     107                 :          1 :   Term t47 = t46.xorTerm(t43);
     108                 :          1 :   solver.assertFormula(t43);
     109                 :          1 :   Term t48 = solver.getInterpolant(t47);
     110                 :            : 
     111                 :          1 :   return 0;
     112                 :          1 : }

Generated by: LCOV version 1.14