Exact expanded PA statement
forall p h a b c. p = 2 * h + 1 -> ((~(p = 1) /\ forall gsp_prime_left_half_range_prime gsp_prime_right_half_range_prime. p = gsp_prime_left_half_range_prime * gsp_prime_right_half_range_prime -> gsp_prime_left_half_range_prime = 1 \/ gsp_prime_right_half_range_prime = 1)) -> (~(exists gsp_divisor_factor_half_range_multiplier. a = p * gsp_divisor_factor_half_range_multiplier)) -> (forall gsp_range_index_half_range_source. (exists gsp_lt_gap_half_range_source_range_bound. gsp_lt_gap_half_range_source_range_bound + S gsp_range_index_half_range_source = h) -> (((exists gsp_beta_height_half_range_source_range_entry. gsp_beta_height_half_range_source_range_entry + S (1 + gsp_range_index_half_range_source) = S ((S (gsp_range_index_half_range_source)) * c)) /\ exists gsp_beta_quotient_half_range_source_range_entry. b = gsp_beta_quotient_half_range_source_range_entry * S ((S (gsp_range_index_half_range_source)) * c) + (1 + gsp_range_index_half_range_source)))) -> (forall gsp_choice_index_half_range_choices. (exists gsp_lt_gap_half_range_choices_choice_bound. gsp_lt_gap_half_range_choices_choice_bound + S gsp_choice_index_half_range_choices = h) -> (exists gsp_value_half_range_choices_choice gsp_magnitude_half_range_choices_choice gsp_sign_half_range_choices_choice. (((exists ff_h_gsp_half_range_choices_choice_source. ff_h_gsp_half_range_choices_choice_source + S (gsp_value_half_range_choices_choice) = S ((S (gsp_choice_index_half_range_choices)) * c)) /\ exists ff_q_gsp_half_range_choices_choice_source. b = ff_q_gsp_half_range_choices_choice_source * S ((S (gsp_choice_index_half_range_choices)) * c) + (gsp_value_half_range_choices_choice))) /\ ((exists gsp_lt_gap_half_range_choices_choice_positive. gsp_lt_gap_half_range_choices_choice_positive + S 0 = gsp_magnitude_half_range_choices_choice) /\ ((exists gsp_le_gap_half_range_choices_choice_bounded. gsp_le_gap_half_range_choices_choice_bounded + gsp_magnitude_half_range_choices_choice = h) /\ ((gsp_sign_half_range_choices_choice = 0 \/ gsp_sign_half_range_choices_choice = 1) /\ (((gsp_sign_half_range_choices_choice = 0 /\ (exists gsp_mod_left_half_range_choices_choice_lower gsp_mod_right_half_range_choices_choice_lower. (a * gsp_value_half_range_choices_choice) + p * gsp_mod_left_half_range_choices_choice_lower = (gsp_magnitude_half_range_choices_choice) + p * gsp_mod_right_half_range_choices_choice_lower)) \/ (gsp_sign_half_range_choices_choice = 1 /\ (exists gsp_mod_left_half_range_choices_choice_reflected gsp_mod_right_half_range_choices_choice_reflected. (a * gsp_value_half_range_choices_choice) + p * gsp_mod_left_half_range_choices_choice_reflected = ((2 * h) * gsp_magnitude_half_range_choices_choice) + p * gsp_mod_right_half_range_choices_choice_reflected)))))))))Structural proof guide
Generated structural guide
A prime odd half-range and a nondivisible multiplier provide a signed choice at every decoded entry.
Use the direct prerequisites prime_nonzero, division_remainder_exists, beta_half_range_entry_bounds, euclid_prime_dvd_product, divisor_le_nonzero, lt_not_le, mul_comm, gauss_pointwise_signed_half_choice as previously established PA formulas.
The proof proceeds by case analysis (5), intermediate claims (9), equality transport (1).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0031 prime_nonzero PA001D division_remainder_exists PA0034 beta_half_range_entry_bounds PA0038 euclid_prime_dvd_product PA0039 divisor_le_nonzero PA003A lt_not_le PA000H mul_comm PA0071 gauss_pointwise_signed_half_choiceDirect 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 hp - 0007
intro hprime - 0008
intro hnotdiv - 0009
intro hrange - 0010
intro i - 0011
intro hi - 0012
have hsource : ((exists gsp_beta_height_half_range_source_entry_i. gsp_beta_height_half_range_source_entry_i + S (1 + i) = S ((S (i)) * c)) /\ exists gsp_beta_quotient_half_range_source_entry_i. b = gsp_beta_quotient_half_range_source_entry_i * S ((S (i)) * c) + (1 + i)) - 0013
specialize hrange i - 0014
apply hrange - 0015
exact hi - 0016
have hbounds : (~(1 + i = 0) /\ (exists gsp_half_value_bound_gap. gsp_half_value_bound_gap + S (1 + i) = p)) - 0017
specialize beta_half_range_entry_bounds p - 0018
specialize beta_half_range_entry_bounds h - 0019
specialize beta_half_range_entry_bounds b - 0020
specialize beta_half_range_entry_bounds c - 0021
specialize beta_half_range_entry_bounds i - 0022
specialize beta_half_range_entry_bounds (1 + i) - 0023
apply beta_half_range_entry_bounds - 0024
exact hp - 0025
exact hrange - 0026
exact hi - 0027
exact hsource - 0028
cases hbounds - 0029
have hp0 : ~(p = 0) - 0030
intro hpzero - 0031
specialize prime_nonzero p - 0032
apply prime_nonzero - 0033
exact hprime - 0034
exact hpzero - 0035
have hdiv : exists q r. a * (1 + i) = p * q + r /\ (exists gsp_half_value_bound_gap. gsp_half_value_bound_gap + S (r) = p) - 0036
specialize division_remainder_exists p - 0037
specialize division_remainder_exists (a * (1 + i)) - 0038
apply division_remainder_exists - 0039
exact hp0 - 0040
cases hdiv - 0041
cases hdiv_witness - 0042
cases hdiv_witness_witness - 0043
have hrem0 : ~(x1 = 0) - 0044
intro hremzero - 0045
have hmultiple : exists k. a * (1 + i) = p * k - 0046
exists x - 0047
trans p * x + x1 - 0048
exact hdiv_witness_witness_left - 0049
rewrite hremzero - 0050
apply PA3 - 0051
have hfactor : (exists u. a = p * u) \/ exists v. 1 + i = p * v - 0052
specialize euclid_prime_dvd_product p - 0053
specialize euclid_prime_dvd_product a - 0054
specialize euclid_prime_dvd_product (1 + i) - 0055
apply euclid_prime_dvd_product - 0056
exact hprime - 0057
exact hmultiple - 0058
cases hfactor - 0059
apply hnotdiv - 0060
exact hfactor_left - 0061
have hple : exists k. k + p = 1 + i - 0062
specialize divisor_le_nonzero p - 0063
specialize divisor_le_nonzero (1 + i) - 0064
apply divisor_le_nonzero - 0065
exact hbounds_left - 0066
exact hfactor_right - 0067
specialize lt_not_le (1 + i) - 0068
specialize lt_not_le p - 0069
apply lt_not_le - 0070
exact hbounds_right - 0071
exact hple - 0072
have hdecomp : a * (1 + i) = x * p + x1 - 0073
trans p * x + x1 - 0074
exact hdiv_witness_witness_left - 0075
congr - 0076
apply mul_comm - 0077
refl - 0078
specialize gauss_pointwise_signed_half_choice p - 0079
specialize gauss_pointwise_signed_half_choice h - 0080
specialize gauss_pointwise_signed_half_choice a - 0081
specialize gauss_pointwise_signed_half_choice b - 0082
specialize gauss_pointwise_signed_half_choice c - 0083
specialize gauss_pointwise_signed_half_choice i - 0084
specialize gauss_pointwise_signed_half_choice (1 + i) - 0085
specialize gauss_pointwise_signed_half_choice x - 0086
specialize gauss_pointwise_signed_half_choice x1 - 0087
apply gauss_pointwise_signed_half_choice - 0088
exact hp - 0089
exact hsource - 0090
exact hdecomp - 0091
exact hdiv_witness_witness_right - 0092
exact hrem0