Exact expanded PA statement
forall p h a A. p = 2 * h + 1 -> ((~(p = 1) /\ forall frm_prime_left_euler_residue_prime frm_prime_right_euler_residue_prime. p = frm_prime_left_euler_residue_prime * frm_prime_right_euler_residue_prime -> frm_prime_left_euler_residue_prime = 1 \/ frm_prime_right_euler_residue_prime = 1)) -> (~(exists frm_factor_euler_residue_value. a = p * frm_factor_euler_residue_value)) -> (exists qr_x_euler_residue. exists qr_u_euler_residue qr_v_euler_residue. qr_x_euler_residue * qr_x_euler_residue + p * qr_u_euler_residue = a + p * qr_v_euler_residue) -> (exists ff_b_euler_residue_half ff_c_euler_residue_half. ((forall ff_i_euler_residue_half_repeat. (exists ff_lt_euler_residue_half_repeat_bound. ff_lt_euler_residue_half_repeat_bound + S ff_i_euler_residue_half_repeat = h) -> (((exists ff_h_euler_residue_half_repeat_decoded. ff_h_euler_residue_half_repeat_decoded + S (a) = S ((S (ff_i_euler_residue_half_repeat)) * ff_c_euler_residue_half)) /\ exists ff_q_euler_residue_half_repeat_decoded. ff_b_euler_residue_half = ff_q_euler_residue_half_repeat_decoded * S ((S (ff_i_euler_residue_half_repeat)) * ff_c_euler_residue_half) + (a)))) /\ (exists ff_u_euler_residue_half_product ff_v_euler_residue_half_product. ((((exists ff_h_euler_residue_half_product_start. ff_h_euler_residue_half_product_start + S (1) = S ((S (0)) * ff_v_euler_residue_half_product)) /\ exists ff_q_euler_residue_half_product_start. ff_u_euler_residue_half_product = ff_q_euler_residue_half_product_start * S ((S (0)) * ff_v_euler_residue_half_product) + (1))) /\ ((((exists ff_h_euler_residue_half_product_terminal. ff_h_euler_residue_half_product_terminal + S (A) = S ((S (h)) * ff_v_euler_residue_half_product)) /\ exists ff_q_euler_residue_half_product_terminal. ff_u_euler_residue_half_product = ff_q_euler_residue_half_product_terminal * S ((S (h)) * ff_v_euler_residue_half_product) + (A))) /\ forall ff_i_euler_residue_half_product. (exists ff_lt_euler_residue_half_product_bound. ff_lt_euler_residue_half_product_bound + S ff_i_euler_residue_half_product = h) -> exists ff_p_euler_residue_half_product ff_r_euler_residue_half_product ff_s_euler_residue_half_product. ((((exists ff_h_euler_residue_half_product_factor. ff_h_euler_residue_half_product_factor + S (ff_p_euler_residue_half_product) = S ((S (ff_i_euler_residue_half_product)) * ff_c_euler_residue_half)) /\ exists ff_q_euler_residue_half_product_factor. ff_b_euler_residue_half = ff_q_euler_residue_half_product_factor * S ((S (ff_i_euler_residue_half_product)) * ff_c_euler_residue_half) + (ff_p_euler_residue_half_product))) /\ ((((exists ff_h_euler_residue_half_product_partial. ff_h_euler_residue_half_product_partial + S (ff_r_euler_residue_half_product) = S ((S (ff_i_euler_residue_half_product)) * ff_v_euler_residue_half_product)) /\ exists ff_q_euler_residue_half_product_partial. ff_u_euler_residue_half_product = ff_q_euler_residue_half_product_partial * S ((S (ff_i_euler_residue_half_product)) * ff_v_euler_residue_half_product) + (ff_r_euler_residue_half_product))) /\ ((((exists ff_h_euler_residue_half_product_successor. ff_h_euler_residue_half_product_successor + S (ff_s_euler_residue_half_product) = S ((S (S ff_i_euler_residue_half_product)) * ff_v_euler_residue_half_product)) /\ exists ff_q_euler_residue_half_product_successor. ff_u_euler_residue_half_product = ff_q_euler_residue_half_product_successor * S ((S (S ff_i_euler_residue_half_product)) * ff_v_euler_residue_half_product) + (ff_s_euler_residue_half_product))) /\ ff_s_euler_residue_half_product = ff_r_euler_residue_half_product * ff_p_euler_residue_half_product)))))))) -> (exists wpp_mod_left_euler_residue_result wpp_mod_right_euler_residue_result. (A) + p * wpp_mod_left_euler_residue_result = (1) + p * wpp_mod_right_euler_residue_result)Structural proof guide
Generated structural guide
A nonzero quadratic residue has half power one modulo an odd prime.
Use the direct prerequisites mod_eq_zero_to_dvd_nonzero, prime_nonzero, multiple_mul_right, dvd_to_mod_zero, mod_eq_symm, mod_eq_trans, pow_exists, pow_two, pow_mul_exp, fermat_predecessor_exponent_mod_one, pow_mod_congruent as previously established PA formulas.
The proof proceeds by case analysis (4), intermediate claims (21), equality transport (2), certified simplification (1).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA008A mod_eq_zero_to_dvd_nonzero PA0031 prime_nonzero PA000C multiple_mul_right PA0021 dvd_to_mod_zero PA003L mod_eq_symm PA0024 mod_eq_trans PA0046 pow_exists PA005W pow_two PA005Y pow_mul_exp PA008L fermat_predecessor_exponent_mod_one PA005I pow_mod_congruentDirect 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 A - 0005
intro hshape - 0006
intro hp - 0007
intro hnonzero - 0008
intro hresidue - 0009
intro hA - 0010
cases hresidue - 0011
have hp0 : ~(p = 0) - 0012
intro hpzero - 0013
specialize prime_nonzero p - 0014
apply prime_nonzero - 0015
exact hp - 0016
exact hpzero - 0017
have hroot_nonzero : ~(exists k. x = p * k) - 0018
intro hroot_divides - 0019
have hsquare_divides : exists k. x * x = p * k - 0020
specialize multiple_mul_right p - 0021
specialize multiple_mul_right x - 0022
specialize multiple_mul_right x - 0023
apply multiple_mul_right - 0024
exact hroot_divides - 0025
have hsquare_zero : exists wpp_mod_left_euler_root_square_zero wpp_mod_right_euler_root_square_zero. (x * x) + p * wpp_mod_left_euler_root_square_zero = (0) + p * wpp_mod_right_euler_root_square_zero - 0026
specialize dvd_to_mod_zero p - 0027
specialize dvd_to_mod_zero (x * x) - 0028
apply dvd_to_mod_zero - 0029
exact hsquare_divides - 0030
have hvalue_square : exists wpp_mod_left_euler_value_square wpp_mod_right_euler_value_square. (a) + p * wpp_mod_left_euler_value_square = (x * x) + p * wpp_mod_right_euler_value_square - 0031
specialize mod_eq_symm p - 0032
specialize mod_eq_symm (x * x) - 0033
specialize mod_eq_symm a - 0034
apply mod_eq_symm - 0035
exact hresidue_witness - 0036
have hvalue_zero : exists wpp_mod_left_euler_value_zero wpp_mod_right_euler_value_zero. (a) + p * wpp_mod_left_euler_value_zero = (0) + p * wpp_mod_right_euler_value_zero - 0037
specialize mod_eq_trans p - 0038
specialize mod_eq_trans a - 0039
specialize mod_eq_trans (x * x) - 0040
specialize mod_eq_trans 0 - 0041
apply mod_eq_trans - 0042
exact hvalue_square - 0043
exact hsquare_zero - 0044
have hvalue_divides : exists k. a = p * k - 0045
specialize mod_eq_zero_to_dvd_nonzero p - 0046
specialize mod_eq_zero_to_dvd_nonzero a - 0047
apply mod_eq_zero_to_dvd_nonzero - 0048
exact hp0 - 0049
exact hvalue_zero - 0050
apply hnonzero - 0051
exact hvalue_divides - 0052
have hroot_two_exists : exists R. (exists pa_b_euler_root_two_exists pa_c_euler_root_two_exists. ((forall pa_i_euler_root_two_exists_repeat. (exists pa_lt_euler_root_two_exists_repeat_bound. pa_lt_euler_root_two_exists_repeat_bound + S pa_i_euler_root_two_exists_repeat = 2) -> (((exists pa_h_euler_root_two_exists_repeat_decoded. pa_h_euler_root_two_exists_repeat_decoded + S (x) = S ((S (pa_i_euler_root_two_exists_repeat)) * pa_c_euler_root_two_exists)) /\ exists pa_q_euler_root_two_exists_repeat_decoded. pa_b_euler_root_two_exists = pa_q_euler_root_two_exists_repeat_decoded * S ((S (pa_i_euler_root_two_exists_repeat)) * pa_c_euler_root_two_exists) + (x)))) /\ (exists pa_u_euler_root_two_exists_product pa_v_euler_root_two_exists_product. ((((exists pa_h_euler_root_two_exists_product_start. pa_h_euler_root_two_exists_product_start + S (1) = S ((S (0)) * pa_v_euler_root_two_exists_product)) /\ exists pa_q_euler_root_two_exists_product_start. pa_u_euler_root_two_exists_product = pa_q_euler_root_two_exists_product_start * S ((S (0)) * pa_v_euler_root_two_exists_product) + (1))) /\ ((((exists pa_h_euler_root_two_exists_product_terminal. pa_h_euler_root_two_exists_product_terminal + S (R) = S ((S (2)) * pa_v_euler_root_two_exists_product)) /\ exists pa_q_euler_root_two_exists_product_terminal. pa_u_euler_root_two_exists_product = pa_q_euler_root_two_exists_product_terminal * S ((S (2)) * pa_v_euler_root_two_exists_product) + (R))) /\ forall pa_i_euler_root_two_exists_product. (exists pa_lt_euler_root_two_exists_product_bound. pa_lt_euler_root_two_exists_product_bound + S pa_i_euler_root_two_exists_product = 2) -> exists pa_p_euler_root_two_exists_product pa_r_euler_root_two_exists_product pa_s_euler_root_two_exists_product. ((((exists pa_h_euler_root_two_exists_product_factor. pa_h_euler_root_two_exists_product_factor + S (pa_p_euler_root_two_exists_product) = S ((S (pa_i_euler_root_two_exists_product)) * pa_c_euler_root_two_exists)) /\ exists pa_q_euler_root_two_exists_product_factor. pa_b_euler_root_two_exists = pa_q_euler_root_two_exists_product_factor * S ((S (pa_i_euler_root_two_exists_product)) * pa_c_euler_root_two_exists) + (pa_p_euler_root_two_exists_product))) /\ ((((exists pa_h_euler_root_two_exists_product_partial. pa_h_euler_root_two_exists_product_partial + S (pa_r_euler_root_two_exists_product) = S ((S (pa_i_euler_root_two_exists_product)) * pa_v_euler_root_two_exists_product)) /\ exists pa_q_euler_root_two_exists_product_partial. pa_u_euler_root_two_exists_product = pa_q_euler_root_two_exists_product_partial * S ((S (pa_i_euler_root_two_exists_product)) * pa_v_euler_root_two_exists_product) + (pa_r_euler_root_two_exists_product))) /\ ((((exists pa_h_euler_root_two_exists_product_successor. pa_h_euler_root_two_exists_product_successor + S (pa_s_euler_root_two_exists_product) = S ((S (S pa_i_euler_root_two_exists_product)) * pa_v_euler_root_two_exists_product)) /\ exists pa_q_euler_root_two_exists_product_successor. pa_u_euler_root_two_exists_product = pa_q_euler_root_two_exists_product_successor * S ((S (S pa_i_euler_root_two_exists_product)) * pa_v_euler_root_two_exists_product) + (pa_s_euler_root_two_exists_product))) /\ pa_s_euler_root_two_exists_product = pa_r_euler_root_two_exists_product * pa_p_euler_root_two_exists_product)))))))) - 0053
specialize pow_exists x - 0054
specialize pow_exists 2 - 0055
exact pow_exists - 0056
cases hroot_two_exists - 0057
have hroot_two : exists pa_b_euler_root_two pa_c_euler_root_two. ((forall pa_i_euler_root_two_repeat. (exists pa_lt_euler_root_two_repeat_bound. pa_lt_euler_root_two_repeat_bound + S pa_i_euler_root_two_repeat = 2) -> (((exists pa_h_euler_root_two_repeat_decoded. pa_h_euler_root_two_repeat_decoded + S (x) = S ((S (pa_i_euler_root_two_repeat)) * pa_c_euler_root_two)) /\ exists pa_q_euler_root_two_repeat_decoded. pa_b_euler_root_two = pa_q_euler_root_two_repeat_decoded * S ((S (pa_i_euler_root_two_repeat)) * pa_c_euler_root_two) + (x)))) /\ (exists pa_u_euler_root_two_product pa_v_euler_root_two_product. ((((exists pa_h_euler_root_two_product_start. pa_h_euler_root_two_product_start + S (1) = S ((S (0)) * pa_v_euler_root_two_product)) /\ exists pa_q_euler_root_two_product_start. pa_u_euler_root_two_product = pa_q_euler_root_two_product_start * S ((S (0)) * pa_v_euler_root_two_product) + (1))) /\ ((((exists pa_h_euler_root_two_product_terminal. pa_h_euler_root_two_product_terminal + S (x1) = S ((S (2)) * pa_v_euler_root_two_product)) /\ exists pa_q_euler_root_two_product_terminal. pa_u_euler_root_two_product = pa_q_euler_root_two_product_terminal * S ((S (2)) * pa_v_euler_root_two_product) + (x1))) /\ forall pa_i_euler_root_two_product. (exists pa_lt_euler_root_two_product_bound. pa_lt_euler_root_two_product_bound + S pa_i_euler_root_two_product = 2) -> exists pa_p_euler_root_two_product pa_r_euler_root_two_product pa_s_euler_root_two_product. ((((exists pa_h_euler_root_two_product_factor. pa_h_euler_root_two_product_factor + S (pa_p_euler_root_two_product) = S ((S (pa_i_euler_root_two_product)) * pa_c_euler_root_two)) /\ exists pa_q_euler_root_two_product_factor. pa_b_euler_root_two = pa_q_euler_root_two_product_factor * S ((S (pa_i_euler_root_two_product)) * pa_c_euler_root_two) + (pa_p_euler_root_two_product))) /\ ((((exists pa_h_euler_root_two_product_partial. pa_h_euler_root_two_product_partial + S (pa_r_euler_root_two_product) = S ((S (pa_i_euler_root_two_product)) * pa_v_euler_root_two_product)) /\ exists pa_q_euler_root_two_product_partial. pa_u_euler_root_two_product = pa_q_euler_root_two_product_partial * S ((S (pa_i_euler_root_two_product)) * pa_v_euler_root_two_product) + (pa_r_euler_root_two_product))) /\ ((((exists pa_h_euler_root_two_product_successor. pa_h_euler_root_two_product_successor + S (pa_s_euler_root_two_product) = S ((S (S pa_i_euler_root_two_product)) * pa_v_euler_root_two_product)) /\ exists pa_q_euler_root_two_product_successor. pa_u_euler_root_two_product = pa_q_euler_root_two_product_successor * S ((S (S pa_i_euler_root_two_product)) * pa_v_euler_root_two_product) + (pa_s_euler_root_two_product))) /\ pa_s_euler_root_two_product = pa_r_euler_root_two_product * pa_p_euler_root_two_product))))))) - 0058
exact hroot_two_exists_witness - 0059
have hroot_two_eq : x1 = x * x - 0060
specialize pow_two x - 0061
specialize pow_two 2 - 0062
specialize pow_two x1 - 0063
apply pow_two - 0064
refl - 0065
exact hroot_two - 0066
have hsquare_half_exists : exists R. (exists ff_b_euler_square_half_exists ff_c_euler_square_half_exists. ((forall ff_i_euler_square_half_exists_repeat. (exists ff_lt_euler_square_half_exists_repeat_bound. ff_lt_euler_square_half_exists_repeat_bound + S ff_i_euler_square_half_exists_repeat = h) -> (((exists ff_h_euler_square_half_exists_repeat_decoded. ff_h_euler_square_half_exists_repeat_decoded + S (x1) = S ((S (ff_i_euler_square_half_exists_repeat)) * ff_c_euler_square_half_exists)) /\ exists ff_q_euler_square_half_exists_repeat_decoded. ff_b_euler_square_half_exists = ff_q_euler_square_half_exists_repeat_decoded * S ((S (ff_i_euler_square_half_exists_repeat)) * ff_c_euler_square_half_exists) + (x1)))) /\ (exists ff_u_euler_square_half_exists_product ff_v_euler_square_half_exists_product. ((((exists ff_h_euler_square_half_exists_product_start. ff_h_euler_square_half_exists_product_start + S (1) = S ((S (0)) * ff_v_euler_square_half_exists_product)) /\ exists ff_q_euler_square_half_exists_product_start. ff_u_euler_square_half_exists_product = ff_q_euler_square_half_exists_product_start * S ((S (0)) * ff_v_euler_square_half_exists_product) + (1))) /\ ((((exists ff_h_euler_square_half_exists_product_terminal. ff_h_euler_square_half_exists_product_terminal + S (R) = S ((S (h)) * ff_v_euler_square_half_exists_product)) /\ exists ff_q_euler_square_half_exists_product_terminal. ff_u_euler_square_half_exists_product = ff_q_euler_square_half_exists_product_terminal * S ((S (h)) * ff_v_euler_square_half_exists_product) + (R))) /\ forall ff_i_euler_square_half_exists_product. (exists ff_lt_euler_square_half_exists_product_bound. ff_lt_euler_square_half_exists_product_bound + S ff_i_euler_square_half_exists_product = h) -> exists ff_p_euler_square_half_exists_product ff_r_euler_square_half_exists_product ff_s_euler_square_half_exists_product. ((((exists ff_h_euler_square_half_exists_product_factor. ff_h_euler_square_half_exists_product_factor + S (ff_p_euler_square_half_exists_product) = S ((S (ff_i_euler_square_half_exists_product)) * ff_c_euler_square_half_exists)) /\ exists ff_q_euler_square_half_exists_product_factor. ff_b_euler_square_half_exists = ff_q_euler_square_half_exists_product_factor * S ((S (ff_i_euler_square_half_exists_product)) * ff_c_euler_square_half_exists) + (ff_p_euler_square_half_exists_product))) /\ ((((exists ff_h_euler_square_half_exists_product_partial. ff_h_euler_square_half_exists_product_partial + S (ff_r_euler_square_half_exists_product) = S ((S (ff_i_euler_square_half_exists_product)) * ff_v_euler_square_half_exists_product)) /\ exists ff_q_euler_square_half_exists_product_partial. ff_u_euler_square_half_exists_product = ff_q_euler_square_half_exists_product_partial * S ((S (ff_i_euler_square_half_exists_product)) * ff_v_euler_square_half_exists_product) + (ff_r_euler_square_half_exists_product))) /\ ((((exists ff_h_euler_square_half_exists_product_successor. ff_h_euler_square_half_exists_product_successor + S (ff_s_euler_square_half_exists_product) = S ((S (S ff_i_euler_square_half_exists_product)) * ff_v_euler_square_half_exists_product)) /\ exists ff_q_euler_square_half_exists_product_successor. ff_u_euler_square_half_exists_product = ff_q_euler_square_half_exists_product_successor * S ((S (S ff_i_euler_square_half_exists_product)) * ff_v_euler_square_half_exists_product) + (ff_s_euler_square_half_exists_product))) /\ ff_s_euler_square_half_exists_product = ff_r_euler_square_half_exists_product * ff_p_euler_square_half_exists_product)))))))) - 0067
specialize pow_exists x1 - 0068
specialize pow_exists h - 0069
exact pow_exists - 0070
cases hsquare_half_exists - 0071
have hsquare_half : exists ff_b_euler_square_half ff_c_euler_square_half. ((forall ff_i_euler_square_half_repeat. (exists ff_lt_euler_square_half_repeat_bound. ff_lt_euler_square_half_repeat_bound + S ff_i_euler_square_half_repeat = h) -> (((exists ff_h_euler_square_half_repeat_decoded. ff_h_euler_square_half_repeat_decoded + S (x1) = S ((S (ff_i_euler_square_half_repeat)) * ff_c_euler_square_half)) /\ exists ff_q_euler_square_half_repeat_decoded. ff_b_euler_square_half = ff_q_euler_square_half_repeat_decoded * S ((S (ff_i_euler_square_half_repeat)) * ff_c_euler_square_half) + (x1)))) /\ (exists ff_u_euler_square_half_product ff_v_euler_square_half_product. ((((exists ff_h_euler_square_half_product_start. ff_h_euler_square_half_product_start + S (1) = S ((S (0)) * ff_v_euler_square_half_product)) /\ exists ff_q_euler_square_half_product_start. ff_u_euler_square_half_product = ff_q_euler_square_half_product_start * S ((S (0)) * ff_v_euler_square_half_product) + (1))) /\ ((((exists ff_h_euler_square_half_product_terminal. ff_h_euler_square_half_product_terminal + S (x2) = S ((S (h)) * ff_v_euler_square_half_product)) /\ exists ff_q_euler_square_half_product_terminal. ff_u_euler_square_half_product = ff_q_euler_square_half_product_terminal * S ((S (h)) * ff_v_euler_square_half_product) + (x2))) /\ forall ff_i_euler_square_half_product. (exists ff_lt_euler_square_half_product_bound. ff_lt_euler_square_half_product_bound + S ff_i_euler_square_half_product = h) -> exists ff_p_euler_square_half_product ff_r_euler_square_half_product ff_s_euler_square_half_product. ((((exists ff_h_euler_square_half_product_factor. ff_h_euler_square_half_product_factor + S (ff_p_euler_square_half_product) = S ((S (ff_i_euler_square_half_product)) * ff_c_euler_square_half)) /\ exists ff_q_euler_square_half_product_factor. ff_b_euler_square_half = ff_q_euler_square_half_product_factor * S ((S (ff_i_euler_square_half_product)) * ff_c_euler_square_half) + (ff_p_euler_square_half_product))) /\ ((((exists ff_h_euler_square_half_product_partial. ff_h_euler_square_half_product_partial + S (ff_r_euler_square_half_product) = S ((S (ff_i_euler_square_half_product)) * ff_v_euler_square_half_product)) /\ exists ff_q_euler_square_half_product_partial. ff_u_euler_square_half_product = ff_q_euler_square_half_product_partial * S ((S (ff_i_euler_square_half_product)) * ff_v_euler_square_half_product) + (ff_r_euler_square_half_product))) /\ ((((exists ff_h_euler_square_half_product_successor. ff_h_euler_square_half_product_successor + S (ff_s_euler_square_half_product) = S ((S (S ff_i_euler_square_half_product)) * ff_v_euler_square_half_product)) /\ exists ff_q_euler_square_half_product_successor. ff_u_euler_square_half_product = ff_q_euler_square_half_product_successor * S ((S (S ff_i_euler_square_half_product)) * ff_v_euler_square_half_product) + (ff_s_euler_square_half_product))) /\ ff_s_euler_square_half_product = ff_r_euler_square_half_product * ff_p_euler_square_half_product))))))) - 0072
exact hsquare_half_exists_witness - 0073
have hroot_total_exists : exists R. (exists pa_b_euler_root_total_exists pa_c_euler_root_total_exists. ((forall pa_i_euler_root_total_exists_repeat. (exists pa_lt_euler_root_total_exists_repeat_bound. pa_lt_euler_root_total_exists_repeat_bound + S pa_i_euler_root_total_exists_repeat = 2 * h) -> (((exists pa_h_euler_root_total_exists_repeat_decoded. pa_h_euler_root_total_exists_repeat_decoded + S (x) = S ((S (pa_i_euler_root_total_exists_repeat)) * pa_c_euler_root_total_exists)) /\ exists pa_q_euler_root_total_exists_repeat_decoded. pa_b_euler_root_total_exists = pa_q_euler_root_total_exists_repeat_decoded * S ((S (pa_i_euler_root_total_exists_repeat)) * pa_c_euler_root_total_exists) + (x)))) /\ (exists pa_u_euler_root_total_exists_product pa_v_euler_root_total_exists_product. ((((exists pa_h_euler_root_total_exists_product_start. pa_h_euler_root_total_exists_product_start + S (1) = S ((S (0)) * pa_v_euler_root_total_exists_product)) /\ exists pa_q_euler_root_total_exists_product_start. pa_u_euler_root_total_exists_product = pa_q_euler_root_total_exists_product_start * S ((S (0)) * pa_v_euler_root_total_exists_product) + (1))) /\ ((((exists pa_h_euler_root_total_exists_product_terminal. pa_h_euler_root_total_exists_product_terminal + S (R) = S ((S (2 * h)) * pa_v_euler_root_total_exists_product)) /\ exists pa_q_euler_root_total_exists_product_terminal. pa_u_euler_root_total_exists_product = pa_q_euler_root_total_exists_product_terminal * S ((S (2 * h)) * pa_v_euler_root_total_exists_product) + (R))) /\ forall pa_i_euler_root_total_exists_product. (exists pa_lt_euler_root_total_exists_product_bound. pa_lt_euler_root_total_exists_product_bound + S pa_i_euler_root_total_exists_product = 2 * h) -> exists pa_p_euler_root_total_exists_product pa_r_euler_root_total_exists_product pa_s_euler_root_total_exists_product. ((((exists pa_h_euler_root_total_exists_product_factor. pa_h_euler_root_total_exists_product_factor + S (pa_p_euler_root_total_exists_product) = S ((S (pa_i_euler_root_total_exists_product)) * pa_c_euler_root_total_exists)) /\ exists pa_q_euler_root_total_exists_product_factor. pa_b_euler_root_total_exists = pa_q_euler_root_total_exists_product_factor * S ((S (pa_i_euler_root_total_exists_product)) * pa_c_euler_root_total_exists) + (pa_p_euler_root_total_exists_product))) /\ ((((exists pa_h_euler_root_total_exists_product_partial. pa_h_euler_root_total_exists_product_partial + S (pa_r_euler_root_total_exists_product) = S ((S (pa_i_euler_root_total_exists_product)) * pa_v_euler_root_total_exists_product)) /\ exists pa_q_euler_root_total_exists_product_partial. pa_u_euler_root_total_exists_product = pa_q_euler_root_total_exists_product_partial * S ((S (pa_i_euler_root_total_exists_product)) * pa_v_euler_root_total_exists_product) + (pa_r_euler_root_total_exists_product))) /\ ((((exists pa_h_euler_root_total_exists_product_successor. pa_h_euler_root_total_exists_product_successor + S (pa_s_euler_root_total_exists_product) = S ((S (S pa_i_euler_root_total_exists_product)) * pa_v_euler_root_total_exists_product)) /\ exists pa_q_euler_root_total_exists_product_successor. pa_u_euler_root_total_exists_product = pa_q_euler_root_total_exists_product_successor * S ((S (S pa_i_euler_root_total_exists_product)) * pa_v_euler_root_total_exists_product) + (pa_s_euler_root_total_exists_product))) /\ pa_s_euler_root_total_exists_product = pa_r_euler_root_total_exists_product * pa_p_euler_root_total_exists_product)))))))) - 0074
specialize pow_exists x - 0075
specialize pow_exists (2 * h) - 0076
exact pow_exists - 0077
cases hroot_total_exists - 0078
have hroot_total : exists pa_b_euler_root_double_half pa_c_euler_root_double_half. ((forall pa_i_euler_root_double_half_repeat. (exists pa_lt_euler_root_double_half_repeat_bound. pa_lt_euler_root_double_half_repeat_bound + S pa_i_euler_root_double_half_repeat = 2 * h) -> (((exists pa_h_euler_root_double_half_repeat_decoded. pa_h_euler_root_double_half_repeat_decoded + S (x) = S ((S (pa_i_euler_root_double_half_repeat)) * pa_c_euler_root_double_half)) /\ exists pa_q_euler_root_double_half_repeat_decoded. pa_b_euler_root_double_half = pa_q_euler_root_double_half_repeat_decoded * S ((S (pa_i_euler_root_double_half_repeat)) * pa_c_euler_root_double_half) + (x)))) /\ (exists pa_u_euler_root_double_half_product pa_v_euler_root_double_half_product. ((((exists pa_h_euler_root_double_half_product_start. pa_h_euler_root_double_half_product_start + S (1) = S ((S (0)) * pa_v_euler_root_double_half_product)) /\ exists pa_q_euler_root_double_half_product_start. pa_u_euler_root_double_half_product = pa_q_euler_root_double_half_product_start * S ((S (0)) * pa_v_euler_root_double_half_product) + (1))) /\ ((((exists pa_h_euler_root_double_half_product_terminal. pa_h_euler_root_double_half_product_terminal + S (x3) = S ((S (2 * h)) * pa_v_euler_root_double_half_product)) /\ exists pa_q_euler_root_double_half_product_terminal. pa_u_euler_root_double_half_product = pa_q_euler_root_double_half_product_terminal * S ((S (2 * h)) * pa_v_euler_root_double_half_product) + (x3))) /\ forall pa_i_euler_root_double_half_product. (exists pa_lt_euler_root_double_half_product_bound. pa_lt_euler_root_double_half_product_bound + S pa_i_euler_root_double_half_product = 2 * h) -> exists pa_p_euler_root_double_half_product pa_r_euler_root_double_half_product pa_s_euler_root_double_half_product. ((((exists pa_h_euler_root_double_half_product_factor. pa_h_euler_root_double_half_product_factor + S (pa_p_euler_root_double_half_product) = S ((S (pa_i_euler_root_double_half_product)) * pa_c_euler_root_double_half)) /\ exists pa_q_euler_root_double_half_product_factor. pa_b_euler_root_double_half = pa_q_euler_root_double_half_product_factor * S ((S (pa_i_euler_root_double_half_product)) * pa_c_euler_root_double_half) + (pa_p_euler_root_double_half_product))) /\ ((((exists pa_h_euler_root_double_half_product_partial. pa_h_euler_root_double_half_product_partial + S (pa_r_euler_root_double_half_product) = S ((S (pa_i_euler_root_double_half_product)) * pa_v_euler_root_double_half_product)) /\ exists pa_q_euler_root_double_half_product_partial. pa_u_euler_root_double_half_product = pa_q_euler_root_double_half_product_partial * S ((S (pa_i_euler_root_double_half_product)) * pa_v_euler_root_double_half_product) + (pa_r_euler_root_double_half_product))) /\ ((((exists pa_h_euler_root_double_half_product_successor. pa_h_euler_root_double_half_product_successor + S (pa_s_euler_root_double_half_product) = S ((S (S pa_i_euler_root_double_half_product)) * pa_v_euler_root_double_half_product)) /\ exists pa_q_euler_root_double_half_product_successor. pa_u_euler_root_double_half_product = pa_q_euler_root_double_half_product_successor * S ((S (S pa_i_euler_root_double_half_product)) * pa_v_euler_root_double_half_product) + (pa_s_euler_root_double_half_product))) /\ pa_s_euler_root_double_half_product = pa_r_euler_root_double_half_product * pa_p_euler_root_double_half_product))))))) - 0079
exact hroot_total_exists_witness - 0080
have hiterated : x2 = x3 - 0081
specialize pow_mul_exp x - 0082
specialize pow_mul_exp 2 - 0083
specialize pow_mul_exp h - 0084
specialize pow_mul_exp (2 * h) - 0085
specialize pow_mul_exp x1 - 0086
specialize pow_mul_exp x2 - 0087
specialize pow_mul_exp x3 - 0088
apply pow_mul_exp - 0089
refl - 0090
exact hroot_two - 0091
exact hsquare_half - 0092
exact hroot_total - 0093
have hpredecessor : p = S (2 * h) - 0094
trans 2 * h + 1 - 0095
exact hshape - 0096
simp - 0097
have hfermat : exists wpp_mod_left_euler_root_fermat wpp_mod_right_euler_root_fermat. (x3) + p * wpp_mod_left_euler_root_fermat = (1) + p * wpp_mod_right_euler_root_fermat - 0098
specialize fermat_predecessor_exponent_mod_one p - 0099
specialize fermat_predecessor_exponent_mod_one (2 * h) - 0100
specialize fermat_predecessor_exponent_mod_one x - 0101
specialize fermat_predecessor_exponent_mod_one x3 - 0102
apply fermat_predecessor_exponent_mod_one - 0103
exact hpredecessor - 0104
exact hp - 0105
exact hroot_nonzero - 0106
exact hroot_total - 0107
have hsquare_value : exists wpp_mod_left_euler_square_value wpp_mod_right_euler_square_value. (x1) + p * wpp_mod_left_euler_square_value = (a) + p * wpp_mod_right_euler_square_value - 0108
rewrite hroot_two_eq - 0109
exact hresidue_witness - 0110
have hpowers : exists wpp_mod_left_euler_powers_congruent wpp_mod_right_euler_powers_congruent. (x2) + p * wpp_mod_left_euler_powers_congruent = (A) + p * wpp_mod_right_euler_powers_congruent - 0111
specialize pow_mod_congruent p - 0112
specialize pow_mod_congruent x1 - 0113
specialize pow_mod_congruent a - 0114
specialize pow_mod_congruent h - 0115
specialize pow_mod_congruent x2 - 0116
specialize pow_mod_congruent A - 0117
apply pow_mod_congruent - 0118
exact hsquare_value - 0119
exact hsquare_half - 0120
exact hA - 0121
have hback : exists wpp_mod_left_euler_value_power_back wpp_mod_right_euler_value_power_back. (A) + p * wpp_mod_left_euler_value_power_back = (x2) + p * wpp_mod_right_euler_value_power_back - 0122
specialize mod_eq_symm p - 0123
specialize mod_eq_symm x2 - 0124
specialize mod_eq_symm A - 0125
apply mod_eq_symm - 0126
exact hpowers - 0127
have hhalf_one : exists wpp_mod_left_euler_root_half_one wpp_mod_right_euler_root_half_one. (x2) + p * wpp_mod_left_euler_root_half_one = (1) + p * wpp_mod_right_euler_root_half_one - 0128
rewrite hiterated - 0129
exact hfermat - 0130
specialize mod_eq_trans p - 0131
specialize mod_eq_trans A - 0132
specialize mod_eq_trans x2 - 0133
specialize mod_eq_trans 1 - 0134
apply mod_eq_trans - 0135
exact hback - 0136
exact hhalf_one