Exact expanded PA statement
forall p h a b c. p = 2 * h + 1 -> ((~(p = 1) /\ forall frp_prime_left_eisenstein_division_prime frp_prime_right_eisenstein_division_prime. p = frp_prime_left_eisenstein_division_prime * frp_prime_right_eisenstein_division_prime -> frp_prime_left_eisenstein_division_prime = 1 \/ frp_prime_right_eisenstein_division_prime = 1)) -> (forall gsp_range_index_eisenstein_scaled_half_range. (exists gsp_lt_gap_eisenstein_scaled_half_range_range_bound. gsp_lt_gap_eisenstein_scaled_half_range_range_bound + S gsp_range_index_eisenstein_scaled_half_range = h) -> (((exists gsp_beta_height_eisenstein_scaled_half_range_range_entry. gsp_beta_height_eisenstein_scaled_half_range_range_entry + S (1 + gsp_range_index_eisenstein_scaled_half_range) = S ((S (gsp_range_index_eisenstein_scaled_half_range)) * c)) /\ exists gsp_beta_quotient_eisenstein_scaled_half_range_range_entry. b = gsp_beta_quotient_eisenstein_scaled_half_range_range_entry * S ((S (gsp_range_index_eisenstein_scaled_half_range)) * c) + (1 + gsp_range_index_eisenstein_scaled_half_range)))) -> (exists tb tc qb qc rb rc. ((forall esd_index_eisenstein_scaled_exact esd_value_eisenstein_scaled_exact. (exists esd_gap_eisenstein_scaled_exact. esd_gap_eisenstein_scaled_exact + S esd_index_eisenstein_scaled_exact = h) -> (((exists ff_h_esd_eisenstein_scaled_exact_decoded. ff_h_esd_eisenstein_scaled_exact_decoded + S (esd_value_eisenstein_scaled_exact) = S ((S (esd_index_eisenstein_scaled_exact)) * tc)) /\ exists ff_q_esd_eisenstein_scaled_exact_decoded. tb = ff_q_esd_eisenstein_scaled_exact_decoded * S ((S (esd_index_eisenstein_scaled_exact)) * tc) + (esd_value_eisenstein_scaled_exact))) -> esd_value_eisenstein_scaled_exact = a * (1 + esd_index_eisenstein_scaled_exact)) /\ (forall fdp_index_eisenstein_division_prefix. (exists gsp_lt_gap_eisenstein_division_prefix_index_bound. gsp_lt_gap_eisenstein_division_prefix_index_bound + S fdp_index_eisenstein_division_prefix = h) -> exists fdp_value_eisenstein_division_prefix fdp_quotient_eisenstein_division_prefix fdp_remainder_eisenstein_division_prefix. (((exists ff_h_fdp_eisenstein_division_prefix_source. ff_h_fdp_eisenstein_division_prefix_source + S (fdp_value_eisenstein_division_prefix) = S ((S (fdp_index_eisenstein_division_prefix)) * tc)) /\ exists ff_q_fdp_eisenstein_division_prefix_source. tb = ff_q_fdp_eisenstein_division_prefix_source * S ((S (fdp_index_eisenstein_division_prefix)) * tc) + (fdp_value_eisenstein_division_prefix))) /\ ((((exists ff_h_fdp_eisenstein_division_prefix_quotient_entry. ff_h_fdp_eisenstein_division_prefix_quotient_entry + S (fdp_quotient_eisenstein_division_prefix) = S ((S (fdp_index_eisenstein_division_prefix)) * qc)) /\ exists ff_q_fdp_eisenstein_division_prefix_quotient_entry. qb = ff_q_fdp_eisenstein_division_prefix_quotient_entry * S ((S (fdp_index_eisenstein_division_prefix)) * qc) + (fdp_quotient_eisenstein_division_prefix))) /\ ((((exists ff_h_fdp_eisenstein_division_prefix_remainder_entry. ff_h_fdp_eisenstein_division_prefix_remainder_entry + S (fdp_remainder_eisenstein_division_prefix) = S ((S (fdp_index_eisenstein_division_prefix)) * rc)) /\ exists ff_q_fdp_eisenstein_division_prefix_remainder_entry. rb = ff_q_fdp_eisenstein_division_prefix_remainder_entry * S ((S (fdp_index_eisenstein_division_prefix)) * rc) + (fdp_remainder_eisenstein_division_prefix))) /\ (fdp_value_eisenstein_division_prefix = p * fdp_quotient_eisenstein_division_prefix + fdp_remainder_eisenstein_division_prefix /\ (exists gsp_lt_gap_eisenstein_division_prefix_remainder_bound. gsp_lt_gap_eisenstein_division_prefix_remainder_bound + S fdp_remainder_eisenstein_division_prefix = p)))))))Structural proof guide
Generated structural guide
An odd-prime half range has exact scaled quotient/remainder codes.
Use the direct prerequisites beta_repeat_exists, beta_pointwise_mul_prefix_exists, beta_scaled_successor_prefix_from_pointwise, prime_nonzero, beta_division_prefix_exists as previously established PA formulas.
The proof proceeds by case analysis (8), intermediate claims (5).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0045 beta_repeat_exists PA007L beta_pointwise_mul_prefix_exists PA00BW beta_scaled_successor_prefix_from_pointwise PA0031 prime_nonzero PA00BY beta_division_prefix_existsDirect 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 hpodd - 0007
intro hprime - 0008
intro hhalf - 0009
have hrepeat_exists : exists ab ac. (forall ff_i_eisenstein_repeat_exists. (exists ff_lt_eisenstein_repeat_exists_bound. ff_lt_eisenstein_repeat_exists_bound + S ff_i_eisenstein_repeat_exists = h) -> (((exists ff_h_eisenstein_repeat_exists_decoded. ff_h_eisenstein_repeat_exists_decoded + S (a) = S ((S (ff_i_eisenstein_repeat_exists)) * ac)) /\ exists ff_q_eisenstein_repeat_exists_decoded. ab = ff_q_eisenstein_repeat_exists_decoded * S ((S (ff_i_eisenstein_repeat_exists)) * ac) + (a)))) - 0010
specialize beta_repeat_exists a - 0011
specialize beta_repeat_exists h - 0012
exact beta_repeat_exists - 0013
cases hrepeat_exists - 0014
cases hrepeat_exists_witness - 0015
have hpointwise_exists : exists tb tc. (forall fpmp_index_eisenstein_pointwise_exists fpmp_left_eisenstein_pointwise_exists fpmp_right_eisenstein_pointwise_exists fpmp_target_eisenstein_pointwise_exists. (exists fpmp_gap_eisenstein_pointwise_exists. fpmp_gap_eisenstein_pointwise_exists + S fpmp_index_eisenstein_pointwise_exists = h) -> (((exists ff_h_fpmp_eisenstein_pointwise_exists_left. ff_h_fpmp_eisenstein_pointwise_exists_left + S (fpmp_left_eisenstein_pointwise_exists) = S ((S (fpmp_index_eisenstein_pointwise_exists)) * x1)) /\ exists ff_q_fpmp_eisenstein_pointwise_exists_left. x = ff_q_fpmp_eisenstein_pointwise_exists_left * S ((S (fpmp_index_eisenstein_pointwise_exists)) * x1) + (fpmp_left_eisenstein_pointwise_exists))) -> (((exists ff_h_fpmp_eisenstein_pointwise_exists_right. ff_h_fpmp_eisenstein_pointwise_exists_right + S (fpmp_right_eisenstein_pointwise_exists) = S ((S (fpmp_index_eisenstein_pointwise_exists)) * c)) /\ exists ff_q_fpmp_eisenstein_pointwise_exists_right. b = ff_q_fpmp_eisenstein_pointwise_exists_right * S ((S (fpmp_index_eisenstein_pointwise_exists)) * c) + (fpmp_right_eisenstein_pointwise_exists))) -> (((exists ff_h_fpmp_eisenstein_pointwise_exists_target. ff_h_fpmp_eisenstein_pointwise_exists_target + S (fpmp_target_eisenstein_pointwise_exists) = S ((S (fpmp_index_eisenstein_pointwise_exists)) * tc)) /\ exists ff_q_fpmp_eisenstein_pointwise_exists_target. tb = ff_q_fpmp_eisenstein_pointwise_exists_target * S ((S (fpmp_index_eisenstein_pointwise_exists)) * tc) + (fpmp_target_eisenstein_pointwise_exists))) -> fpmp_target_eisenstein_pointwise_exists = fpmp_left_eisenstein_pointwise_exists * fpmp_right_eisenstein_pointwise_exists) - 0016
specialize beta_pointwise_mul_prefix_exists x - 0017
specialize beta_pointwise_mul_prefix_exists x1 - 0018
specialize beta_pointwise_mul_prefix_exists b - 0019
specialize beta_pointwise_mul_prefix_exists c - 0020
specialize beta_pointwise_mul_prefix_exists h - 0021
exact beta_pointwise_mul_prefix_exists - 0022
cases hpointwise_exists - 0023
cases hpointwise_exists_witness - 0024
have hscaled : forall esd_index_eisenstein_local_exact esd_value_eisenstein_local_exact. (exists esd_gap_eisenstein_local_exact. esd_gap_eisenstein_local_exact + S esd_index_eisenstein_local_exact = h) -> (((exists ff_h_esd_eisenstein_local_exact_decoded. ff_h_esd_eisenstein_local_exact_decoded + S (esd_value_eisenstein_local_exact) = S ((S (esd_index_eisenstein_local_exact)) * x3)) /\ exists ff_q_esd_eisenstein_local_exact_decoded. x2 = ff_q_esd_eisenstein_local_exact_decoded * S ((S (esd_index_eisenstein_local_exact)) * x3) + (esd_value_eisenstein_local_exact))) -> esd_value_eisenstein_local_exact = a * (1 + esd_index_eisenstein_local_exact) - 0025
specialize beta_scaled_successor_prefix_from_pointwise a - 0026
specialize beta_scaled_successor_prefix_from_pointwise b - 0027
specialize beta_scaled_successor_prefix_from_pointwise c - 0028
specialize beta_scaled_successor_prefix_from_pointwise x - 0029
specialize beta_scaled_successor_prefix_from_pointwise x1 - 0030
specialize beta_scaled_successor_prefix_from_pointwise x2 - 0031
specialize beta_scaled_successor_prefix_from_pointwise x3 - 0032
specialize beta_scaled_successor_prefix_from_pointwise h - 0033
apply beta_scaled_successor_prefix_from_pointwise - 0034
exact hhalf - 0035
exact hrepeat_exists_witness_witness - 0036
exact hpointwise_exists_witness_witness - 0037
have hp0 : ~(p = 0) - 0038
intro hpzero - 0039
specialize prime_nonzero p - 0040
apply prime_nonzero - 0041
exact hprime - 0042
exact hpzero - 0043
have hdivision_exists : exists qb qc rb rc. (forall fdp_index_eisenstein_division_exists. (exists gsp_lt_gap_eisenstein_division_exists_index_bound. gsp_lt_gap_eisenstein_division_exists_index_bound + S fdp_index_eisenstein_division_exists = h) -> exists fdp_value_eisenstein_division_exists fdp_quotient_eisenstein_division_exists fdp_remainder_eisenstein_division_exists. (((exists ff_h_fdp_eisenstein_division_exists_source. ff_h_fdp_eisenstein_division_exists_source + S (fdp_value_eisenstein_division_exists) = S ((S (fdp_index_eisenstein_division_exists)) * x3)) /\ exists ff_q_fdp_eisenstein_division_exists_source. x2 = ff_q_fdp_eisenstein_division_exists_source * S ((S (fdp_index_eisenstein_division_exists)) * x3) + (fdp_value_eisenstein_division_exists))) /\ ((((exists ff_h_fdp_eisenstein_division_exists_quotient_entry. ff_h_fdp_eisenstein_division_exists_quotient_entry + S (fdp_quotient_eisenstein_division_exists) = S ((S (fdp_index_eisenstein_division_exists)) * qc)) /\ exists ff_q_fdp_eisenstein_division_exists_quotient_entry. qb = ff_q_fdp_eisenstein_division_exists_quotient_entry * S ((S (fdp_index_eisenstein_division_exists)) * qc) + (fdp_quotient_eisenstein_division_exists))) /\ ((((exists ff_h_fdp_eisenstein_division_exists_remainder_entry. ff_h_fdp_eisenstein_division_exists_remainder_entry + S (fdp_remainder_eisenstein_division_exists) = S ((S (fdp_index_eisenstein_division_exists)) * rc)) /\ exists ff_q_fdp_eisenstein_division_exists_remainder_entry. rb = ff_q_fdp_eisenstein_division_exists_remainder_entry * S ((S (fdp_index_eisenstein_division_exists)) * rc) + (fdp_remainder_eisenstein_division_exists))) /\ (fdp_value_eisenstein_division_exists = p * fdp_quotient_eisenstein_division_exists + fdp_remainder_eisenstein_division_exists /\ (exists gsp_lt_gap_eisenstein_division_exists_remainder_bound. gsp_lt_gap_eisenstein_division_exists_remainder_bound + S fdp_remainder_eisenstein_division_exists = p))))) - 0044
specialize beta_division_prefix_exists p - 0045
specialize beta_division_prefix_exists x2 - 0046
specialize beta_division_prefix_exists x3 - 0047
specialize beta_division_prefix_exists h - 0048
apply beta_division_prefix_exists - 0049
exact hp0 - 0050
cases hdivision_exists - 0051
cases hdivision_exists_witness - 0052
cases hdivision_exists_witness_witness - 0053
cases hdivision_exists_witness_witness_witness - 0054
exists x2 - 0055
exists x3 - 0056
exists x4 - 0057
exists x5 - 0058
exists x6 - 0059
exists x7 - 0060
split - 0061
exact hscaled - 0062
exact hdivision_exists_witness_witness_witness_witness