Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
arithmetic_constraints.hpp
Go to the documentation of this file.
1
// === AUDIT STATUS ===
2
// internal: { status: Complete, auditors: [Federico], commit: 2094fd1467dd9a94803b2c5007cf60ac357aa7d2 }
3
// external_1: { status: not started, auditors: [], commit: }
4
// external_2: { status: not started, auditors: [], commit: }
5
// =====================
6
7
#pragma once
8
#include "
barretenberg/common/assert.hpp
"
9
#include "
barretenberg/honk/execution_trace/gate_data.hpp
"
10
#include "
barretenberg/stdlib/primitives/circuit_builders/circuit_builders_fwd.hpp
"
11
#include "
barretenberg/stdlib/primitives/witness/witness.hpp
"
12
#include "
barretenberg/stdlib_circuit_builders/mega_circuit_builder.hpp
"
13
#include "
barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp
"
14
#include <vector>
15
16
namespace
acir_format
{
17
18
using namespace
bb
;
19
using namespace
bb::stdlib
;
20
24
using
QuadConstraint
=
mul_quad_<bb::fr>
;
25
37
class
BigQuadConstraint
:
public
std::vector<QuadConstraint> {
38
public
:
39
using
Base
= std::vector<QuadConstraint>;
40
using
Base::Base;
// Inherit all constructors from std::vector
41
42
// Explicitly define vector copy constructor (not inherited by default)
43
BigQuadConstraint
(
const
std::vector<QuadConstraint>& fields)
44
:
Base
(fields)
45
{}
46
};
47
55
template
<
typename
Builder>
void
set_zero_idx
(
const
Builder
&
builder
,
QuadConstraint
& mul_quad);
56
61
template
<
typename
Builder>
62
void
check_mul_add_gate
(
Builder
&
builder
,
63
const
QuadConstraint
& mul_quad,
64
const
typename
Builder::FF
next_wire_w4 = Builder::FF::zero());
65
74
template
<
typename
Builder>
void
create_quad_constraint
(
Builder
&
builder
,
QuadConstraint
& mul_quad);
75
76
// clang-format off
107
// clang-format on
108
template
<
typename
Builder>
void
create_big_quad_constraint
(
Builder
&
builder
, BigQuadConstraint& big_constraint);
109
110
}
// namespace acir_format
assert.hpp
circuit_builders_fwd.hpp
acir_format::BigQuadConstraint
Constraint representing a polynomial of degree 1 or 2 that does not fit into a standard UltraHonk ari...
Definition
arithmetic_constraints.hpp:37
acir_format::BigQuadConstraint::Base
std::vector< QuadConstraint > Base
Definition
arithmetic_constraints.hpp:39
acir_format::BigQuadConstraint::BigQuadConstraint
BigQuadConstraint(const std::vector< QuadConstraint > &fields)
Definition
arithmetic_constraints.hpp:43
bb::ECCVMCircuitBuilder
Definition
eccvm_circuit_builder.hpp:24
builder
AluTraceBuilder builder
Definition
alu.test.cpp:124
gate_data.hpp
mega_circuit_builder.hpp
acir_format
Definition
acir_format.cpp:30
acir_format::create_big_quad_constraint
void create_big_quad_constraint(Builder &builder, BigQuadConstraint &big_constraint)
Definition
arithmetic_constraints.cpp:58
acir_format::set_zero_idx
void set_zero_idx(const Builder &builder, QuadConstraint &mul_quad)
Replace indices which are set to IS_CONSTANT with the zero index of the builder.
Definition
arithmetic_constraints.cpp:11
acir_format::check_mul_add_gate
void check_mul_add_gate(Builder &builder, const QuadConstraint &mul_quad, const typename Builder::FF next_wire_w4)
Check if a mul add gate is valid.
Definition
arithmetic_constraints.cpp:32
acir_format::create_quad_constraint
void create_quad_constraint(Builder &builder, QuadConstraint &mul_quad)
Create a simple width-4 Ultra arithmetic gate constraint representing the equation.
Definition
arithmetic_constraints.cpp:48
acir_format::QuadConstraint
mul_quad_< bb::fr > QuadConstraint
Standard UltraHonk arithmetic constraint of width 4.
Definition
arithmetic_constraints.hpp:24
bb::stdlib
Definition
graph_description_goblin.test.cpp:13
bb
Entry point for Barretenberg command-line interface.
Definition
api.hpp:5
bb::field< Bn254FqParams >
bb::mul_quad_
Definition
gate_data.hpp:37
ultra_circuit_builder.hpp
witness.hpp
src
barretenberg
dsl
acir_format
arithmetic_constraints.hpp
Generated by
1.9.8