Exact expanded PA statement
forall p h a b c tb tc qb qc rb rc mb mc sb sc X Q M E. ((~(p = 1) /\ forall gsp_prime_left_ges_prime gsp_prime_right_ges_prime. p = gsp_prime_left_ges_prime * gsp_prime_right_ges_prime -> gsp_prime_left_ges_prime = 1 \/ gsp_prime_right_ges_prime = 1)) -> (~(exists gsp_divisor_factor_ges_nondivisor. a = p * gsp_divisor_factor_ges_nondivisor)) -> p = 2 * h + 1 -> (exists sdp_odd_ges_scale. a = 2 * sdp_odd_ges_scale + 1) -> (forall gsp_range_index_ges_half. (exists gsp_lt_gap_ges_half_range_bound. gsp_lt_gap_ges_half_range_bound + S gsp_range_index_ges_half = h) -> (((exists gsp_beta_height_ges_half_range_entry. gsp_beta_height_ges_half_range_entry + S (1 + gsp_range_index_ges_half) = S ((S (gsp_range_index_ges_half)) * c)) /\ exists gsp_beta_quotient_ges_half_range_entry. b = gsp_beta_quotient_ges_half_range_entry * S ((S (gsp_range_index_ges_half)) * c) + (1 + gsp_range_index_ges_half)))) -> (forall esd_index_ges_scaled esd_value_ges_scaled. (exists esd_gap_ges_scaled. esd_gap_ges_scaled + S esd_index_ges_scaled = h) -> (((exists ff_h_esd_ges_scaled_decoded. ff_h_esd_ges_scaled_decoded + S (esd_value_ges_scaled) = S ((S (esd_index_ges_scaled)) * tc)) /\ exists ff_q_esd_ges_scaled_decoded. tb = ff_q_esd_ges_scaled_decoded * S ((S (esd_index_ges_scaled)) * tc) + (esd_value_ges_scaled))) -> esd_value_ges_scaled = a * (1 + esd_index_ges_scaled)) -> (forall fdp_index_ges_division. (exists gsp_lt_gap_ges_division_index_bound. gsp_lt_gap_ges_division_index_bound + S fdp_index_ges_division = h) -> exists fdp_value_ges_division fdp_quotient_ges_division fdp_remainder_ges_division. (((exists ff_h_fdp_ges_division_source. ff_h_fdp_ges_division_source + S (fdp_value_ges_division) = S ((S (fdp_index_ges_division)) * tc)) /\ exists ff_q_fdp_ges_division_source. tb = ff_q_fdp_ges_division_source * S ((S (fdp_index_ges_division)) * tc) + (fdp_value_ges_division))) /\ ((((exists ff_h_fdp_ges_division_quotient_entry. ff_h_fdp_ges_division_quotient_entry + S (fdp_quotient_ges_division) = S ((S (fdp_index_ges_division)) * qc)) /\ exists ff_q_fdp_ges_division_quotient_entry. qb = ff_q_fdp_ges_division_quotient_entry * S ((S (fdp_index_ges_division)) * qc) + (fdp_quotient_ges_division))) /\ ((((exists ff_h_fdp_ges_division_remainder_entry. ff_h_fdp_ges_division_remainder_entry + S (fdp_remainder_ges_division) = S ((S (fdp_index_ges_division)) * rc)) /\ exists ff_q_fdp_ges_division_remainder_entry. rb = ff_q_fdp_ges_division_remainder_entry * S ((S (fdp_index_ges_division)) * rc) + (fdp_remainder_ges_division))) /\ (fdp_value_ges_division = p * fdp_quotient_ges_division + fdp_remainder_ges_division /\ (exists gsp_lt_gap_ges_division_remainder_bound. gsp_lt_gap_ges_division_remainder_bound + S fdp_remainder_ges_division = p))))) -> (forall gsp_index_ges_signed. (exists gsp_lt_gap_ges_signed_index_bound. gsp_lt_gap_ges_signed_index_bound + S gsp_index_ges_signed = h) -> (exists gsp_value_ges_signed_entry gsp_magnitude_ges_signed_entry gsp_sign_ges_signed_entry. (((exists ff_h_gsp_ges_signed_entry_source. ff_h_gsp_ges_signed_entry_source + S (gsp_value_ges_signed_entry) = S ((S (gsp_index_ges_signed)) * c)) /\ exists ff_q_gsp_ges_signed_entry_source. b = ff_q_gsp_ges_signed_entry_source * S ((S (gsp_index_ges_signed)) * c) + (gsp_value_ges_signed_entry))) /\ ((((exists ff_h_gsp_ges_signed_entry_magnitude. ff_h_gsp_ges_signed_entry_magnitude + S (gsp_magnitude_ges_signed_entry) = S ((S (gsp_index_ges_signed)) * mc)) /\ exists ff_q_gsp_ges_signed_entry_magnitude. mb = ff_q_gsp_ges_signed_entry_magnitude * S ((S (gsp_index_ges_signed)) * mc) + (gsp_magnitude_ges_signed_entry))) /\ ((((exists ff_h_gsp_ges_signed_entry_sign. ff_h_gsp_ges_signed_entry_sign + S (gsp_sign_ges_signed_entry) = S ((S (gsp_index_ges_signed)) * sc)) /\ exists ff_q_gsp_ges_signed_entry_sign. sb = ff_q_gsp_ges_signed_entry_sign * S ((S (gsp_index_ges_signed)) * sc) + (gsp_sign_ges_signed_entry))) /\ ((exists gsp_lt_gap_ges_signed_entry_positive. gsp_lt_gap_ges_signed_entry_positive + S 0 = gsp_magnitude_ges_signed_entry) /\ ((exists gsp_le_gap_ges_signed_entry_bounded. gsp_le_gap_ges_signed_entry_bounded + gsp_magnitude_ges_signed_entry = h) /\ ((gsp_sign_ges_signed_entry = 0 \/ gsp_sign_ges_signed_entry = 1) /\ (((gsp_sign_ges_signed_entry = 0 /\ (exists gsp_mod_left_ges_signed_entry_lower gsp_mod_right_ges_signed_entry_lower. (a * gsp_value_ges_signed_entry) + p * gsp_mod_left_ges_signed_entry_lower = (gsp_magnitude_ges_signed_entry) + p * gsp_mod_right_ges_signed_entry_lower)) \/ (gsp_sign_ges_signed_entry = 1 /\ (exists gsp_mod_left_ges_signed_entry_reflected gsp_mod_right_ges_signed_entry_reflected. (a * gsp_value_ges_signed_entry) + p * gsp_mod_left_ges_signed_entry_reflected = ((2 * h) * gsp_magnitude_ges_signed_entry) + p * gsp_mod_right_ges_signed_entry_reflected))))))))))) -> (exists ff_u_ges_half_sum ff_v_ges_half_sum. ((((exists ff_h_ges_half_sum_start. ff_h_ges_half_sum_start + S (0) = S ((S (0)) * ff_v_ges_half_sum)) /\ exists ff_q_ges_half_sum_start. ff_u_ges_half_sum = ff_q_ges_half_sum_start * S ((S (0)) * ff_v_ges_half_sum) + (0))) /\ ((((exists ff_h_ges_half_sum_terminal. ff_h_ges_half_sum_terminal + S (X) = S ((S (h)) * ff_v_ges_half_sum)) /\ exists ff_q_ges_half_sum_terminal. ff_u_ges_half_sum = ff_q_ges_half_sum_terminal * S ((S (h)) * ff_v_ges_half_sum) + (X))) /\ forall ff_i_ges_half_sum. (exists ff_lt_ges_half_sum_bound. ff_lt_ges_half_sum_bound + S ff_i_ges_half_sum = h) -> exists ff_a_ges_half_sum ff_r_ges_half_sum ff_s_ges_half_sum. ((((exists ff_h_ges_half_sum_summand. ff_h_ges_half_sum_summand + S (ff_a_ges_half_sum) = S ((S (ff_i_ges_half_sum)) * c)) /\ exists ff_q_ges_half_sum_summand. b = ff_q_ges_half_sum_summand * S ((S (ff_i_ges_half_sum)) * c) + (ff_a_ges_half_sum))) /\ ((((exists ff_h_ges_half_sum_partial. ff_h_ges_half_sum_partial + S (ff_r_ges_half_sum) = S ((S (ff_i_ges_half_sum)) * ff_v_ges_half_sum)) /\ exists ff_q_ges_half_sum_partial. ff_u_ges_half_sum = ff_q_ges_half_sum_partial * S ((S (ff_i_ges_half_sum)) * ff_v_ges_half_sum) + (ff_r_ges_half_sum))) /\ ((((exists ff_h_ges_half_sum_successor. ff_h_ges_half_sum_successor + S (ff_s_ges_half_sum) = S ((S (S ff_i_ges_half_sum)) * ff_v_ges_half_sum)) /\ exists ff_q_ges_half_sum_successor. ff_u_ges_half_sum = ff_q_ges_half_sum_successor * S ((S (S ff_i_ges_half_sum)) * ff_v_ges_half_sum) + (ff_s_ges_half_sum))) /\ ff_s_ges_half_sum = ff_r_ges_half_sum + ff_a_ges_half_sum)))))) -> (exists ff_u_ges_quotient_sum ff_v_ges_quotient_sum. ((((exists ff_h_ges_quotient_sum_start. ff_h_ges_quotient_sum_start + S (0) = S ((S (0)) * ff_v_ges_quotient_sum)) /\ exists ff_q_ges_quotient_sum_start. ff_u_ges_quotient_sum = ff_q_ges_quotient_sum_start * S ((S (0)) * ff_v_ges_quotient_sum) + (0))) /\ ((((exists ff_h_ges_quotient_sum_terminal. ff_h_ges_quotient_sum_terminal + S (Q) = S ((S (h)) * ff_v_ges_quotient_sum)) /\ exists ff_q_ges_quotient_sum_terminal. ff_u_ges_quotient_sum = ff_q_ges_quotient_sum_terminal * S ((S (h)) * ff_v_ges_quotient_sum) + (Q))) /\ forall ff_i_ges_quotient_sum. (exists ff_lt_ges_quotient_sum_bound. ff_lt_ges_quotient_sum_bound + S ff_i_ges_quotient_sum = h) -> exists ff_a_ges_quotient_sum ff_r_ges_quotient_sum ff_s_ges_quotient_sum. ((((exists ff_h_ges_quotient_sum_summand. ff_h_ges_quotient_sum_summand + S (ff_a_ges_quotient_sum) = S ((S (ff_i_ges_quotient_sum)) * qc)) /\ exists ff_q_ges_quotient_sum_summand. qb = ff_q_ges_quotient_sum_summand * S ((S (ff_i_ges_quotient_sum)) * qc) + (ff_a_ges_quotient_sum))) /\ ((((exists ff_h_ges_quotient_sum_partial. ff_h_ges_quotient_sum_partial + S (ff_r_ges_quotient_sum) = S ((S (ff_i_ges_quotient_sum)) * ff_v_ges_quotient_sum)) /\ exists ff_q_ges_quotient_sum_partial. ff_u_ges_quotient_sum = ff_q_ges_quotient_sum_partial * S ((S (ff_i_ges_quotient_sum)) * ff_v_ges_quotient_sum) + (ff_r_ges_quotient_sum))) /\ ((((exists ff_h_ges_quotient_sum_successor. ff_h_ges_quotient_sum_successor + S (ff_s_ges_quotient_sum) = S ((S (S ff_i_ges_quotient_sum)) * ff_v_ges_quotient_sum)) /\ exists ff_q_ges_quotient_sum_successor. ff_u_ges_quotient_sum = ff_q_ges_quotient_sum_successor * S ((S (S ff_i_ges_quotient_sum)) * ff_v_ges_quotient_sum) + (ff_s_ges_quotient_sum))) /\ ff_s_ges_quotient_sum = ff_r_ges_quotient_sum + ff_a_ges_quotient_sum)))))) -> (exists ff_u_ges_magnitude_sum ff_v_ges_magnitude_sum. ((((exists ff_h_ges_magnitude_sum_start. ff_h_ges_magnitude_sum_start + S (0) = S ((S (0)) * ff_v_ges_magnitude_sum)) /\ exists ff_q_ges_magnitude_sum_start. ff_u_ges_magnitude_sum = ff_q_ges_magnitude_sum_start * S ((S (0)) * ff_v_ges_magnitude_sum) + (0))) /\ ((((exists ff_h_ges_magnitude_sum_terminal. ff_h_ges_magnitude_sum_terminal + S (M) = S ((S (h)) * ff_v_ges_magnitude_sum)) /\ exists ff_q_ges_magnitude_sum_terminal. ff_u_ges_magnitude_sum = ff_q_ges_magnitude_sum_terminal * S ((S (h)) * ff_v_ges_magnitude_sum) + (M))) /\ forall ff_i_ges_magnitude_sum. (exists ff_lt_ges_magnitude_sum_bound. ff_lt_ges_magnitude_sum_bound + S ff_i_ges_magnitude_sum = h) -> exists ff_a_ges_magnitude_sum ff_r_ges_magnitude_sum ff_s_ges_magnitude_sum. ((((exists ff_h_ges_magnitude_sum_summand. ff_h_ges_magnitude_sum_summand + S (ff_a_ges_magnitude_sum) = S ((S (ff_i_ges_magnitude_sum)) * mc)) /\ exists ff_q_ges_magnitude_sum_summand. mb = ff_q_ges_magnitude_sum_summand * S ((S (ff_i_ges_magnitude_sum)) * mc) + (ff_a_ges_magnitude_sum))) /\ ((((exists ff_h_ges_magnitude_sum_partial. ff_h_ges_magnitude_sum_partial + S (ff_r_ges_magnitude_sum) = S ((S (ff_i_ges_magnitude_sum)) * ff_v_ges_magnitude_sum)) /\ exists ff_q_ges_magnitude_sum_partial. ff_u_ges_magnitude_sum = ff_q_ges_magnitude_sum_partial * S ((S (ff_i_ges_magnitude_sum)) * ff_v_ges_magnitude_sum) + (ff_r_ges_magnitude_sum))) /\ ((((exists ff_h_ges_magnitude_sum_successor. ff_h_ges_magnitude_sum_successor + S (ff_s_ges_magnitude_sum) = S ((S (S ff_i_ges_magnitude_sum)) * ff_v_ges_magnitude_sum)) /\ exists ff_q_ges_magnitude_sum_successor. ff_u_ges_magnitude_sum = ff_q_ges_magnitude_sum_successor * S ((S (S ff_i_ges_magnitude_sum)) * ff_v_ges_magnitude_sum) + (ff_s_ges_magnitude_sum))) /\ ff_s_ges_magnitude_sum = ff_r_ges_magnitude_sum + ff_a_ges_magnitude_sum)))))) -> (exists ff_u_ges_sign_sum ff_v_ges_sign_sum. ((((exists ff_h_ges_sign_sum_start. ff_h_ges_sign_sum_start + S (0) = S ((S (0)) * ff_v_ges_sign_sum)) /\ exists ff_q_ges_sign_sum_start. ff_u_ges_sign_sum = ff_q_ges_sign_sum_start * S ((S (0)) * ff_v_ges_sign_sum) + (0))) /\ ((((exists ff_h_ges_sign_sum_terminal. ff_h_ges_sign_sum_terminal + S (E) = S ((S (h)) * ff_v_ges_sign_sum)) /\ exists ff_q_ges_sign_sum_terminal. ff_u_ges_sign_sum = ff_q_ges_sign_sum_terminal * S ((S (h)) * ff_v_ges_sign_sum) + (E))) /\ forall ff_i_ges_sign_sum. (exists ff_lt_ges_sign_sum_bound. ff_lt_ges_sign_sum_bound + S ff_i_ges_sign_sum = h) -> exists ff_a_ges_sign_sum ff_r_ges_sign_sum ff_s_ges_sign_sum. ((((exists ff_h_ges_sign_sum_summand. ff_h_ges_sign_sum_summand + S (ff_a_ges_sign_sum) = S ((S (ff_i_ges_sign_sum)) * sc)) /\ exists ff_q_ges_sign_sum_summand. sb = ff_q_ges_sign_sum_summand * S ((S (ff_i_ges_sign_sum)) * sc) + (ff_a_ges_sign_sum))) /\ ((((exists ff_h_ges_sign_sum_partial. ff_h_ges_sign_sum_partial + S (ff_r_ges_sign_sum) = S ((S (ff_i_ges_sign_sum)) * ff_v_ges_sign_sum)) /\ exists ff_q_ges_sign_sum_partial. ff_u_ges_sign_sum = ff_q_ges_sign_sum_partial * S ((S (ff_i_ges_sign_sum)) * ff_v_ges_sign_sum) + (ff_r_ges_sign_sum))) /\ ((((exists ff_h_ges_sign_sum_successor. ff_h_ges_sign_sum_successor + S (ff_s_ges_sign_sum) = S ((S (S ff_i_ges_sign_sum)) * ff_v_ges_sign_sum)) /\ exists ff_q_ges_sign_sum_successor. ff_u_ges_sign_sum = ff_q_ges_sign_sum_successor * S ((S (S ff_i_ges_sign_sum)) * ff_v_ges_sign_sum) + (ff_s_ges_sign_sum))) /\ ff_s_ges_sign_sum = ff_r_ges_sign_sum + ff_a_ges_sign_sum)))))) -> (exists fspm_u_ges_canceled fspm_v_ges_canceled. (0) + 2 * fspm_u_ges_canceled = (Q + E) + 2 * fspm_v_ges_canceled)Structural proof guide
Generated structural guide
Cancel the exact Gauss magnitude Sum: 0 == quotient Sum + sign Sum modulo two.
Use the direct prerequisites gauss_eisenstein_terminal_sums_mod_two, gauss_signed_half_magnitude_sum_equals_half_sum, mod_two_cancel_middle as previously established PA formulas.
The proof proceeds by intermediate claims (2), equality transport (1).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA00CR gauss_eisenstein_terminal_sums_mod_two PA00D0 gauss_signed_half_magnitude_sum_equals_half_sum PA00D2 mod_two_cancel_middleDirect 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 tb - 0007
intro tc - 0008
intro qb - 0009
intro qc - 0010
intro rb - 0011
intro rc - 0012
intro mb - 0013
intro mc - 0014
intro sb - 0015
intro sc - 0016
intro X - 0017
intro Q - 0018
intro M - 0019
intro E - 0020
intro hprime - 0021
intro hnondiv - 0022
intro hp - 0023
intro ha - 0024
intro hhalf - 0025
intro hscaled - 0026
intro hdivision - 0027
intro hsigned - 0028
intro hhalf_sum - 0029
intro hquotient_sum - 0030
intro hmagnitude_sum - 0031
intro hsign_sum - 0032
have hterminal : exists fspm_u_ges_terminal fspm_v_ges_terminal. (X) + 2 * fspm_u_ges_terminal = (Q + M + E) + 2 * fspm_v_ges_terminal - 0033
specialize gauss_eisenstein_terminal_sums_mod_two p - 0034
specialize gauss_eisenstein_terminal_sums_mod_two h - 0035
specialize gauss_eisenstein_terminal_sums_mod_two a - 0036
specialize gauss_eisenstein_terminal_sums_mod_two b - 0037
specialize gauss_eisenstein_terminal_sums_mod_two c - 0038
specialize gauss_eisenstein_terminal_sums_mod_two tb - 0039
specialize gauss_eisenstein_terminal_sums_mod_two tc - 0040
specialize gauss_eisenstein_terminal_sums_mod_two qb - 0041
specialize gauss_eisenstein_terminal_sums_mod_two qc - 0042
specialize gauss_eisenstein_terminal_sums_mod_two rb - 0043
specialize gauss_eisenstein_terminal_sums_mod_two rc - 0044
specialize gauss_eisenstein_terminal_sums_mod_two mb - 0045
specialize gauss_eisenstein_terminal_sums_mod_two mc - 0046
specialize gauss_eisenstein_terminal_sums_mod_two sb - 0047
specialize gauss_eisenstein_terminal_sums_mod_two sc - 0048
specialize gauss_eisenstein_terminal_sums_mod_two X - 0049
specialize gauss_eisenstein_terminal_sums_mod_two Q - 0050
specialize gauss_eisenstein_terminal_sums_mod_two M - 0051
specialize gauss_eisenstein_terminal_sums_mod_two E - 0052
apply gauss_eisenstein_terminal_sums_mod_two - 0053
exact hp - 0054
exact ha - 0055
exact hhalf - 0056
exact hscaled - 0057
exact hdivision - 0058
exact hsigned - 0059
exact hhalf_sum - 0060
exact hquotient_sum - 0061
exact hmagnitude_sum - 0062
exact hsign_sum - 0063
have hmagnitude_exact : X = M - 0064
specialize gauss_signed_half_magnitude_sum_equals_half_sum p - 0065
specialize gauss_signed_half_magnitude_sum_equals_half_sum h - 0066
specialize gauss_signed_half_magnitude_sum_equals_half_sum a - 0067
specialize gauss_signed_half_magnitude_sum_equals_half_sum b - 0068
specialize gauss_signed_half_magnitude_sum_equals_half_sum c - 0069
specialize gauss_signed_half_magnitude_sum_equals_half_sum mb - 0070
specialize gauss_signed_half_magnitude_sum_equals_half_sum mc - 0071
specialize gauss_signed_half_magnitude_sum_equals_half_sum sb - 0072
specialize gauss_signed_half_magnitude_sum_equals_half_sum sc - 0073
specialize gauss_signed_half_magnitude_sum_equals_half_sum X - 0074
specialize gauss_signed_half_magnitude_sum_equals_half_sum M - 0075
apply gauss_signed_half_magnitude_sum_equals_half_sum - 0076
exact hp - 0077
exact hprime - 0078
exact hnondiv - 0079
exact hhalf - 0080
exact hsigned - 0081
exact hhalf_sum - 0082
exact hmagnitude_sum - 0083
rewrite <- hmagnitude_exact at hterminal - 0084
specialize mod_two_cancel_middle X - 0085
specialize mod_two_cancel_middle Q - 0086
specialize mod_two_cancel_middle E - 0087
apply mod_two_cancel_middle - 0088
exact hterminal