Exact expanded PA statement
forall p h a b c mb mc sb sc X M. p = 2 * h + 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 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_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)))))) -> X = MStructural proof guide
Generated structural guide
Gauss signed-half data makes the magnitude Sum equal the canonical half Sum.
Use the direct prerequisites gauss_signed_half_magnitude_range, gauss_signed_half_magnitude_injective, gauss_signed_half_predecessor_recode_exists, beta_magnitude_sum_permutation_exact as previously established PA formulas.
The proof proceeds by case analysis (2), intermediate claims (3).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0078 gauss_signed_half_magnitude_range PA007C gauss_signed_half_magnitude_injective PA007E gauss_signed_half_predecessor_recode_exists PA00CY beta_magnitude_sum_permutation_exactDirect 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 mb - 0007
intro mc - 0008
intro sb - 0009
intro sc - 0010
intro X - 0011
intro M - 0012
intro hp - 0013
intro hprime - 0014
intro hnondiv - 0015
intro hhalf - 0016
intro hsigned - 0017
intro hhalf_sum - 0018
intro hmagnitude_sum - 0019
have hrange : forall gmp_index_ges_magnitude_range. (exists gsp_lt_gap_ges_magnitude_range_index_bound. gsp_lt_gap_ges_magnitude_range_index_bound + S gmp_index_ges_magnitude_range = h) -> exists gmp_magnitude_ges_magnitude_range. ((((exists ff_h_gmp_ges_magnitude_range_decoded. ff_h_gmp_ges_magnitude_range_decoded + S (gmp_magnitude_ges_magnitude_range) = S ((S (gmp_index_ges_magnitude_range)) * mc)) /\ exists ff_q_gmp_ges_magnitude_range_decoded. mb = ff_q_gmp_ges_magnitude_range_decoded * S ((S (gmp_index_ges_magnitude_range)) * mc) + (gmp_magnitude_ges_magnitude_range))) /\ ((exists gsp_lt_gap_ges_magnitude_range_positive. gsp_lt_gap_ges_magnitude_range_positive + S 0 = gmp_magnitude_ges_magnitude_range) /\ (exists gsp_le_gap_ges_magnitude_range_bounded. gsp_le_gap_ges_magnitude_range_bounded + gmp_magnitude_ges_magnitude_range = h))) - 0020
specialize gauss_signed_half_magnitude_range p - 0021
specialize gauss_signed_half_magnitude_range h - 0022
specialize gauss_signed_half_magnitude_range a - 0023
specialize gauss_signed_half_magnitude_range b - 0024
specialize gauss_signed_half_magnitude_range c - 0025
specialize gauss_signed_half_magnitude_range mb - 0026
specialize gauss_signed_half_magnitude_range mc - 0027
specialize gauss_signed_half_magnitude_range sb - 0028
specialize gauss_signed_half_magnitude_range sc - 0029
specialize gauss_signed_half_magnitude_range h - 0030
apply gauss_signed_half_magnitude_range - 0031
exact hsigned - 0032
have hinjective : forall fp_i_ges_magnitude_injective fp_j_ges_magnitude_injective fp_value_ges_magnitude_injective. (exists fp_gap_ges_magnitude_injective_i. fp_gap_ges_magnitude_injective_i + S fp_i_ges_magnitude_injective = h) -> (exists fp_gap_ges_magnitude_injective_j. fp_gap_ges_magnitude_injective_j + S fp_j_ges_magnitude_injective = h) -> (((exists ff_h_ges_magnitude_injective_left. ff_h_ges_magnitude_injective_left + S (fp_value_ges_magnitude_injective) = S ((S (fp_i_ges_magnitude_injective)) * mc)) /\ exists ff_q_ges_magnitude_injective_left. mb = ff_q_ges_magnitude_injective_left * S ((S (fp_i_ges_magnitude_injective)) * mc) + (fp_value_ges_magnitude_injective))) -> (((exists ff_h_ges_magnitude_injective_right. ff_h_ges_magnitude_injective_right + S (fp_value_ges_magnitude_injective) = S ((S (fp_j_ges_magnitude_injective)) * mc)) /\ exists ff_q_ges_magnitude_injective_right. mb = ff_q_ges_magnitude_injective_right * S ((S (fp_j_ges_magnitude_injective)) * mc) + (fp_value_ges_magnitude_injective))) -> fp_i_ges_magnitude_injective = fp_j_ges_magnitude_injective - 0033
specialize gauss_signed_half_magnitude_injective p - 0034
specialize gauss_signed_half_magnitude_injective h - 0035
specialize gauss_signed_half_magnitude_injective a - 0036
specialize gauss_signed_half_magnitude_injective b - 0037
specialize gauss_signed_half_magnitude_injective c - 0038
specialize gauss_signed_half_magnitude_injective mb - 0039
specialize gauss_signed_half_magnitude_injective mc - 0040
specialize gauss_signed_half_magnitude_injective sb - 0041
specialize gauss_signed_half_magnitude_injective sc - 0042
apply gauss_signed_half_magnitude_injective - 0043
exact hp - 0044
exact hprime - 0045
exact hnondiv - 0046
exact hhalf - 0047
exact hsigned - 0048
have hrecode_exists : exists rb rc. (forall gmp_index_ges_recode_exists gmp_predecessor_ges_recode_exists. (exists gsp_lt_gap_ges_recode_exists_index_bound. gsp_lt_gap_ges_recode_exists_index_bound + S gmp_index_ges_recode_exists = h) -> (((exists gsp_beta_height_gmp_ges_recode_exists_source. gsp_beta_height_gmp_ges_recode_exists_source + S (S gmp_predecessor_ges_recode_exists) = S ((S (gmp_index_ges_recode_exists)) * mc)) /\ exists gsp_beta_quotient_gmp_ges_recode_exists_source. mb = gsp_beta_quotient_gmp_ges_recode_exists_source * S ((S (gmp_index_ges_recode_exists)) * mc) + (S gmp_predecessor_ges_recode_exists))) -> (((exists ff_h_gmp_ges_recode_exists_target. ff_h_gmp_ges_recode_exists_target + S (gmp_predecessor_ges_recode_exists) = S ((S (gmp_index_ges_recode_exists)) * rc)) /\ exists ff_q_gmp_ges_recode_exists_target. rb = ff_q_gmp_ges_recode_exists_target * S ((S (gmp_index_ges_recode_exists)) * rc) + (gmp_predecessor_ges_recode_exists)))) - 0049
specialize gauss_signed_half_predecessor_recode_exists p - 0050
specialize gauss_signed_half_predecessor_recode_exists h - 0051
specialize gauss_signed_half_predecessor_recode_exists a - 0052
specialize gauss_signed_half_predecessor_recode_exists b - 0053
specialize gauss_signed_half_predecessor_recode_exists c - 0054
specialize gauss_signed_half_predecessor_recode_exists mb - 0055
specialize gauss_signed_half_predecessor_recode_exists mc - 0056
specialize gauss_signed_half_predecessor_recode_exists sb - 0057
specialize gauss_signed_half_predecessor_recode_exists sc - 0058
apply gauss_signed_half_predecessor_recode_exists - 0059
exact hsigned - 0060
cases hrecode_exists - 0061
cases hrecode_exists_witness - 0062
specialize beta_magnitude_sum_permutation_exact b - 0063
specialize beta_magnitude_sum_permutation_exact c - 0064
specialize beta_magnitude_sum_permutation_exact mb - 0065
specialize beta_magnitude_sum_permutation_exact mc - 0066
specialize beta_magnitude_sum_permutation_exact x - 0067
specialize beta_magnitude_sum_permutation_exact x1 - 0068
specialize beta_magnitude_sum_permutation_exact h - 0069
specialize beta_magnitude_sum_permutation_exact X - 0070
specialize beta_magnitude_sum_permutation_exact M - 0071
apply beta_magnitude_sum_permutation_exact - 0072
exact hhalf - 0073
exact hrange - 0074
exact hinjective - 0075
exact hrecode_exists_witness_witness - 0076
exact hhalf_sum - 0077
exact hmagnitude_sum