4#include <gtest/gtest.h>
16TEST(SymbolicTuple, Initialization)
18 Solver s(
"30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001");
28TEST(SymbolicArray, InitMapSTermSTerm)
30 Solver s(
"30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001");
44TEST(SymbolicArray, InitVecSTerm)
46 Solver s(
"30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001");
59TEST(SymbolicArray, InitMapSTupleSTuple)
61 Solver s(
"30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001");
80TEST(SymbolicArray, InitVecSTuple)
82 Solver s(
"30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001");
100TEST(SymbolicArray, InitMapSTupleSTerm)
102 Solver s(
"30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001");
123 Solver s(
"30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001");
135TEST(SymbolicSet, InitVecSTuple)
137 Solver s(
"30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001");
159 Solver slv(
"30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001");
176 ASSERT_TRUE(slv.
check());
187TEST(SymbolicArray, InitSymArraySTerm)
189 Solver s(
"30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001");
204 cvc5::Sort ind_sort = arr.
term.getSort();
206 cvc5::Sort entry_sort = x.
term.getSort();
215 arrarr.
put(arr, arr.
get(t1));
225TEST(SymbolicArray, SimpleUseCase)
227 Solver slv(
"30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001");
233 STerm z = x * x + y * y;
234 STerm q = x * y + y * x;
241 cvc5::Sort ind_sort = z.
term.getSort();
243 cvc5::Sort entry_sort = c.
term.getSort();
257 STerm k = m * m + n * n;
265 STerm result = arr[k];
270 ASSERT_TRUE(slv.
check());
281 Solver slv(
"30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001");
297 ASSERT_TRUE(slv.
check());
302TEST(SymbolicArray, LookupTable)
304 Solver slv(
"30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001");
318 STerm z = stable[entry];
322 ASSERT_TRUE(slv.
check());
324 std::string xval = slv[x];
325 ASSERT_EQ(xval,
"1");
326 std::string yval = slv[y];
327 ASSERT_EQ(yval,
"2");
328 std::string zval = slv[z];
329 ASSERT_EQ(zval,
"3");
335 Solver slv(
"30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001");
339 SymSet<STuple> stable({ table_entry1, table_entry2 },
"guess_next");
344 STuple entry({ x, y, z });
346 stable.contains(entry);
349 ASSERT_TRUE(slv.
check());
351 std::string xval = slv[x];
352 ASSERT_EQ(xval,
"1");
353 std::string yval = slv[y];
354 ASSERT_EQ(yval,
"2");
355 std::string zval = slv[z];
356 ASSERT_EQ(zval,
"3");
Symbolic term element class.
void put(const sym_index &ind, const sym_entry &entry)
sym_entry get(const sym_index &ind) const
void insert(const sym_entry &entry)
void not_contains(const sym_entry &entry) const
Create an inclusion constraint.
void contains(const sym_entry &entry) const
Create an inclusion constraint.
Entry point for Barretenberg command-line interface.
TEST(MegaCircuitBuilder, CopyConstructor)
STerm IVar(const std::string &name, Solver *slv)
STerm FFVar(const std::string &name, Solver *slv)
STerm IConst(const std::string &val, Solver *slv, uint32_t base)
STerm BVVar(const std::string &name, Solver *slv)
STerm FFConst(const std::string &val, Solver *slv, uint32_t base)
TermType
Allows to define three types of symbolic terms STerm - Symbolic Variables acting like a Finte Field e...
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
bb::fr string_to_fr(const std::string &number, int base, bool is_signed, size_t step)
Converts a string of an arbitrary base to fr. Note: there should be no prefix.
static constexpr field neg_one()