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 Q. ((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))))) /\ (exists ff_u_eisenstein_quotient_sum ff_v_eisenstein_quotient_sum. ((((exists ff_h_eisenstein_quotient_sum_start. ff_h_eisenstein_quotient_sum_start + S (0) = S ((S (0)) * ff_v_eisenstein_quotient_sum)) /\ exists ff_q_eisenstein_quotient_sum_start. ff_u_eisenstein_quotient_sum = ff_q_eisenstein_quotient_sum_start * S ((S (0)) * ff_v_eisenstein_quotient_sum) + (0))) /\ ((((exists ff_h_eisenstein_quotient_sum_terminal. ff_h_eisenstein_quotient_sum_terminal + S (Q) = S ((S (h)) * ff_v_eisenstein_quotient_sum)) /\ exists ff_q_eisenstein_quotient_sum_terminal. ff_u_eisenstein_quotient_sum = ff_q_eisenstein_quotient_sum_terminal * S ((S (h)) * ff_v_eisenstein_quotient_sum) + (Q))) /\ forall ff_i_eisenstein_quotient_sum. (exists ff_lt_eisenstein_quotient_sum_bound. ff_lt_eisenstein_quotient_sum_bound + S ff_i_eisenstein_quotient_sum = h) -> exists ff_a_eisenstein_quotient_sum ff_r_eisenstein_quotient_sum ff_s_eisenstein_quotient_sum. ((((exists ff_h_eisenstein_quotient_sum_summand. ff_h_eisenstein_quotient_sum_summand + S (ff_a_eisenstein_quotient_sum) = S ((S (ff_i_eisenstein_quotient_sum)) * qc)) /\ exists ff_q_eisenstein_quotient_sum_summand. qb = ff_q_eisenstein_quotient_sum_summand * S ((S (ff_i_eisenstein_quotient_sum)) * qc) + (ff_a_eisenstein_quotient_sum))) /\ ((((exists ff_h_eisenstein_quotient_sum_partial. ff_h_eisenstein_quotient_sum_partial + S (ff_r_eisenstein_quotient_sum) = S ((S (ff_i_eisenstein_quotient_sum)) * ff_v_eisenstein_quotient_sum)) /\ exists ff_q_eisenstein_quotient_sum_partial. ff_u_eisenstein_quotient_sum = ff_q_eisenstein_quotient_sum_partial * S ((S (ff_i_eisenstein_quotient_sum)) * ff_v_eisenstein_quotient_sum) + (ff_r_eisenstein_quotient_sum))) /\ ((((exists ff_h_eisenstein_quotient_sum_successor. ff_h_eisenstein_quotient_sum_successor + S (ff_s_eisenstein_quotient_sum) = S ((S (S ff_i_eisenstein_quotient_sum)) * ff_v_eisenstein_quotient_sum)) /\ exists ff_q_eisenstein_quotient_sum_successor. ff_u_eisenstein_quotient_sum = ff_q_eisenstein_quotient_sum_successor * S ((S (S ff_i_eisenstein_quotient_sum)) * ff_v_eisenstein_quotient_sum) + (ff_s_eisenstein_quotient_sum))) /\ ff_s_eisenstein_quotient_sum = ff_r_eisenstein_quotient_sum + ff_a_eisenstein_quotient_sum)))))))))Structural proof guide
Generated structural guide
The quotient code additionally carries its native finite floor sum.
Use the direct prerequisites prime_scaled_half_division_prefix_exists, beta_sum_exists as previously established PA formulas.
The proof proceeds by case analysis (8), intermediate claims (2).
Referenced ingredients
Proof neighborhood
Direct dependencies
Direct 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 hdivision : exists tb tc qb qc rb rc. ((forall esd_index_eisenstein_local_package_scaled esd_value_eisenstein_local_package_scaled. (exists esd_gap_eisenstein_local_package_scaled. esd_gap_eisenstein_local_package_scaled + S esd_index_eisenstein_local_package_scaled = h) -> (((exists ff_h_esd_eisenstein_local_package_scaled_decoded. ff_h_esd_eisenstein_local_package_scaled_decoded + S (esd_value_eisenstein_local_package_scaled) = S ((S (esd_index_eisenstein_local_package_scaled)) * tc)) /\ exists ff_q_esd_eisenstein_local_package_scaled_decoded. tb = ff_q_esd_eisenstein_local_package_scaled_decoded * S ((S (esd_index_eisenstein_local_package_scaled)) * tc) + (esd_value_eisenstein_local_package_scaled))) -> esd_value_eisenstein_local_package_scaled = a * (1 + esd_index_eisenstein_local_package_scaled)) /\ (forall fdp_index_eisenstein_local_package_division. (exists gsp_lt_gap_eisenstein_local_package_division_index_bound. gsp_lt_gap_eisenstein_local_package_division_index_bound + S fdp_index_eisenstein_local_package_division = h) -> exists fdp_value_eisenstein_local_package_division fdp_quotient_eisenstein_local_package_division fdp_remainder_eisenstein_local_package_division. (((exists ff_h_fdp_eisenstein_local_package_division_source. ff_h_fdp_eisenstein_local_package_division_source + S (fdp_value_eisenstein_local_package_division) = S ((S (fdp_index_eisenstein_local_package_division)) * tc)) /\ exists ff_q_fdp_eisenstein_local_package_division_source. tb = ff_q_fdp_eisenstein_local_package_division_source * S ((S (fdp_index_eisenstein_local_package_division)) * tc) + (fdp_value_eisenstein_local_package_division))) /\ ((((exists ff_h_fdp_eisenstein_local_package_division_quotient_entry. ff_h_fdp_eisenstein_local_package_division_quotient_entry + S (fdp_quotient_eisenstein_local_package_division) = S ((S (fdp_index_eisenstein_local_package_division)) * qc)) /\ exists ff_q_fdp_eisenstein_local_package_division_quotient_entry. qb = ff_q_fdp_eisenstein_local_package_division_quotient_entry * S ((S (fdp_index_eisenstein_local_package_division)) * qc) + (fdp_quotient_eisenstein_local_package_division))) /\ ((((exists ff_h_fdp_eisenstein_local_package_division_remainder_entry. ff_h_fdp_eisenstein_local_package_division_remainder_entry + S (fdp_remainder_eisenstein_local_package_division) = S ((S (fdp_index_eisenstein_local_package_division)) * rc)) /\ exists ff_q_fdp_eisenstein_local_package_division_remainder_entry. rb = ff_q_fdp_eisenstein_local_package_division_remainder_entry * S ((S (fdp_index_eisenstein_local_package_division)) * rc) + (fdp_remainder_eisenstein_local_package_division))) /\ (fdp_value_eisenstein_local_package_division = p * fdp_quotient_eisenstein_local_package_division + fdp_remainder_eisenstein_local_package_division /\ (exists gsp_lt_gap_eisenstein_local_package_division_remainder_bound. gsp_lt_gap_eisenstein_local_package_division_remainder_bound + S fdp_remainder_eisenstein_local_package_division = p)))))) - 0010
specialize prime_scaled_half_division_prefix_exists p - 0011
specialize prime_scaled_half_division_prefix_exists h - 0012
specialize prime_scaled_half_division_prefix_exists a - 0013
specialize prime_scaled_half_division_prefix_exists b - 0014
specialize prime_scaled_half_division_prefix_exists c - 0015
apply prime_scaled_half_division_prefix_exists - 0016
exact hpodd - 0017
exact hprime - 0018
exact hhalf - 0019
cases hdivision - 0020
cases hdivision_witness - 0021
cases hdivision_witness_witness - 0022
cases hdivision_witness_witness_witness - 0023
cases hdivision_witness_witness_witness_witness - 0024
cases hdivision_witness_witness_witness_witness_witness - 0025
cases hdivision_witness_witness_witness_witness_witness_witness - 0026
have hsum_exists : exists Q. (exists ff_u_eisenstein_local_sum_exists ff_v_eisenstein_local_sum_exists. ((((exists ff_h_eisenstein_local_sum_exists_start. ff_h_eisenstein_local_sum_exists_start + S (0) = S ((S (0)) * ff_v_eisenstein_local_sum_exists)) /\ exists ff_q_eisenstein_local_sum_exists_start. ff_u_eisenstein_local_sum_exists = ff_q_eisenstein_local_sum_exists_start * S ((S (0)) * ff_v_eisenstein_local_sum_exists) + (0))) /\ ((((exists ff_h_eisenstein_local_sum_exists_terminal. ff_h_eisenstein_local_sum_exists_terminal + S (Q) = S ((S (h)) * ff_v_eisenstein_local_sum_exists)) /\ exists ff_q_eisenstein_local_sum_exists_terminal. ff_u_eisenstein_local_sum_exists = ff_q_eisenstein_local_sum_exists_terminal * S ((S (h)) * ff_v_eisenstein_local_sum_exists) + (Q))) /\ forall ff_i_eisenstein_local_sum_exists. (exists ff_lt_eisenstein_local_sum_exists_bound. ff_lt_eisenstein_local_sum_exists_bound + S ff_i_eisenstein_local_sum_exists = h) -> exists ff_a_eisenstein_local_sum_exists ff_r_eisenstein_local_sum_exists ff_s_eisenstein_local_sum_exists. ((((exists ff_h_eisenstein_local_sum_exists_summand. ff_h_eisenstein_local_sum_exists_summand + S (ff_a_eisenstein_local_sum_exists) = S ((S (ff_i_eisenstein_local_sum_exists)) * x3)) /\ exists ff_q_eisenstein_local_sum_exists_summand. x2 = ff_q_eisenstein_local_sum_exists_summand * S ((S (ff_i_eisenstein_local_sum_exists)) * x3) + (ff_a_eisenstein_local_sum_exists))) /\ ((((exists ff_h_eisenstein_local_sum_exists_partial. ff_h_eisenstein_local_sum_exists_partial + S (ff_r_eisenstein_local_sum_exists) = S ((S (ff_i_eisenstein_local_sum_exists)) * ff_v_eisenstein_local_sum_exists)) /\ exists ff_q_eisenstein_local_sum_exists_partial. ff_u_eisenstein_local_sum_exists = ff_q_eisenstein_local_sum_exists_partial * S ((S (ff_i_eisenstein_local_sum_exists)) * ff_v_eisenstein_local_sum_exists) + (ff_r_eisenstein_local_sum_exists))) /\ ((((exists ff_h_eisenstein_local_sum_exists_successor. ff_h_eisenstein_local_sum_exists_successor + S (ff_s_eisenstein_local_sum_exists) = S ((S (S ff_i_eisenstein_local_sum_exists)) * ff_v_eisenstein_local_sum_exists)) /\ exists ff_q_eisenstein_local_sum_exists_successor. ff_u_eisenstein_local_sum_exists = ff_q_eisenstein_local_sum_exists_successor * S ((S (S ff_i_eisenstein_local_sum_exists)) * ff_v_eisenstein_local_sum_exists) + (ff_s_eisenstein_local_sum_exists))) /\ ff_s_eisenstein_local_sum_exists = ff_r_eisenstein_local_sum_exists + ff_a_eisenstein_local_sum_exists)))))) - 0027
specialize beta_sum_exists x2 - 0028
specialize beta_sum_exists x3 - 0029
specialize beta_sum_exists h - 0030
exact beta_sum_exists - 0031
cases hsum_exists - 0032
exists x - 0033
exists x1 - 0034
exists x2 - 0035
exists x3 - 0036
exists x4 - 0037
exists x5 - 0038
exists x6 - 0039
split - 0040
exact hdivision_witness_witness_witness_witness_witness_witness_left - 0041
split - 0042
exact hdivision_witness_witness_witness_witness_witness_witness_right - 0043
exact hsum_exists_witness