Branch data Line data Source code
1 : : /****************************************************************************** 2 : : * Top contributors (to current version): 3 : : * Aina Niemetz, Andrew Reynolds 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 : : * Test for project issue #378. 14 : : */ 15 : : #include <cvc5/cvc5.h> 16 : : 17 : : #include <cassert> 18 : : 19 : : using namespace cvc5; 20 : : 21 : 1 : int main(void) 22 : : { 23 : 2 : TermManager tm; 24 : 2 : Solver solver(tm); 25 : : 26 : 2 : DatatypeDecl dtdecl; 27 : 2 : DatatypeConstructorDecl cdecl; 28 : : 29 : 2 : Sort s1 = tm.getBooleanSort(); 30 : : 31 : 1 : dtdecl = tm.mkDatatypeDecl("_x0"); 32 : 1 : cdecl = tm.mkDatatypeConstructorDecl("_x6"); 33 : 1 : cdecl.addSelector("_x1", s1); 34 : 1 : dtdecl.addConstructor(cdecl); 35 : 2 : Sort s2 = tm.mkDatatypeSort(dtdecl); 36 : : 37 : 1 : dtdecl = tm.mkDatatypeDecl("_x36"); 38 : 1 : cdecl = tm.mkDatatypeConstructorDecl("_x42"); 39 : 1 : cdecl.addSelector("_x37", s1); 40 : 1 : dtdecl.addConstructor(cdecl); 41 : 2 : Sort s4 = tm.mkDatatypeSort(dtdecl); 42 : : 43 : 2 : Term t1 = tm.mkConst(s1, "_x53"); 44 : 2 : Term t4 = tm.mkConst(s4, "_x56"); 45 : 2 : Term t7 = tm.mkConst(s2, "_x58"); 46 : : 47 : 2 : Sort sp = tm.mkParamSort("_x178"); 48 : 2 : dtdecl = tm.mkDatatypeDecl("_x176", {sp}); 49 : 1 : cdecl = tm.mkDatatypeConstructorDecl("_x184"); 50 : 1 : cdecl.addSelector("_x180", s2); 51 : 1 : dtdecl.addConstructor(cdecl); 52 : 1 : cdecl = tm.mkDatatypeConstructorDecl("_x186"); 53 : 1 : cdecl.addSelector("_x185", sp); 54 : 1 : dtdecl.addConstructor(cdecl); 55 : 2 : Sort s7 = tm.mkDatatypeSort(dtdecl); 56 : 4 : Sort s9 = s7.instantiate({s2}); 57 : : Term t1507 = 58 : : tm.mkTerm(Kind::APPLY_CONSTRUCTOR, 59 : 5 : {s9.getDatatype().getConstructor("_x184").getTerm(), t7}); 60 [ + + ][ - - ]: 4 : (void)tm.mkTerm( 61 : : Kind::APPLY_UPDATER, 62 : 2 : {s9.getDatatype().getConstructor("_x186").getSelector("_x185").getTerm(), 63 : : t1507, 64 : 3 : t7}); 65 : 1 : }