113 auto ultra_arithmetic_subrelation_failures =
114 Base::check<ArithmeticRelation<FF>>(polynomials, params,
"UltraArithmetic");
115 if (!ultra_arithmetic_subrelation_failures.empty()) {
116 all_subrelation_failures[
"UltraArithmetic"] = ultra_arithmetic_subrelation_failures;
118 auto ultra_permutation_subrelation_failures =
119 Base::check<UltraPermutationRelation<FF>>(polynomials, params,
"UltraPermutation");
120 if (!ultra_permutation_subrelation_failures.empty()) {
121 all_subrelation_failures[
"UltraPermutation"] = ultra_permutation_subrelation_failures;
123 auto ultra_delta_range_subrelation_failures =
124 Base::check<DeltaRangeConstraintRelation<FF>>(polynomials, params,
"DeltaRangeConstraint");
125 if (!ultra_delta_range_subrelation_failures.empty()) {
126 all_subrelation_failures[
"UltraDeltaRange"] = ultra_delta_range_subrelation_failures;
128 auto ultra_elliptic_subrelation_failures = Base::check<EllipticRelation<FF>>(polynomials, params,
"Elliptic");
129 if (!ultra_elliptic_subrelation_failures.empty()) {
130 all_subrelation_failures[
"UltraElliptic"] = ultra_elliptic_subrelation_failures;
132 auto ultra_memory_subrelation_failures = Base::check<MemoryRelation<FF>>(polynomials, params,
"Memory");
133 if (!ultra_memory_subrelation_failures.empty()) {
134 all_subrelation_failures[
"UltraMemory"] = ultra_memory_subrelation_failures;
136 auto ultra_non_native_field_subrelation_failures =
137 Base::check<NonNativeFieldRelation<FF>>(polynomials, params,
"NonNativeField");
138 if (!ultra_non_native_field_subrelation_failures.empty()) {
139 all_subrelation_failures[
"NonNativeField"] = ultra_non_native_field_subrelation_failures;
141 auto ultra_poseidon2_external_subrelation_failures =
142 Base::check<Poseidon2ExternalRelation<FF>>(polynomials, params,
"Poseidon2External");
143 if (!ultra_poseidon2_external_subrelation_failures.empty()) {
144 all_subrelation_failures[
"UltraPoseidon2External"] = ultra_poseidon2_external_subrelation_failures;
146 auto ultra_poseidon2_internal_subrelation_failures =
147 Base::check<Poseidon2InternalRelation<FF>>(polynomials, params,
"Poseidon2Internal");
148 if (!ultra_poseidon2_internal_subrelation_failures.empty()) {
149 all_subrelation_failures[
"UltraPoseidon2Internal"] = ultra_poseidon2_internal_subrelation_failures;
153 auto ultra_log_derivative_subrelation_failures =
154 Base::check<LogDerivLookupRelation<FF>,
true>(polynomials, params,
"LogDerivLookup");
155 if (!ultra_log_derivative_subrelation_failures.empty()) {
156 all_subrelation_failures[
"UltraLogDerivative"] = ultra_log_derivative_subrelation_failures;
158 return all_subrelation_failures;