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. p = 2 · h + 1 → Prime(p) → Range(b,c,1,h) → ∃ x. ∃ y. ∃ z. ∃ n. ∃ m. ∃ k. (∀ i. ∀ j. Lt(i,h) → BetaAt(x,y,i,j) → j = a · (1 + i)) ∧ DivisionPrefix(p,x,y,z,n,m,k,h)Every 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
5 occurrences
In local proof propositions
8 occurrences
Exact expanded native-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)))))))Proof neighborhood
Direct theorem prerequisites
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 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 (5)
01Fix variables and assumptionsL1–8
02Establish hrepeat_existsL9–12
Establish this local claim before using it. It is not an additional assumption.
- L9
have hrepeat_exists : ∃ ab. ∃ ac. Repeat(ab,ac,a,h)Definitions: Repeat(ab,ac,a,h)Original native command in the exact edition - L10
specialize beta_repeat_exists a - L11
specialize beta_repeat_exists h - L12
exact beta_repeat_exists
03Separate the logical casesL13–14
04Establish hpointwise_existsL15–21
Establish this local claim before using it. It is not an additional assumption.
- L15
have hpointwise_exists : ∃ tb. ∃ tc. ∀ y. ∀ z. ∀ n. ∀ m. Lt(y,h) → BetaAt(x,x1,y,z) → BetaAt(b,c,y,n) → BetaAt(tb,tc,y,m) → m = z · nDefinitions: Lt(y,h)BetaAt(x,x1,y,z)BetaAt(b,c,y,n)BetaAt(tb,tc,y,m)Original native command in the exact edition - L16
specialize beta_pointwise_mul_prefix_exists x - L17
specialize beta_pointwise_mul_prefix_exists x1 - L18
specialize beta_pointwise_mul_prefix_exists b - L19
specialize beta_pointwise_mul_prefix_exists c - L20
specialize beta_pointwise_mul_prefix_exists h - L21
exact beta_pointwise_mul_prefix_exists
05Separate the logical casesL22–23
06Establish hscaledL24–33
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta scaled successor prefix from pointwise.
- L24
have hscaled : ∀ esd_index_eisenstein_local_exact. ∀ esd_value_eisenstein_local_exact. Lt(esd_index_eisenstein_local_exact,h) → BetaAt(x2,x3,esd_index_eisenstein_local_exact,esd_value_eisenstein_local_exact) → esd_value_eisenstein_local_exact = a · (1 + esd_index_eisenstein_local_exact)Definitions: Lt(esd_index_eisenstein_local_exact,h)BetaAt(x2,x3,esd_index_eisenstein_local_exact,esd_value_eisenstein_local_exact)Original native command in the exact edition - L25
specialize beta_scaled_successor_prefix_from_pointwise a - L26
specialize beta_scaled_successor_prefix_from_pointwise b - L27
specialize beta_scaled_successor_prefix_from_pointwise c - L28
specialize beta_scaled_successor_prefix_from_pointwise x - L29
specialize beta_scaled_successor_prefix_from_pointwise x1 - L30
specialize beta_scaled_successor_prefix_from_pointwise x2 - L31
specialize beta_scaled_successor_prefix_from_pointwise x3 - L32
specialize beta_scaled_successor_prefix_from_pointwise h - L33
apply beta_scaled_successor_prefix_from_pointwise
07Use earlier factsL34–36
08Establish hp0L37–42
09Establish hdivision_existsL43–49
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta division prefix exists.
- L43
have hdivision_exists : ∃ qb. ∃ qc. ∃ rb. ∃ rc. DivisionPrefix(p,x2,x3,qb,qc,rb,rc,h)Definitions: DivisionPrefix(p,x2,x3,qb,qc,rb,rc,h)Original native command in the exact edition - L44
specialize beta_division_prefix_exists p - L45
specialize beta_division_prefix_exists x2 - L46
specialize beta_division_prefix_exists x3 - L47
specialize beta_division_prefix_exists h - L48
apply beta_division_prefix_exists - L49
exact hp0
10Separate the logical casesL50–53
11Construct an explicit witnessL54–59
12Separate the logical casesL60–60
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L60
split
Original defined command ledger · 62 lines
- 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 : ∃ ab. ∃ ac. Repeat(ab,ac,a,h)Exact native replay line
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 : ∃ tb. ∃ tc. ∀ y. ∀ z. ∀ n. ∀ m. Lt(y,h) → BetaAt(x,x1,y,z) → BetaAt(b,c,y,n) → BetaAt(tb,tc,y,m) → m = z · nExact native replay line
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 : ∀ esd_index_eisenstein_local_exact. ∀ esd_value_eisenstein_local_exact. Lt(esd_index_eisenstein_local_exact,h) → BetaAt(x2,x3,esd_index_eisenstein_local_exact,esd_value_eisenstein_local_exact) → esd_value_eisenstein_local_exact = a · (1 + esd_index_eisenstein_local_exact)Exact native replay line
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 : ∃ qb. ∃ qc. ∃ rb. ∃ rc. DivisionPrefix(p,x2,x3,qb,qc,rb,rc,h)Exact native replay line
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