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