123 auto ultra_arithmetic_subrelation_failures =
124 Base::check<ArithmeticRelation<FF>>(polynomials, params,
"UltraArithmetic");
125 if (!ultra_arithmetic_subrelation_failures.empty()) {
126 all_subrelation_failures[
"UltraArithmetic"] = ultra_arithmetic_subrelation_failures;
128 auto ultra_permutation_subrelation_failures =
129 Base::check<UltraPermutationRelation<FF>>(polynomials, params,
"UltraPermutation");
130 if (!ultra_permutation_subrelation_failures.empty()) {
131 all_subrelation_failures[
"UltraPermutation"] = ultra_permutation_subrelation_failures;
133 auto ultra_delta_range_subrelation_failures =
134 Base::check<DeltaRangeConstraintRelation<FF>>(polynomials, params,
"DeltaRangeConstraint");
135 if (!ultra_delta_range_subrelation_failures.empty()) {
136 all_subrelation_failures[
"UltraDeltaRange"] = ultra_delta_range_subrelation_failures;
138 auto ultra_elliptic_subrelation_failures = Base::check<EllipticRelation<FF>>(polynomials, params,
"Elliptic");
139 if (!ultra_elliptic_subrelation_failures.empty()) {
140 all_subrelation_failures[
"UltraElliptic"] = ultra_elliptic_subrelation_failures;
142 auto ultra_non_native_field_subrelation_failures =
143 Base::check<NonNativeFieldRelation<FF>>(polynomials, params,
"NonNativeField");
144 if (!ultra_non_native_field_subrelation_failures.empty()) {
145 all_subrelation_failures[
"NonNativeField"] = ultra_non_native_field_subrelation_failures;
147 auto ultra_poseidon2_external_subrelation_failures =
148 Base::check<Poseidon2ExternalRelation<FF>>(polynomials, params,
"Poseidon2External");
149 if (!ultra_poseidon2_external_subrelation_failures.empty()) {
150 all_subrelation_failures[
"UltraPoseidon2External"] = ultra_poseidon2_external_subrelation_failures;
152 auto ultra_poseidon2_internal_subrelation_failures =
153 Base::check<Poseidon2InternalRelation<FF>>(polynomials, params,
"Poseidon2Internal");
154 if (!ultra_poseidon2_internal_subrelation_failures.empty()) {
155 all_subrelation_failures[
"UltraPoseidon2Internal"] = ultra_poseidon2_internal_subrelation_failures;
159 auto ultra_log_derivative_subrelation_failures =
160 Base::check<LogDerivLookupRelation<FF>,
true>(polynomials, params,
"LogDerivLookup");
161 if (!ultra_log_derivative_subrelation_failures.empty()) {
162 all_subrelation_failures[
"UltraLogDerivative"] = ultra_log_derivative_subrelation_failures;
166 auto ultra_memory_subrelation_failures = Base::check<MemoryRelation<FF>,
true>(polynomials, params,
"Memory");
167 if (!ultra_memory_subrelation_failures.empty()) {
168 all_subrelation_failures[
"UltraMemory"] = ultra_memory_subrelation_failures;
170 return all_subrelation_failures;