File: proj-issue422.cpp

package info (click to toggle)
cvc5 1.3.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 87,260 kB
  • sloc: cpp: 383,850; java: 12,207; python: 12,090; sh: 5,679; ansic: 4,729; lisp: 763; perl: 208; makefile: 38
file content (57 lines) | stat: -rw-r--r-- 2,211 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/******************************************************************************
 * Top contributors (to current version):
 *   Aina Niemetz, Andrew Reynolds
 *
 * This file is part of the cvc5 project.
 *
 * Copyright (c) 2009-2025 by the authors listed in the file AUTHORS
 * in the top-level source directory and their institutional affiliations.
 * All rights reserved.  See the file COPYING in the top-level source
 * directory for licensing information.
 * ****************************************************************************
 *
 * Test for project issue #422.
 */
#include <cvc5/cvc5.h>

using namespace cvc5;

int main(void)
{
  TermManager tm;
  Solver solver(tm);

  solver.setOption("strings-exp", "true");
  solver.setOption("sygus-abort-size", "1");
  Sort s1 = tm.mkBitVectorSort(36);
  Sort s2 = tm.getStringSort();
  Term t1 = tm.mkConst(s2, "_x0");
  Term t2 = tm.mkConst(s1, "_x1");
  Term t11;
  {
    uint32_t bw = s1.getBitVectorSize();
    std::string val(bw, '1');
    val[0] = '0';
    t11 = tm.mkBitVector(bw, val, 2);
  }
  Term t60 = tm.mkTerm(Kind::SET_SINGLETON, {t1});
  Term t66 = tm.mkTerm(Kind::BITVECTOR_COMP, {t2, t11});
  Term t92 = tm.mkRegexpAll();
  Term t96 = tm.mkTerm(tm.mkOp(Kind::BITVECTOR_ZERO_EXTEND, {51}), {t66});
  Term t105 = tm.mkTerm(Kind::BITVECTOR_ADD, {t96, t96});
  Term t113 = tm.mkTerm(Kind::BITVECTOR_SUB, {t105, t105});
  Term t137 = tm.mkTerm(Kind::BITVECTOR_XOR, {t113, t105});
  Term t211 = tm.mkTerm(Kind::BITVECTOR_SLTBV, {t137, t137});
  Term t212 = tm.mkTerm(Kind::SET_MINUS, {t60, t60});
  Term t234 = tm.mkTerm(Kind::SET_CHOOSE, {t212});
  Term t250 = tm.mkTerm(Kind::STRING_REPLACE_RE_ALL, {t1, t92, t1});
  Term t259 = tm.mkTerm(Kind::STRING_REPLACE_ALL, {t234, t234, t250});
  Term t263 = tm.mkTerm(Kind::STRING_TO_LOWER, {t259});
  Term t272 = tm.mkTerm(Kind::BITVECTOR_SDIV, {t211, t66});
  Term t276 = tm.mkTerm(tm.mkOp(Kind::BITVECTOR_ZERO_EXTEND, {71}), {t272});
  Term t288 = tm.mkTerm(Kind::EQUAL, {t263, t1});
  Term t300 = tm.mkTerm(Kind::BITVECTOR_SLT, {t276, t276});
  Term t301 = tm.mkTerm(Kind::EQUAL, {t288, t300});
  solver.assertFormula({t301});
  Term t = solver.findSynth(modes::FindSynthTarget::REWRITE_INPUT);
}