Exact expanded PA statement
forall p h a b c. p = 2 * h + 1 -> ((~(p = 1) /\ forall esi_prime_left_gla_prime esi_prime_right_gla_prime. p = esi_prime_left_gla_prime * esi_prime_right_gla_prime -> esi_prime_left_gla_prime = 1 \/ esi_prime_right_gla_prime = 1)) -> (~(exists frm_factor_gla_nondivisor. a = p * frm_factor_gla_nondivisor)) -> (forall gsp_range_index_gla_half_range. (exists gsp_lt_gap_gla_half_range_range_bound. gsp_lt_gap_gla_half_range_range_bound + S gsp_range_index_gla_half_range = h) -> (((exists gsp_beta_height_gla_half_range_range_entry. gsp_beta_height_gla_half_range_range_entry + S (1 + gsp_range_index_gla_half_range) = S ((S (gsp_range_index_gla_half_range)) * c)) /\ exists gsp_beta_quotient_gla_half_range_range_entry. b = gsp_beta_quotient_gla_half_range_range_entry * S ((S (gsp_range_index_gla_half_range)) * c) + (1 + gsp_range_index_gla_half_range)))) -> (exists e. ((exists mb mc sb sc. ((forall gsp_index_gla_signed_prefix. (exists gsp_lt_gap_gla_signed_prefix_index_bound. gsp_lt_gap_gla_signed_prefix_index_bound + S gsp_index_gla_signed_prefix = h) -> (exists gsp_value_gla_signed_prefix_entry gsp_magnitude_gla_signed_prefix_entry gsp_sign_gla_signed_prefix_entry. (((exists ff_h_gsp_gla_signed_prefix_entry_source. ff_h_gsp_gla_signed_prefix_entry_source + S (gsp_value_gla_signed_prefix_entry) = S ((S (gsp_index_gla_signed_prefix)) * c)) /\ exists ff_q_gsp_gla_signed_prefix_entry_source. b = ff_q_gsp_gla_signed_prefix_entry_source * S ((S (gsp_index_gla_signed_prefix)) * c) + (gsp_value_gla_signed_prefix_entry))) /\ ((((exists ff_h_gsp_gla_signed_prefix_entry_magnitude. ff_h_gsp_gla_signed_prefix_entry_magnitude + S (gsp_magnitude_gla_signed_prefix_entry) = S ((S (gsp_index_gla_signed_prefix)) * mc)) /\ exists ff_q_gsp_gla_signed_prefix_entry_magnitude. mb = ff_q_gsp_gla_signed_prefix_entry_magnitude * S ((S (gsp_index_gla_signed_prefix)) * mc) + (gsp_magnitude_gla_signed_prefix_entry))) /\ ((((exists ff_h_gsp_gla_signed_prefix_entry_sign. ff_h_gsp_gla_signed_prefix_entry_sign + S (gsp_sign_gla_signed_prefix_entry) = S ((S (gsp_index_gla_signed_prefix)) * sc)) /\ exists ff_q_gsp_gla_signed_prefix_entry_sign. sb = ff_q_gsp_gla_signed_prefix_entry_sign * S ((S (gsp_index_gla_signed_prefix)) * sc) + (gsp_sign_gla_signed_prefix_entry))) /\ ((exists gsp_lt_gap_gla_signed_prefix_entry_positive. gsp_lt_gap_gla_signed_prefix_entry_positive + S 0 = gsp_magnitude_gla_signed_prefix_entry) /\ ((exists gsp_le_gap_gla_signed_prefix_entry_bounded. gsp_le_gap_gla_signed_prefix_entry_bounded + gsp_magnitude_gla_signed_prefix_entry = h) /\ ((gsp_sign_gla_signed_prefix_entry = 0 \/ gsp_sign_gla_signed_prefix_entry = 1) /\ (((gsp_sign_gla_signed_prefix_entry = 0 /\ (exists gsp_mod_left_gla_signed_prefix_entry_lower gsp_mod_right_gla_signed_prefix_entry_lower. (a * gsp_value_gla_signed_prefix_entry) + p * gsp_mod_left_gla_signed_prefix_entry_lower = (gsp_magnitude_gla_signed_prefix_entry) + p * gsp_mod_right_gla_signed_prefix_entry_lower)) \/ (gsp_sign_gla_signed_prefix_entry = 1 /\ (exists gsp_mod_left_gla_signed_prefix_entry_reflected gsp_mod_right_gla_signed_prefix_entry_reflected. (a * gsp_value_gla_signed_prefix_entry) + p * gsp_mod_left_gla_signed_prefix_entry_reflected = ((2 * h) * gsp_magnitude_gla_signed_prefix_entry) + p * gsp_mod_right_gla_signed_prefix_entry_reflected))))))))))) /\ (((exists ff_u_gla_count_sum ff_v_gla_count_sum. ((((exists ff_h_gla_count_sum_start. ff_h_gla_count_sum_start + S (0) = S ((S (0)) * ff_v_gla_count_sum)) /\ exists ff_q_gla_count_sum_start. ff_u_gla_count_sum = ff_q_gla_count_sum_start * S ((S (0)) * ff_v_gla_count_sum) + (0))) /\ ((((exists ff_h_gla_count_sum_terminal. ff_h_gla_count_sum_terminal + S (e) = S ((S (h)) * ff_v_gla_count_sum)) /\ exists ff_q_gla_count_sum_terminal. ff_u_gla_count_sum = ff_q_gla_count_sum_terminal * S ((S (h)) * ff_v_gla_count_sum) + (e))) /\ forall ff_i_gla_count_sum. (exists ff_lt_gla_count_sum_bound. ff_lt_gla_count_sum_bound + S ff_i_gla_count_sum = h) -> exists ff_a_gla_count_sum ff_r_gla_count_sum ff_s_gla_count_sum. ((((exists ff_h_gla_count_sum_summand. ff_h_gla_count_sum_summand + S (ff_a_gla_count_sum) = S ((S (ff_i_gla_count_sum)) * sc)) /\ exists ff_q_gla_count_sum_summand. sb = ff_q_gla_count_sum_summand * S ((S (ff_i_gla_count_sum)) * sc) + (ff_a_gla_count_sum))) /\ ((((exists ff_h_gla_count_sum_partial. ff_h_gla_count_sum_partial + S (ff_r_gla_count_sum) = S ((S (ff_i_gla_count_sum)) * ff_v_gla_count_sum)) /\ exists ff_q_gla_count_sum_partial. ff_u_gla_count_sum = ff_q_gla_count_sum_partial * S ((S (ff_i_gla_count_sum)) * ff_v_gla_count_sum) + (ff_r_gla_count_sum))) /\ ((((exists ff_h_gla_count_sum_successor. ff_h_gla_count_sum_successor + S (ff_s_gla_count_sum) = S ((S (S ff_i_gla_count_sum)) * ff_v_gla_count_sum)) /\ exists ff_q_gla_count_sum_successor. ff_u_gla_count_sum = ff_q_gla_count_sum_successor * S ((S (S ff_i_gla_count_sum)) * ff_v_gla_count_sum) + (ff_s_gla_count_sum))) /\ ff_s_gla_count_sum = ff_r_gla_count_sum + ff_a_gla_count_sum)))))) /\ (forall ff_i_gla_count_bits. (exists ff_lt_gla_count_bits_bound. ff_lt_gla_count_bits_bound + S ff_i_gla_count_bits = h) -> exists ff_bit_gla_count_bits. ((((exists ff_h_gla_count_bits_decoded. ff_h_gla_count_bits_decoded + S (ff_bit_gla_count_bits) = S ((S (ff_i_gla_count_bits)) * sc)) /\ exists ff_q_gla_count_bits_decoded. sb = ff_q_gla_count_bits_decoded * S ((S (ff_i_gla_count_bits)) * sc) + (ff_bit_gla_count_bits))) /\ (ff_bit_gla_count_bits = 0 \/ ff_bit_gla_count_bits = 1))))))) /\ (((((exists qr_x_gla_qres. exists qr_u_gla_qres qr_v_gla_qres. qr_x_gla_qres * qr_x_gla_qres + p * qr_u_gla_qres = a + p * qr_v_gla_qres) -> (exists gs_even_gla_even. e = 2 * gs_even_gla_even)) /\ ((exists gs_even_gla_even. e = 2 * gs_even_gla_even) -> (exists qr_x_gla_qres. exists qr_u_gla_qres qr_v_gla_qres. qr_x_gla_qres * qr_x_gla_qres + p * qr_u_gla_qres = a + p * qr_v_gla_qres)))) /\ (((~(exists qr_x_gla_qres. exists qr_u_gla_qres qr_v_gla_qres. qr_x_gla_qres * qr_x_gla_qres + p * qr_u_gla_qres = a + p * qr_v_gla_qres) -> (exists gs_odd_gla_odd. e = 2 * gs_odd_gla_odd + 1)) /\ ((exists gs_odd_gla_odd. e = 2 * gs_odd_gla_odd + 1) -> ~(exists qr_x_gla_qres. exists qr_u_gla_qres qr_v_gla_qres. qr_x_gla_qres * qr_x_gla_qres + p * qr_u_gla_qres = a + p * qr_v_gla_qres)))))))Structural proof guide
Generated structural guide
An arbitrary prime unit is a quadratic residue exactly when its Gauss reflection count is even, and a nonresidue exactly when it is odd.
Use the direct prerequisites gauss_lemma_power_congruence_exists, pow_predecessor_parity_mod, arbitrary_euler_criterion_complete, parity_cases, odd_prime_one_not_mod_predecessor, mod_eq_symm, mod_eq_trans, mul_comm, zero_add as previously established PA formulas.
The proof proceeds by case analysis (14), intermediate claims (22), certified simplification (2).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0085 gauss_lemma_power_congruence_exists PA005E pow_predecessor_parity_mod PA00BU arbitrary_euler_criterion_complete PA0057 parity_cases PA00BP odd_prime_one_not_mod_predecessor PA003L mod_eq_symm PA0024 mod_eq_trans PA000H mul_comm PA0001 zero_addDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v16 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
- 0001
intro p - 0002
intro h - 0003
intro a - 0004
intro b - 0005
intro c - 0006
intro hpodd - 0007
intro hprime - 0008
intro hnotdiv - 0009
intro hhalf - 0010
have hpsucc : p = S (2 * h) - 0011
trans 2 * h + 1 - 0012
exact hpodd - 0013
simp - 0014
have hdouble : h + h = 2 * h - 0015
trans h * 2 - 0016
simp [zero_add] - 0017
specialize mul_comm h - 0018
specialize mul_comm 2 - 0019
apply mul_comm - 0020
have hgauss : exists e A R. ((exists ff_b_glb_multiplier_power ff_c_glb_multiplier_power. ((forall ff_i_glb_multiplier_power_repeat. (exists ff_lt_glb_multiplier_power_repeat_bound. ff_lt_glb_multiplier_power_repeat_bound + S ff_i_glb_multiplier_power_repeat = h) -> (((exists ff_h_glb_multiplier_power_repeat_decoded. ff_h_glb_multiplier_power_repeat_decoded + S (a) = S ((S (ff_i_glb_multiplier_power_repeat)) * ff_c_glb_multiplier_power)) /\ exists ff_q_glb_multiplier_power_repeat_decoded. ff_b_glb_multiplier_power = ff_q_glb_multiplier_power_repeat_decoded * S ((S (ff_i_glb_multiplier_power_repeat)) * ff_c_glb_multiplier_power) + (a)))) /\ (exists ff_u_glb_multiplier_power_product ff_v_glb_multiplier_power_product. ((((exists ff_h_glb_multiplier_power_product_start. ff_h_glb_multiplier_power_product_start + S (1) = S ((S (0)) * ff_v_glb_multiplier_power_product)) /\ exists ff_q_glb_multiplier_power_product_start. ff_u_glb_multiplier_power_product = ff_q_glb_multiplier_power_product_start * S ((S (0)) * ff_v_glb_multiplier_power_product) + (1))) /\ ((((exists ff_h_glb_multiplier_power_product_terminal. ff_h_glb_multiplier_power_product_terminal + S (A) = S ((S (h)) * ff_v_glb_multiplier_power_product)) /\ exists ff_q_glb_multiplier_power_product_terminal. ff_u_glb_multiplier_power_product = ff_q_glb_multiplier_power_product_terminal * S ((S (h)) * ff_v_glb_multiplier_power_product) + (A))) /\ forall ff_i_glb_multiplier_power_product. (exists ff_lt_glb_multiplier_power_product_bound. ff_lt_glb_multiplier_power_product_bound + S ff_i_glb_multiplier_power_product = h) -> exists ff_p_glb_multiplier_power_product ff_r_glb_multiplier_power_product ff_s_glb_multiplier_power_product. ((((exists ff_h_glb_multiplier_power_product_factor. ff_h_glb_multiplier_power_product_factor + S (ff_p_glb_multiplier_power_product) = S ((S (ff_i_glb_multiplier_power_product)) * ff_c_glb_multiplier_power)) /\ exists ff_q_glb_multiplier_power_product_factor. ff_b_glb_multiplier_power = ff_q_glb_multiplier_power_product_factor * S ((S (ff_i_glb_multiplier_power_product)) * ff_c_glb_multiplier_power) + (ff_p_glb_multiplier_power_product))) /\ ((((exists ff_h_glb_multiplier_power_product_partial. ff_h_glb_multiplier_power_product_partial + S (ff_r_glb_multiplier_power_product) = S ((S (ff_i_glb_multiplier_power_product)) * ff_v_glb_multiplier_power_product)) /\ exists ff_q_glb_multiplier_power_product_partial. ff_u_glb_multiplier_power_product = ff_q_glb_multiplier_power_product_partial * S ((S (ff_i_glb_multiplier_power_product)) * ff_v_glb_multiplier_power_product) + (ff_r_glb_multiplier_power_product))) /\ ((((exists ff_h_glb_multiplier_power_product_successor. ff_h_glb_multiplier_power_product_successor + S (ff_s_glb_multiplier_power_product) = S ((S (S ff_i_glb_multiplier_power_product)) * ff_v_glb_multiplier_power_product)) /\ exists ff_q_glb_multiplier_power_product_successor. ff_u_glb_multiplier_power_product = ff_q_glb_multiplier_power_product_successor * S ((S (S ff_i_glb_multiplier_power_product)) * ff_v_glb_multiplier_power_product) + (ff_s_glb_multiplier_power_product))) /\ ff_s_glb_multiplier_power_product = ff_r_glb_multiplier_power_product * ff_p_glb_multiplier_power_product)))))))) /\ ((exists ff_b_glb_sign_power_expanded ff_c_glb_sign_power_expanded. ((forall ff_i_glb_sign_power_expanded_repeat. (exists ff_lt_glb_sign_power_expanded_repeat_bound. ff_lt_glb_sign_power_expanded_repeat_bound + S ff_i_glb_sign_power_expanded_repeat = e) -> (((exists ff_h_glb_sign_power_expanded_repeat_decoded. ff_h_glb_sign_power_expanded_repeat_decoded + S ((2 * h)) = S ((S (ff_i_glb_sign_power_expanded_repeat)) * ff_c_glb_sign_power_expanded)) /\ exists ff_q_glb_sign_power_expanded_repeat_decoded. ff_b_glb_sign_power_expanded = ff_q_glb_sign_power_expanded_repeat_decoded * S ((S (ff_i_glb_sign_power_expanded_repeat)) * ff_c_glb_sign_power_expanded) + ((2 * h))))) /\ (exists ff_u_glb_sign_power_expanded_product ff_v_glb_sign_power_expanded_product. ((((exists ff_h_glb_sign_power_expanded_product_start. ff_h_glb_sign_power_expanded_product_start + S (1) = S ((S (0)) * ff_v_glb_sign_power_expanded_product)) /\ exists ff_q_glb_sign_power_expanded_product_start. ff_u_glb_sign_power_expanded_product = ff_q_glb_sign_power_expanded_product_start * S ((S (0)) * ff_v_glb_sign_power_expanded_product) + (1))) /\ ((((exists ff_h_glb_sign_power_expanded_product_terminal. ff_h_glb_sign_power_expanded_product_terminal + S (R) = S ((S (e)) * ff_v_glb_sign_power_expanded_product)) /\ exists ff_q_glb_sign_power_expanded_product_terminal. ff_u_glb_sign_power_expanded_product = ff_q_glb_sign_power_expanded_product_terminal * S ((S (e)) * ff_v_glb_sign_power_expanded_product) + (R))) /\ forall ff_i_glb_sign_power_expanded_product. (exists ff_lt_glb_sign_power_expanded_product_bound. ff_lt_glb_sign_power_expanded_product_bound + S ff_i_glb_sign_power_expanded_product = e) -> exists ff_p_glb_sign_power_expanded_product ff_r_glb_sign_power_expanded_product ff_s_glb_sign_power_expanded_product. ((((exists ff_h_glb_sign_power_expanded_product_factor. ff_h_glb_sign_power_expanded_product_factor + S (ff_p_glb_sign_power_expanded_product) = S ((S (ff_i_glb_sign_power_expanded_product)) * ff_c_glb_sign_power_expanded)) /\ exists ff_q_glb_sign_power_expanded_product_factor. ff_b_glb_sign_power_expanded = ff_q_glb_sign_power_expanded_product_factor * S ((S (ff_i_glb_sign_power_expanded_product)) * ff_c_glb_sign_power_expanded) + (ff_p_glb_sign_power_expanded_product))) /\ ((((exists ff_h_glb_sign_power_expanded_product_partial. ff_h_glb_sign_power_expanded_product_partial + S (ff_r_glb_sign_power_expanded_product) = S ((S (ff_i_glb_sign_power_expanded_product)) * ff_v_glb_sign_power_expanded_product)) /\ exists ff_q_glb_sign_power_expanded_product_partial. ff_u_glb_sign_power_expanded_product = ff_q_glb_sign_power_expanded_product_partial * S ((S (ff_i_glb_sign_power_expanded_product)) * ff_v_glb_sign_power_expanded_product) + (ff_r_glb_sign_power_expanded_product))) /\ ((((exists ff_h_glb_sign_power_expanded_product_successor. ff_h_glb_sign_power_expanded_product_successor + S (ff_s_glb_sign_power_expanded_product) = S ((S (S ff_i_glb_sign_power_expanded_product)) * ff_v_glb_sign_power_expanded_product)) /\ exists ff_q_glb_sign_power_expanded_product_successor. ff_u_glb_sign_power_expanded_product = ff_q_glb_sign_power_expanded_product_successor * S ((S (S ff_i_glb_sign_power_expanded_product)) * ff_v_glb_sign_power_expanded_product) + (ff_s_glb_sign_power_expanded_product))) /\ ff_s_glb_sign_power_expanded_product = ff_r_glb_sign_power_expanded_product * ff_p_glb_sign_power_expanded_product)))))))) /\ ((exists mb mc sb sc. ((forall gsp_index_glb_signed_prefix. (exists gsp_lt_gap_glb_signed_prefix_index_bound. gsp_lt_gap_glb_signed_prefix_index_bound + S gsp_index_glb_signed_prefix = h) -> (exists gsp_value_glb_signed_prefix_entry gsp_magnitude_glb_signed_prefix_entry gsp_sign_glb_signed_prefix_entry. (((exists ff_h_gsp_glb_signed_prefix_entry_source. ff_h_gsp_glb_signed_prefix_entry_source + S (gsp_value_glb_signed_prefix_entry) = S ((S (gsp_index_glb_signed_prefix)) * c)) /\ exists ff_q_gsp_glb_signed_prefix_entry_source. b = ff_q_gsp_glb_signed_prefix_entry_source * S ((S (gsp_index_glb_signed_prefix)) * c) + (gsp_value_glb_signed_prefix_entry))) /\ ((((exists ff_h_gsp_glb_signed_prefix_entry_magnitude. ff_h_gsp_glb_signed_prefix_entry_magnitude + S (gsp_magnitude_glb_signed_prefix_entry) = S ((S (gsp_index_glb_signed_prefix)) * mc)) /\ exists ff_q_gsp_glb_signed_prefix_entry_magnitude. mb = ff_q_gsp_glb_signed_prefix_entry_magnitude * S ((S (gsp_index_glb_signed_prefix)) * mc) + (gsp_magnitude_glb_signed_prefix_entry))) /\ ((((exists ff_h_gsp_glb_signed_prefix_entry_sign. ff_h_gsp_glb_signed_prefix_entry_sign + S (gsp_sign_glb_signed_prefix_entry) = S ((S (gsp_index_glb_signed_prefix)) * sc)) /\ exists ff_q_gsp_glb_signed_prefix_entry_sign. sb = ff_q_gsp_glb_signed_prefix_entry_sign * S ((S (gsp_index_glb_signed_prefix)) * sc) + (gsp_sign_glb_signed_prefix_entry))) /\ ((exists gsp_lt_gap_glb_signed_prefix_entry_positive. gsp_lt_gap_glb_signed_prefix_entry_positive + S 0 = gsp_magnitude_glb_signed_prefix_entry) /\ ((exists gsp_le_gap_glb_signed_prefix_entry_bounded. gsp_le_gap_glb_signed_prefix_entry_bounded + gsp_magnitude_glb_signed_prefix_entry = h) /\ ((gsp_sign_glb_signed_prefix_entry = 0 \/ gsp_sign_glb_signed_prefix_entry = 1) /\ (((gsp_sign_glb_signed_prefix_entry = 0 /\ (exists gsp_mod_left_glb_signed_prefix_entry_lower gsp_mod_right_glb_signed_prefix_entry_lower. (a * gsp_value_glb_signed_prefix_entry) + p * gsp_mod_left_glb_signed_prefix_entry_lower = (gsp_magnitude_glb_signed_prefix_entry) + p * gsp_mod_right_glb_signed_prefix_entry_lower)) \/ (gsp_sign_glb_signed_prefix_entry = 1 /\ (exists gsp_mod_left_glb_signed_prefix_entry_reflected gsp_mod_right_glb_signed_prefix_entry_reflected. (a * gsp_value_glb_signed_prefix_entry) + p * gsp_mod_left_glb_signed_prefix_entry_reflected = ((2 * h) * gsp_magnitude_glb_signed_prefix_entry) + p * gsp_mod_right_glb_signed_prefix_entry_reflected))))))))))) /\ (((exists ff_u_glb_count_sum ff_v_glb_count_sum. ((((exists ff_h_glb_count_sum_start. ff_h_glb_count_sum_start + S (0) = S ((S (0)) * ff_v_glb_count_sum)) /\ exists ff_q_glb_count_sum_start. ff_u_glb_count_sum = ff_q_glb_count_sum_start * S ((S (0)) * ff_v_glb_count_sum) + (0))) /\ ((((exists ff_h_glb_count_sum_terminal. ff_h_glb_count_sum_terminal + S (e) = S ((S (h)) * ff_v_glb_count_sum)) /\ exists ff_q_glb_count_sum_terminal. ff_u_glb_count_sum = ff_q_glb_count_sum_terminal * S ((S (h)) * ff_v_glb_count_sum) + (e))) /\ forall ff_i_glb_count_sum. (exists ff_lt_glb_count_sum_bound. ff_lt_glb_count_sum_bound + S ff_i_glb_count_sum = h) -> exists ff_a_glb_count_sum ff_r_glb_count_sum ff_s_glb_count_sum. ((((exists ff_h_glb_count_sum_summand. ff_h_glb_count_sum_summand + S (ff_a_glb_count_sum) = S ((S (ff_i_glb_count_sum)) * sc)) /\ exists ff_q_glb_count_sum_summand. sb = ff_q_glb_count_sum_summand * S ((S (ff_i_glb_count_sum)) * sc) + (ff_a_glb_count_sum))) /\ ((((exists ff_h_glb_count_sum_partial. ff_h_glb_count_sum_partial + S (ff_r_glb_count_sum) = S ((S (ff_i_glb_count_sum)) * ff_v_glb_count_sum)) /\ exists ff_q_glb_count_sum_partial. ff_u_glb_count_sum = ff_q_glb_count_sum_partial * S ((S (ff_i_glb_count_sum)) * ff_v_glb_count_sum) + (ff_r_glb_count_sum))) /\ ((((exists ff_h_glb_count_sum_successor. ff_h_glb_count_sum_successor + S (ff_s_glb_count_sum) = S ((S (S ff_i_glb_count_sum)) * ff_v_glb_count_sum)) /\ exists ff_q_glb_count_sum_successor. ff_u_glb_count_sum = ff_q_glb_count_sum_successor * S ((S (S ff_i_glb_count_sum)) * ff_v_glb_count_sum) + (ff_s_glb_count_sum))) /\ ff_s_glb_count_sum = ff_r_glb_count_sum + ff_a_glb_count_sum)))))) /\ (forall ff_i_glb_count_bits. (exists ff_lt_glb_count_bits_bound. ff_lt_glb_count_bits_bound + S ff_i_glb_count_bits = h) -> exists ff_bit_glb_count_bits. ((((exists ff_h_glb_count_bits_decoded. ff_h_glb_count_bits_decoded + S (ff_bit_glb_count_bits) = S ((S (ff_i_glb_count_bits)) * sc)) /\ exists ff_q_glb_count_bits_decoded. sb = ff_q_glb_count_bits_decoded * S ((S (ff_i_glb_count_bits)) * sc) + (ff_bit_glb_count_bits))) /\ (ff_bit_glb_count_bits = 0 \/ ff_bit_glb_count_bits = 1))))))) /\ (exists wpp_mod_left_glb_a_mod_r wpp_mod_right_glb_a_mod_r. (A) + p * wpp_mod_left_glb_a_mod_r = (R) + p * wpp_mod_right_glb_a_mod_r)))) - 0021
specialize gauss_lemma_power_congruence_exists p - 0022
specialize gauss_lemma_power_congruence_exists h - 0023
specialize gauss_lemma_power_congruence_exists a - 0024
specialize gauss_lemma_power_congruence_exists b - 0025
specialize gauss_lemma_power_congruence_exists c - 0026
apply gauss_lemma_power_congruence_exists - 0027
exact hpodd - 0028
exact hprime - 0029
exact hnotdiv - 0030
exact hhalf - 0031
cases hgauss - 0032
cases hgauss_witness - 0033
cases hgauss_witness_witness - 0034
cases hgauss_witness_witness_witness - 0035
cases hgauss_witness_witness_witness_right - 0036
cases hgauss_witness_witness_witness_right_right - 0037
have heuler : (((((exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres) -> (exists wpp_mod_left_glb_local_a_mod_one wpp_mod_right_glb_local_a_mod_one. (x1) + p * wpp_mod_left_glb_local_a_mod_one = (1) + p * wpp_mod_right_glb_local_a_mod_one)) /\ ((exists wpp_mod_left_glb_local_a_mod_one wpp_mod_right_glb_local_a_mod_one. (x1) + p * wpp_mod_left_glb_local_a_mod_one = (1) + p * wpp_mod_right_glb_local_a_mod_one) -> (exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres)))) /\ ((~(exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres) -> (exists wpp_mod_left_glb_local_a_mod_predecessor wpp_mod_right_glb_local_a_mod_predecessor. (x1) + p * wpp_mod_left_glb_local_a_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_a_mod_predecessor)) /\ ((exists wpp_mod_left_glb_local_a_mod_predecessor wpp_mod_right_glb_local_a_mod_predecessor. (x1) + p * wpp_mod_left_glb_local_a_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_a_mod_predecessor) -> ~(exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres)))) - 0038
specialize arbitrary_euler_criterion_complete p - 0039
specialize arbitrary_euler_criterion_complete a - 0040
specialize arbitrary_euler_criterion_complete (2 * h) - 0041
specialize arbitrary_euler_criterion_complete h - 0042
specialize arbitrary_euler_criterion_complete x1 - 0043
apply arbitrary_euler_criterion_complete - 0044
exact hpsucc - 0045
exact hprime - 0046
exact hnotdiv - 0047
symm - 0048
exact hdouble - 0049
exact hgauss_witness_witness_witness_left - 0050
cases heuler - 0051
cases heuler_left - 0052
cases heuler_right - 0053
have hbridge : (((exists gs_even_glb_local_even. x = 2 * gs_even_glb_local_even) -> (exists wpp_mod_left_glb_local_r_mod_one wpp_mod_right_glb_local_r_mod_one. (x2) + p * wpp_mod_left_glb_local_r_mod_one = (1) + p * wpp_mod_right_glb_local_r_mod_one)) /\ ((exists gs_odd_glb_local_odd. x = 2 * gs_odd_glb_local_odd + 1) -> (exists wpp_mod_left_glb_local_r_mod_predecessor wpp_mod_right_glb_local_r_mod_predecessor. (x2) + p * wpp_mod_left_glb_local_r_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_r_mod_predecessor))) - 0054
specialize pow_predecessor_parity_mod p - 0055
specialize pow_predecessor_parity_mod (2 * h) - 0056
specialize pow_predecessor_parity_mod x - 0057
specialize pow_predecessor_parity_mod x2 - 0058
apply pow_predecessor_parity_mod - 0059
exact hpsucc - 0060
exact hgauss_witness_witness_witness_right_left - 0061
cases hbridge - 0062
have hseparation : ~(exists wpp_mod_left_glb_one_mod_predecessor wpp_mod_right_glb_one_mod_predecessor. (1) + p * wpp_mod_left_glb_one_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_one_mod_predecessor) - 0063
intro hcollision - 0064
specialize odd_prime_one_not_mod_predecessor p - 0065
specialize odd_prime_one_not_mod_predecessor (2 * h) - 0066
specialize odd_prime_one_not_mod_predecessor h - 0067
apply odd_prime_one_not_mod_predecessor - 0068
exact hpsucc - 0069
exact hprime - 0070
symm - 0071
exact hdouble - 0072
exact hcollision - 0073
have hqres_even : (exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres) -> (exists gs_even_glb_local_even. x = 2 * gs_even_glb_local_even) - 0074
intro hqres - 0075
specialize parity_cases x - 0076
cases parity_cases - 0077
cases parity_cases_witness - 0078
exists x3 - 0079
exact parity_cases_witness_left - 0080
exfalso - 0081
apply hseparation - 0082
have hAone : exists wpp_mod_left_glb_local_a_mod_one wpp_mod_right_glb_local_a_mod_one. (x1) + p * wpp_mod_left_glb_local_a_mod_one = (1) + p * wpp_mod_right_glb_local_a_mod_one - 0083
apply heuler_left_left - 0084
exact hqres - 0085
have honeA : exists wpp_mod_left_glb_local_one_mod_a wpp_mod_right_glb_local_one_mod_a. (1) + p * wpp_mod_left_glb_local_one_mod_a = (x1) + p * wpp_mod_right_glb_local_one_mod_a - 0086
specialize mod_eq_symm p - 0087
specialize mod_eq_symm x1 - 0088
specialize mod_eq_symm 1 - 0089
apply mod_eq_symm - 0090
exact hAone - 0091
have honeR : exists wpp_mod_left_glb_local_one_mod_r wpp_mod_right_glb_local_one_mod_r. (1) + p * wpp_mod_left_glb_local_one_mod_r = (x2) + p * wpp_mod_right_glb_local_one_mod_r - 0092
specialize mod_eq_trans p - 0093
specialize mod_eq_trans 1 - 0094
specialize mod_eq_trans x1 - 0095
specialize mod_eq_trans x2 - 0096
apply mod_eq_trans - 0097
exact honeA - 0098
exact hgauss_witness_witness_witness_right_right_right - 0099
have hRpred : exists wpp_mod_left_glb_local_r_mod_predecessor wpp_mod_right_glb_local_r_mod_predecessor. (x2) + p * wpp_mod_left_glb_local_r_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_r_mod_predecessor - 0100
apply hbridge_right - 0101
exists x3 - 0102
exact parity_cases_witness_right - 0103
specialize mod_eq_trans p - 0104
specialize mod_eq_trans 1 - 0105
specialize mod_eq_trans x2 - 0106
specialize mod_eq_trans (2 * h) - 0107
apply mod_eq_trans - 0108
exact honeR - 0109
exact hRpred - 0110
have heven_qres : (exists gs_even_glb_local_even. x = 2 * gs_even_glb_local_even) -> (exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres) - 0111
intro heven - 0112
have hRone : exists wpp_mod_left_glb_local_r_mod_one wpp_mod_right_glb_local_r_mod_one. (x2) + p * wpp_mod_left_glb_local_r_mod_one = (1) + p * wpp_mod_right_glb_local_r_mod_one - 0113
apply hbridge_left - 0114
exact heven - 0115
have hAone : exists wpp_mod_left_glb_local_a_mod_one wpp_mod_right_glb_local_a_mod_one. (x1) + p * wpp_mod_left_glb_local_a_mod_one = (1) + p * wpp_mod_right_glb_local_a_mod_one - 0116
specialize mod_eq_trans p - 0117
specialize mod_eq_trans x1 - 0118
specialize mod_eq_trans x2 - 0119
specialize mod_eq_trans 1 - 0120
apply mod_eq_trans - 0121
exact hgauss_witness_witness_witness_right_right_right - 0122
exact hRone - 0123
apply heuler_left_right - 0124
exact hAone - 0125
have hnonres_odd : ~(exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres) -> (exists gs_odd_glb_local_odd. x = 2 * gs_odd_glb_local_odd + 1) - 0126
intro hnonres - 0127
specialize parity_cases x - 0128
cases parity_cases - 0129
cases parity_cases_witness - 0130
exfalso - 0131
apply hseparation - 0132
have hRone : exists wpp_mod_left_glb_local_r_mod_one wpp_mod_right_glb_local_r_mod_one. (x2) + p * wpp_mod_left_glb_local_r_mod_one = (1) + p * wpp_mod_right_glb_local_r_mod_one - 0133
apply hbridge_left - 0134
exists x3 - 0135
exact parity_cases_witness_left - 0136
have hAone : exists wpp_mod_left_glb_local_a_mod_one wpp_mod_right_glb_local_a_mod_one. (x1) + p * wpp_mod_left_glb_local_a_mod_one = (1) + p * wpp_mod_right_glb_local_a_mod_one - 0137
specialize mod_eq_trans p - 0138
specialize mod_eq_trans x1 - 0139
specialize mod_eq_trans x2 - 0140
specialize mod_eq_trans 1 - 0141
apply mod_eq_trans - 0142
exact hgauss_witness_witness_witness_right_right_right - 0143
exact hRone - 0144
have honeA : exists wpp_mod_left_glb_local_one_mod_a wpp_mod_right_glb_local_one_mod_a. (1) + p * wpp_mod_left_glb_local_one_mod_a = (x1) + p * wpp_mod_right_glb_local_one_mod_a - 0145
specialize mod_eq_symm p - 0146
specialize mod_eq_symm x1 - 0147
specialize mod_eq_symm 1 - 0148
apply mod_eq_symm - 0149
exact hAone - 0150
have hApred : exists wpp_mod_left_glb_local_a_mod_predecessor wpp_mod_right_glb_local_a_mod_predecessor. (x1) + p * wpp_mod_left_glb_local_a_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_a_mod_predecessor - 0151
apply heuler_right_left - 0152
exact hnonres - 0153
specialize mod_eq_trans p - 0154
specialize mod_eq_trans 1 - 0155
specialize mod_eq_trans x1 - 0156
specialize mod_eq_trans (2 * h) - 0157
apply mod_eq_trans - 0158
exact honeA - 0159
exact hApred - 0160
exists x3 - 0161
exact parity_cases_witness_right - 0162
have hodd_nonres : (exists gs_odd_glb_local_odd. x = 2 * gs_odd_glb_local_odd + 1) -> ~(exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres) - 0163
intro hodd - 0164
have hRpred : exists wpp_mod_left_glb_local_r_mod_predecessor wpp_mod_right_glb_local_r_mod_predecessor. (x2) + p * wpp_mod_left_glb_local_r_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_r_mod_predecessor - 0165
apply hbridge_right - 0166
exact hodd - 0167
have hApred : exists wpp_mod_left_glb_local_a_mod_predecessor wpp_mod_right_glb_local_a_mod_predecessor. (x1) + p * wpp_mod_left_glb_local_a_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_a_mod_predecessor - 0168
specialize mod_eq_trans p - 0169
specialize mod_eq_trans x1 - 0170
specialize mod_eq_trans x2 - 0171
specialize mod_eq_trans (2 * h) - 0172
apply mod_eq_trans - 0173
exact hgauss_witness_witness_witness_right_right_right - 0174
exact hRpred - 0175
intro hqres - 0176
apply heuler_right_right - 0177
exact hApred - 0178
exact hqres - 0179
exists x - 0180
split - 0181
exact hgauss_witness_witness_witness_right_right_left - 0182
split - 0183
split - 0184
exact hqres_even - 0185
exact heven_qres - 0186
split - 0187
exact hnonres_odd - 0188
exact hodd_nonres