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 #382. 11 : : */ 12 : : #include <cvc5/cvc5.h> 13 : : 14 : : using namespace cvc5; 15 : : 16 : 1 : int main(void) 17 : : { 18 : 1 : TermManager tm; 19 : 1 : Solver solver(tm); 20 : : 21 : 1 : Sort s1 = tm.getBooleanSort(); 22 : 1 : Sort psort = tm.mkParamSort("_x1"); 23 : 2 : DatatypeConstructorDecl ctor = tm.mkDatatypeConstructorDecl("_x20"); 24 : 1 : ctor.addSelector("_x19", psort); 25 : 3 : DatatypeDecl dtdecl = tm.mkDatatypeDecl("_x0", {psort}); 26 : 1 : dtdecl.addConstructor(ctor); 27 : 1 : Sort s2 = tm.mkDatatypeSort(dtdecl); 28 : 3 : Sort s6 = s2.instantiate({s1}); 29 : 1 : Term t13 = tm.mkVar(s6, "_x58"); 30 : 1 : Term t18 = tm.mkConst(s6, "_x63"); 31 : 1 : Term t52 = tm.mkVar(s6, "_x70"); 32 : 3 : Term t53 = tm.mkTerm(Kind::MATCH_BIND_CASE, 33 : 4 : {tm.mkTerm(Kind::VARIABLE_LIST, {t52}), t52, t18}); 34 : 1 : Term t73 = tm.mkVar(s1, "_x78"); 35 : 3 : Term t81 = tm.mkTerm( 36 : : Kind::MATCH_BIND_CASE, 37 : 1 : {tm.mkTerm(Kind::VARIABLE_LIST, {t73}), 38 : 2 : tm.mkTerm( 39 : : Kind::APPLY_CONSTRUCTOR, 40 : 2 : {s6.getDatatype().getConstructor("_x20").getInstantiatedTerm(s6), 41 : : t73}), 42 : 6 : t18}); 43 : 7 : Term t82 = tm.mkTerm(Kind::MATCH, {t13, t53, t53, t53, t81}); 44 : 2 : Term t325 = tm.mkTerm( 45 : : Kind::APPLY_SELECTOR, 46 : 3 : {t82.getSort().getDatatype().getSelector("_x19").getTerm(), t82}); 47 : 1 : solver.simplify(t325); 48 : 1 : }