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