Exact expanded PA statement
forall p h a b c tb tc qb qc rb rc mb mc sb sc Q E. p = 2 * h + 1 -> (exists sdp_odd_ges_scale. a = 2 * sdp_odd_ges_scale + 1) -> ((~(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)) -> (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_sign_count_sum ff_v_ges_sign_count_sum. ((((exists ff_h_ges_sign_count_sum_start. ff_h_ges_sign_count_sum_start + S (0) = S ((S (0)) * ff_v_ges_sign_count_sum)) /\ exists ff_q_ges_sign_count_sum_start. ff_u_ges_sign_count_sum = ff_q_ges_sign_count_sum_start * S ((S (0)) * ff_v_ges_sign_count_sum) + (0))) /\ ((((exists ff_h_ges_sign_count_sum_terminal. ff_h_ges_sign_count_sum_terminal + S (E) = S ((S (h)) * ff_v_ges_sign_count_sum)) /\ exists ff_q_ges_sign_count_sum_terminal. ff_u_ges_sign_count_sum = ff_q_ges_sign_count_sum_terminal * S ((S (h)) * ff_v_ges_sign_count_sum) + (E))) /\ forall ff_i_ges_sign_count_sum. (exists ff_lt_ges_sign_count_sum_bound. ff_lt_ges_sign_count_sum_bound + S ff_i_ges_sign_count_sum = h) -> exists ff_a_ges_sign_count_sum ff_r_ges_sign_count_sum ff_s_ges_sign_count_sum. ((((exists ff_h_ges_sign_count_sum_summand. ff_h_ges_sign_count_sum_summand + S (ff_a_ges_sign_count_sum) = S ((S (ff_i_ges_sign_count_sum)) * sc)) /\ exists ff_q_ges_sign_count_sum_summand. sb = ff_q_ges_sign_count_sum_summand * S ((S (ff_i_ges_sign_count_sum)) * sc) + (ff_a_ges_sign_count_sum))) /\ ((((exists ff_h_ges_sign_count_sum_partial. ff_h_ges_sign_count_sum_partial + S (ff_r_ges_sign_count_sum) = S ((S (ff_i_ges_sign_count_sum)) * ff_v_ges_sign_count_sum)) /\ exists ff_q_ges_sign_count_sum_partial. ff_u_ges_sign_count_sum = ff_q_ges_sign_count_sum_partial * S ((S (ff_i_ges_sign_count_sum)) * ff_v_ges_sign_count_sum) + (ff_r_ges_sign_count_sum))) /\ ((((exists ff_h_ges_sign_count_sum_successor. ff_h_ges_sign_count_sum_successor + S (ff_s_ges_sign_count_sum) = S ((S (S ff_i_ges_sign_count_sum)) * ff_v_ges_sign_count_sum)) /\ exists ff_q_ges_sign_count_sum_successor. ff_u_ges_sign_count_sum = ff_q_ges_sign_count_sum_successor * S ((S (S ff_i_ges_sign_count_sum)) * ff_v_ges_sign_count_sum) + (ff_s_ges_sign_count_sum))) /\ ff_s_ges_sign_count_sum = ff_r_ges_sign_count_sum + ff_a_ges_sign_count_sum)))))) /\ (forall ff_i_ges_sign_count_bits. (exists ff_lt_ges_sign_count_bits_bound. ff_lt_ges_sign_count_bits_bound + S ff_i_ges_sign_count_bits = h) -> exists ff_bit_ges_sign_count_bits. ((((exists ff_h_ges_sign_count_bits_decoded. ff_h_ges_sign_count_bits_decoded + S (ff_bit_ges_sign_count_bits) = S ((S (ff_i_ges_sign_count_bits)) * sc)) /\ exists ff_q_ges_sign_count_bits_decoded. sb = ff_q_ges_sign_count_bits_decoded * S ((S (ff_i_ges_sign_count_bits)) * sc) + (ff_bit_ges_sign_count_bits))) /\ (ff_bit_ges_sign_count_bits = 0 \/ ff_bit_ges_sign_count_bits = 1))))) -> (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 fspm_u_ges_quotient_sign fspm_v_ges_quotient_sign. (Q) + 2 * fspm_u_ges_quotient_sign = (E) + 2 * fspm_v_ges_quotient_sign)Structural proof guide
Generated structural guide
The Gauss sign BitCount is congruent modulo two to its orientation's quotient Sum.
Use the direct prerequisites beta_sum_exists, gauss_eisenstein_terminal_cancel_magnitude_mod_two, mod_two_zero_sum_to_congruent as previously established PA formulas.
The proof proceeds by case analysis (3), intermediate claims (3).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA003H beta_sum_exists PA00D3 gauss_eisenstein_terminal_cancel_magnitude_mod_two PA00D5 mod_two_zero_sum_to_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 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 Q - 0017
intro E - 0018
intro hp - 0019
intro ha - 0020
intro hprime - 0021
intro hnondiv - 0022
intro hhalf - 0023
intro hscaled - 0024
intro hdivision - 0025
intro hsigned - 0026
intro hsign_count - 0027
intro hquotient_sum - 0028
cases hsign_count - 0029
have hhalf_sum_exists : exists X. (exists ff_u_ges_orientation_half_sum ff_v_ges_orientation_half_sum. ((((exists ff_h_ges_orientation_half_sum_start. ff_h_ges_orientation_half_sum_start + S (0) = S ((S (0)) * ff_v_ges_orientation_half_sum)) /\ exists ff_q_ges_orientation_half_sum_start. ff_u_ges_orientation_half_sum = ff_q_ges_orientation_half_sum_start * S ((S (0)) * ff_v_ges_orientation_half_sum) + (0))) /\ ((((exists ff_h_ges_orientation_half_sum_terminal. ff_h_ges_orientation_half_sum_terminal + S (X) = S ((S (h)) * ff_v_ges_orientation_half_sum)) /\ exists ff_q_ges_orientation_half_sum_terminal. ff_u_ges_orientation_half_sum = ff_q_ges_orientation_half_sum_terminal * S ((S (h)) * ff_v_ges_orientation_half_sum) + (X))) /\ forall ff_i_ges_orientation_half_sum. (exists ff_lt_ges_orientation_half_sum_bound. ff_lt_ges_orientation_half_sum_bound + S ff_i_ges_orientation_half_sum = h) -> exists ff_a_ges_orientation_half_sum ff_r_ges_orientation_half_sum ff_s_ges_orientation_half_sum. ((((exists ff_h_ges_orientation_half_sum_summand. ff_h_ges_orientation_half_sum_summand + S (ff_a_ges_orientation_half_sum) = S ((S (ff_i_ges_orientation_half_sum)) * c)) /\ exists ff_q_ges_orientation_half_sum_summand. b = ff_q_ges_orientation_half_sum_summand * S ((S (ff_i_ges_orientation_half_sum)) * c) + (ff_a_ges_orientation_half_sum))) /\ ((((exists ff_h_ges_orientation_half_sum_partial. ff_h_ges_orientation_half_sum_partial + S (ff_r_ges_orientation_half_sum) = S ((S (ff_i_ges_orientation_half_sum)) * ff_v_ges_orientation_half_sum)) /\ exists ff_q_ges_orientation_half_sum_partial. ff_u_ges_orientation_half_sum = ff_q_ges_orientation_half_sum_partial * S ((S (ff_i_ges_orientation_half_sum)) * ff_v_ges_orientation_half_sum) + (ff_r_ges_orientation_half_sum))) /\ ((((exists ff_h_ges_orientation_half_sum_successor. ff_h_ges_orientation_half_sum_successor + S (ff_s_ges_orientation_half_sum) = S ((S (S ff_i_ges_orientation_half_sum)) * ff_v_ges_orientation_half_sum)) /\ exists ff_q_ges_orientation_half_sum_successor. ff_u_ges_orientation_half_sum = ff_q_ges_orientation_half_sum_successor * S ((S (S ff_i_ges_orientation_half_sum)) * ff_v_ges_orientation_half_sum) + (ff_s_ges_orientation_half_sum))) /\ ff_s_ges_orientation_half_sum = ff_r_ges_orientation_half_sum + ff_a_ges_orientation_half_sum)))))) - 0030
specialize beta_sum_exists b - 0031
specialize beta_sum_exists c - 0032
specialize beta_sum_exists h - 0033
exact beta_sum_exists - 0034
cases hhalf_sum_exists - 0035
have hmagnitude_sum_exists : exists M. (exists ff_u_ges_orientation_magnitude_sum ff_v_ges_orientation_magnitude_sum. ((((exists ff_h_ges_orientation_magnitude_sum_start. ff_h_ges_orientation_magnitude_sum_start + S (0) = S ((S (0)) * ff_v_ges_orientation_magnitude_sum)) /\ exists ff_q_ges_orientation_magnitude_sum_start. ff_u_ges_orientation_magnitude_sum = ff_q_ges_orientation_magnitude_sum_start * S ((S (0)) * ff_v_ges_orientation_magnitude_sum) + (0))) /\ ((((exists ff_h_ges_orientation_magnitude_sum_terminal. ff_h_ges_orientation_magnitude_sum_terminal + S (M) = S ((S (h)) * ff_v_ges_orientation_magnitude_sum)) /\ exists ff_q_ges_orientation_magnitude_sum_terminal. ff_u_ges_orientation_magnitude_sum = ff_q_ges_orientation_magnitude_sum_terminal * S ((S (h)) * ff_v_ges_orientation_magnitude_sum) + (M))) /\ forall ff_i_ges_orientation_magnitude_sum. (exists ff_lt_ges_orientation_magnitude_sum_bound. ff_lt_ges_orientation_magnitude_sum_bound + S ff_i_ges_orientation_magnitude_sum = h) -> exists ff_a_ges_orientation_magnitude_sum ff_r_ges_orientation_magnitude_sum ff_s_ges_orientation_magnitude_sum. ((((exists ff_h_ges_orientation_magnitude_sum_summand. ff_h_ges_orientation_magnitude_sum_summand + S (ff_a_ges_orientation_magnitude_sum) = S ((S (ff_i_ges_orientation_magnitude_sum)) * mc)) /\ exists ff_q_ges_orientation_magnitude_sum_summand. mb = ff_q_ges_orientation_magnitude_sum_summand * S ((S (ff_i_ges_orientation_magnitude_sum)) * mc) + (ff_a_ges_orientation_magnitude_sum))) /\ ((((exists ff_h_ges_orientation_magnitude_sum_partial. ff_h_ges_orientation_magnitude_sum_partial + S (ff_r_ges_orientation_magnitude_sum) = S ((S (ff_i_ges_orientation_magnitude_sum)) * ff_v_ges_orientation_magnitude_sum)) /\ exists ff_q_ges_orientation_magnitude_sum_partial. ff_u_ges_orientation_magnitude_sum = ff_q_ges_orientation_magnitude_sum_partial * S ((S (ff_i_ges_orientation_magnitude_sum)) * ff_v_ges_orientation_magnitude_sum) + (ff_r_ges_orientation_magnitude_sum))) /\ ((((exists ff_h_ges_orientation_magnitude_sum_successor. ff_h_ges_orientation_magnitude_sum_successor + S (ff_s_ges_orientation_magnitude_sum) = S ((S (S ff_i_ges_orientation_magnitude_sum)) * ff_v_ges_orientation_magnitude_sum)) /\ exists ff_q_ges_orientation_magnitude_sum_successor. ff_u_ges_orientation_magnitude_sum = ff_q_ges_orientation_magnitude_sum_successor * S ((S (S ff_i_ges_orientation_magnitude_sum)) * ff_v_ges_orientation_magnitude_sum) + (ff_s_ges_orientation_magnitude_sum))) /\ ff_s_ges_orientation_magnitude_sum = ff_r_ges_orientation_magnitude_sum + ff_a_ges_orientation_magnitude_sum)))))) - 0036
specialize beta_sum_exists mb - 0037
specialize beta_sum_exists mc - 0038
specialize beta_sum_exists h - 0039
exact beta_sum_exists - 0040
cases hmagnitude_sum_exists - 0041
have hcanceled : exists fspm_u_ges_orientation_canceled fspm_v_ges_orientation_canceled. (0) + 2 * fspm_u_ges_orientation_canceled = (Q + E) + 2 * fspm_v_ges_orientation_canceled - 0042
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two p - 0043
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two h - 0044
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two a - 0045
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two b - 0046
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two c - 0047
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two tb - 0048
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two tc - 0049
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two qb - 0050
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two qc - 0051
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two rb - 0052
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two rc - 0053
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two mb - 0054
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two mc - 0055
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two sb - 0056
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two sc - 0057
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two x - 0058
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two Q - 0059
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two x1 - 0060
specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two E - 0061
apply gauss_eisenstein_terminal_cancel_magnitude_mod_two - 0062
exact hprime - 0063
exact hnondiv - 0064
exact hp - 0065
exact ha - 0066
exact hhalf - 0067
exact hscaled - 0068
exact hdivision - 0069
exact hsigned - 0070
exact hhalf_sum_exists_witness - 0071
exact hquotient_sum - 0072
exact hmagnitude_sum_exists_witness - 0073
exact hsign_count_left - 0074
specialize mod_two_zero_sum_to_congruent Q - 0075
specialize mod_two_zero_sum_to_congruent E - 0076
apply mod_two_zero_sum_to_congruent - 0077
exact hcanceled