Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.
Statement with defined notation
∀ p. ∀ h. ∀ a. ∀ b. ∀ c. ∀ mb. ∀ mc. ∀ sb. ∀ sc. ∀ X. ∀ M. p = 2 · h + 1 → Prime(p) → ¬Dvd(p,a) → Range(b,c,1,h) → (∀ x. Lt(x,h) → ∃ y. ∃ z. ∃ n. BetaAt(b,c,x,y) ∧ (BetaAt(mb,mc,x,z) ∧ (BetaAt(sb,sc,x,n) ∧ (Lt(0,z) ∧ (Le(z,h) ∧ ((n = 0 ∨ n = 1) ∧ (n = 0 ∧ ModEq(p,a · y,z) ∨ n = 1 ∧ ModEq(p,a · y,2 · h · z)))))))) → Sum(b,c,h,X) → Sum(mb,mc,h,M) → X = MEvery purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.
Definitions used by this theorem
In the theorem statement
13 occurrences
In local proof propositions
8 occurrences
Exact expanded native-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 = MProof neighborhood
Direct theorem prerequisites
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 theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed command.
Read the argument
Proof checkpoints
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
Named ingredients (4)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–18
03Establish hrangeL19–28
Establish this local claim before using it. It is not an additional assumption.
- L19
have hrange : ∀ gmp_index_ges_magnitude_range. Lt(gmp_index_ges_magnitude_range,h) → ∃ x. BetaAt(mb,mc,gmp_index_ges_magnitude_range,x) ∧ (Lt(0,x) ∧ Le(x,h))Definitions: Lt(gmp_index_ges_magnitude_range,h)BetaAt(mb,mc,gmp_index_ges_magnitude_range,x)Lt(0,x)Le(x,h)Original native command in the exact edition - L20
specialize gauss_signed_half_magnitude_range p - L21
specialize gauss_signed_half_magnitude_range h - L22
specialize gauss_signed_half_magnitude_range a - L23
specialize gauss_signed_half_magnitude_range b - L24
specialize gauss_signed_half_magnitude_range c - L25
specialize gauss_signed_half_magnitude_range mb - L26
specialize gauss_signed_half_magnitude_range mc - L27
specialize gauss_signed_half_magnitude_range sb - L28
specialize gauss_signed_half_magnitude_range sc
04Use earlier factsL29–31
05Establish hinjectiveL32–41
Establish this local claim before using it. It is not an additional assumption.
- L32
have hinjective : InjectivePrefix(mb,mc,h)Definitions: InjectivePrefix(mb,mc,h)Original native command in the exact edition - L33
specialize gauss_signed_half_magnitude_injective p - L34
specialize gauss_signed_half_magnitude_injective h - L35
specialize gauss_signed_half_magnitude_injective a - L36
specialize gauss_signed_half_magnitude_injective b - L37
specialize gauss_signed_half_magnitude_injective c - L38
specialize gauss_signed_half_magnitude_injective mb - L39
specialize gauss_signed_half_magnitude_injective mc - L40
specialize gauss_signed_half_magnitude_injective sb - L41
specialize gauss_signed_half_magnitude_injective sc
06Use earlier factsL42–47
07Establish hrecode_existsL48–57
Establish this local claim before using it. It is not an additional assumption.
- L48
have hrecode_exists : ∃ rb. ∃ rc. ∀ x. ∀ y. Lt(x,h) → BetaAt(mb,mc,x,S y) → BetaAt(rb,rc,x,y)Definitions: Lt(x,h)BetaAt(mb,mc,x,S y)BetaAt(rb,rc,x,y)Original native command in the exact edition - L49
specialize gauss_signed_half_predecessor_recode_exists p - L50
specialize gauss_signed_half_predecessor_recode_exists h - L51
specialize gauss_signed_half_predecessor_recode_exists a - L52
specialize gauss_signed_half_predecessor_recode_exists b - L53
specialize gauss_signed_half_predecessor_recode_exists c - L54
specialize gauss_signed_half_predecessor_recode_exists mb - L55
specialize gauss_signed_half_predecessor_recode_exists mc - L56
specialize gauss_signed_half_predecessor_recode_exists sb - L57
specialize gauss_signed_half_predecessor_recode_exists sc
08Use earlier factsL58–59
09Separate the logical casesL60–61
10Use earlier factsL62–71
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L62
specialize beta_magnitude_sum_permutation_exact b - L63
specialize beta_magnitude_sum_permutation_exact c - L64
specialize beta_magnitude_sum_permutation_exact mb - L65
specialize beta_magnitude_sum_permutation_exact mc - L66
specialize beta_magnitude_sum_permutation_exact x - L67
specialize beta_magnitude_sum_permutation_exact x1 - L68
specialize beta_magnitude_sum_permutation_exact h - L69
specialize beta_magnitude_sum_permutation_exact X - L70
specialize beta_magnitude_sum_permutation_exact M - L71
apply beta_magnitude_sum_permutation_exact
Original defined command ledger · 77 lines
- 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 : ∀ gmp_index_ges_magnitude_range. Lt(gmp_index_ges_magnitude_range,h) → ∃ x. BetaAt(mb,mc,gmp_index_ges_magnitude_range,x) ∧ (Lt(0,x) ∧ Le(x,h))Exact native replay line
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 : InjectivePrefix(mb,mc,h)Exact native replay line
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 : ∃ rb. ∃ rc. ∀ x. ∀ y. Lt(x,h) → BetaAt(mb,mc,x,S y) → BetaAt(rb,rc,x,y)Exact native replay line
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