BT00W2 · Bertrand theorem

no_bertrand_central_prime_divisor_ranges

Alpha v34 checked-use theorem · independently kernel and Lean verified; not Stable

Every central prime divisor lies in one of the three live ranges.

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

∀ n. ∀ s. ∀ q. ∀ c. ∀ p. (∀ x. Lt(n,x)Le(x,n + n) → ¬Prime(x)) → Prime(p)CentralBinom(n,c)Dvd(p,c)Le(p,s) ∨ (Lt(s,p)Le(p,q)Lt(q,p)Le(p,n))

Every purple notation token opens its conservative definition. Expanding the displayed statement recovers the exact first-order Peano-arithmetic formula checked by the unchanged kernel.

Definitions used by this theorem

In the theorem statement

11 occurrences

In local proof propositions

7 occurrences

Exact expanded native-PA statement
forall n s q c p. (forall bpr_prime_candidate_bnbcpdr_exclusion. ((exists bpr_gap_bnbcpdr_exclusion_lower. bpr_gap_bnbcpdr_exclusion_lower + S (n) = bpr_prime_candidate_bnbcpdr_exclusion) /\ (exists bpr_le_gap_bnbcpdr_exclusion_upper. bpr_le_gap_bnbcpdr_exclusion_upper + (bpr_prime_candidate_bnbcpdr_exclusion) = (n + n))) -> ~((~(bpr_prime_candidate_bnbcpdr_exclusion = 1) /\ forall bpr_left_bnbcpdr_exclusion_prime bpr_right_bnbcpdr_exclusion_prime. bpr_prime_candidate_bnbcpdr_exclusion = bpr_left_bnbcpdr_exclusion_prime * bpr_right_bnbcpdr_exclusion_prime -> bpr_left_bnbcpdr_exclusion_prime = 1 \/ bpr_right_bnbcpdr_exclusion_prime = 1))) -> ((~(p = 1) /\ forall bpr_left_bnbcpdr_prime bpr_right_bnbcpdr_prime. p = bpr_left_bnbcpdr_prime * bpr_right_bnbcpdr_prime -> bpr_left_bnbcpdr_prime = 1 \/ bpr_right_bnbcpdr_prime = 1)) -> (((exists bcf_lt_gap_bnbcpdr_central_out_of_range. bcf_lt_gap_bnbcpdr_central_out_of_range + S (n + n) = n) /\ c = 0) \/ ((exists bcf_le_gap_bnbcpdr_central_in_range. bcf_le_gap_bnbcpdr_central_in_range + (n) = n + n) /\ (exists bcf_row_code_code_bnbcpdr_central bcf_row_code_scale_bnbcpdr_central bcf_row_scale_code_bnbcpdr_central bcf_row_scale_scale_bnbcpdr_central bcf_row_code_bnbcpdr_central bcf_row_scale_bnbcpdr_central. ((forall bcf_row_index_bnbcpdr_central_table. (exists bcf_lt_gap_bnbcpdr_central_table_row_bound. bcf_lt_gap_bnbcpdr_central_table_row_bound + S (bcf_row_index_bnbcpdr_central_table) = S (n + n)) -> exists bcf_row_code_bnbcpdr_central_table bcf_row_scale_bnbcpdr_central_table. ((((exists bcf_height_bnbcpdr_central_table_decoded_row_code. bcf_height_bnbcpdr_central_table_decoded_row_code + S (bcf_row_code_bnbcpdr_central_table) = S ((S (bcf_row_index_bnbcpdr_central_table)) * bcf_row_code_scale_bnbcpdr_central)) /\ exists bcf_quotient_bnbcpdr_central_table_decoded_row_code. bcf_row_code_code_bnbcpdr_central = bcf_quotient_bnbcpdr_central_table_decoded_row_code * S ((S (bcf_row_index_bnbcpdr_central_table)) * bcf_row_code_scale_bnbcpdr_central) + (bcf_row_code_bnbcpdr_central_table))) /\ ((((exists bcf_height_bnbcpdr_central_table_decoded_row_scale. bcf_height_bnbcpdr_central_table_decoded_row_scale + S (bcf_row_scale_bnbcpdr_central_table) = S ((S (bcf_row_index_bnbcpdr_central_table)) * bcf_row_scale_scale_bnbcpdr_central)) /\ exists bcf_quotient_bnbcpdr_central_table_decoded_row_scale. bcf_row_scale_code_bnbcpdr_central = bcf_quotient_bnbcpdr_central_table_decoded_row_scale * S ((S (bcf_row_index_bnbcpdr_central_table)) * bcf_row_scale_scale_bnbcpdr_central) + (bcf_row_scale_bnbcpdr_central_table))) /\ ((bcf_row_index_bnbcpdr_central_table = 0 /\ (forall bcf_index_bnbcpdr_central_table_zero_row. (exists bcf_lt_gap_bnbcpdr_central_table_zero_row_bound. bcf_lt_gap_bnbcpdr_central_table_zero_row_bound + S (bcf_index_bnbcpdr_central_table_zero_row) = S (n + n)) -> exists bcf_value_bnbcpdr_central_table_zero_row. ((((exists bcf_height_bnbcpdr_central_table_zero_row_entry. bcf_height_bnbcpdr_central_table_zero_row_entry + S (bcf_value_bnbcpdr_central_table_zero_row) = S ((S (bcf_index_bnbcpdr_central_table_zero_row)) * bcf_row_scale_bnbcpdr_central_table)) /\ exists bcf_quotient_bnbcpdr_central_table_zero_row_entry. bcf_row_code_bnbcpdr_central_table = bcf_quotient_bnbcpdr_central_table_zero_row_entry * S ((S (bcf_index_bnbcpdr_central_table_zero_row)) * bcf_row_scale_bnbcpdr_central_table) + (bcf_value_bnbcpdr_central_table_zero_row))) /\ ((bcf_index_bnbcpdr_central_table_zero_row = 0 /\ bcf_value_bnbcpdr_central_table_zero_row = 1) \/ exists bcf_predecessor_bnbcpdr_central_table_zero_row. bcf_index_bnbcpdr_central_table_zero_row = S bcf_predecessor_bnbcpdr_central_table_zero_row /\ bcf_value_bnbcpdr_central_table_zero_row = 0)))) \/ exists bcf_predecessor_bnbcpdr_central_table bcf_previous_code_bnbcpdr_central_table bcf_previous_scale_bnbcpdr_central_table. bcf_row_index_bnbcpdr_central_table = S bcf_predecessor_bnbcpdr_central_table /\ ((((exists bcf_height_bnbcpdr_central_table_decoded_previous_code. bcf_height_bnbcpdr_central_table_decoded_previous_code + S (bcf_previous_code_bnbcpdr_central_table) = S ((S (bcf_predecessor_bnbcpdr_central_table)) * bcf_row_code_scale_bnbcpdr_central)) /\ exists bcf_quotient_bnbcpdr_central_table_decoded_previous_code. bcf_row_code_code_bnbcpdr_central = bcf_quotient_bnbcpdr_central_table_decoded_previous_code * S ((S (bcf_predecessor_bnbcpdr_central_table)) * bcf_row_code_scale_bnbcpdr_central) + (bcf_previous_code_bnbcpdr_central_table))) /\ ((((exists bcf_height_bnbcpdr_central_table_decoded_previous_scale. bcf_height_bnbcpdr_central_table_decoded_previous_scale + S (bcf_previous_scale_bnbcpdr_central_table) = S ((S (bcf_predecessor_bnbcpdr_central_table)) * bcf_row_scale_scale_bnbcpdr_central)) /\ exists bcf_quotient_bnbcpdr_central_table_decoded_previous_scale. bcf_row_scale_code_bnbcpdr_central = bcf_quotient_bnbcpdr_central_table_decoded_previous_scale * S ((S (bcf_predecessor_bnbcpdr_central_table)) * bcf_row_scale_scale_bnbcpdr_central) + (bcf_previous_scale_bnbcpdr_central_table))) /\ (forall bcf_index_bnbcpdr_central_table_row_step. (exists bcf_lt_gap_bnbcpdr_central_table_row_step_bound. bcf_lt_gap_bnbcpdr_central_table_row_step_bound + S (bcf_index_bnbcpdr_central_table_row_step) = S (n + n)) -> exists bcf_value_bnbcpdr_central_table_row_step. ((((exists bcf_height_bnbcpdr_central_table_row_step_entry. bcf_height_bnbcpdr_central_table_row_step_entry + S (bcf_value_bnbcpdr_central_table_row_step) = S ((S (bcf_index_bnbcpdr_central_table_row_step)) * bcf_row_scale_bnbcpdr_central_table)) /\ exists bcf_quotient_bnbcpdr_central_table_row_step_entry. bcf_row_code_bnbcpdr_central_table = bcf_quotient_bnbcpdr_central_table_row_step_entry * S ((S (bcf_index_bnbcpdr_central_table_row_step)) * bcf_row_scale_bnbcpdr_central_table) + (bcf_value_bnbcpdr_central_table_row_step))) /\ ((bcf_index_bnbcpdr_central_table_row_step = 0 /\ bcf_value_bnbcpdr_central_table_row_step = 1) \/ exists bcf_predecessor_bnbcpdr_central_table_row_step bcf_left_bnbcpdr_central_table_row_step bcf_right_bnbcpdr_central_table_row_step. bcf_index_bnbcpdr_central_table_row_step = S bcf_predecessor_bnbcpdr_central_table_row_step /\ ((((exists bcf_height_bnbcpdr_central_table_row_step_previous_left. bcf_height_bnbcpdr_central_table_row_step_previous_left + S (bcf_left_bnbcpdr_central_table_row_step) = S ((S (bcf_predecessor_bnbcpdr_central_table_row_step)) * bcf_previous_scale_bnbcpdr_central_table)) /\ exists bcf_quotient_bnbcpdr_central_table_row_step_previous_left. bcf_previous_code_bnbcpdr_central_table = bcf_quotient_bnbcpdr_central_table_row_step_previous_left * S ((S (bcf_predecessor_bnbcpdr_central_table_row_step)) * bcf_previous_scale_bnbcpdr_central_table) + (bcf_left_bnbcpdr_central_table_row_step))) /\ ((((exists bcf_height_bnbcpdr_central_table_row_step_previous_right. bcf_height_bnbcpdr_central_table_row_step_previous_right + S (bcf_right_bnbcpdr_central_table_row_step) = S ((S (S (bcf_predecessor_bnbcpdr_central_table_row_step))) * bcf_previous_scale_bnbcpdr_central_table)) /\ exists bcf_quotient_bnbcpdr_central_table_row_step_previous_right. bcf_previous_code_bnbcpdr_central_table = bcf_quotient_bnbcpdr_central_table_row_step_previous_right * S ((S (S (bcf_predecessor_bnbcpdr_central_table_row_step))) * bcf_previous_scale_bnbcpdr_central_table) + (bcf_right_bnbcpdr_central_table_row_step))) /\ bcf_value_bnbcpdr_central_table_row_step = bcf_left_bnbcpdr_central_table_row_step + bcf_right_bnbcpdr_central_table_row_step))))))))))) /\ ((((exists bcf_height_bnbcpdr_central_decoded_row_code. bcf_height_bnbcpdr_central_decoded_row_code + S (bcf_row_code_bnbcpdr_central) = S ((S (n + n)) * bcf_row_code_scale_bnbcpdr_central)) /\ exists bcf_quotient_bnbcpdr_central_decoded_row_code. bcf_row_code_code_bnbcpdr_central = bcf_quotient_bnbcpdr_central_decoded_row_code * S ((S (n + n)) * bcf_row_code_scale_bnbcpdr_central) + (bcf_row_code_bnbcpdr_central))) /\ ((((exists bcf_height_bnbcpdr_central_decoded_row_scale. bcf_height_bnbcpdr_central_decoded_row_scale + S (bcf_row_scale_bnbcpdr_central) = S ((S (n + n)) * bcf_row_scale_scale_bnbcpdr_central)) /\ exists bcf_quotient_bnbcpdr_central_decoded_row_scale. bcf_row_scale_code_bnbcpdr_central = bcf_quotient_bnbcpdr_central_decoded_row_scale * S ((S (n + n)) * bcf_row_scale_scale_bnbcpdr_central) + (bcf_row_scale_bnbcpdr_central))) /\ (((exists bcf_height_bnbcpdr_central_decoded_value. bcf_height_bnbcpdr_central_decoded_value + S (c) = S ((S (n)) * bcf_row_scale_bnbcpdr_central)) /\ exists bcf_quotient_bnbcpdr_central_decoded_value. bcf_row_code_bnbcpdr_central = bcf_quotient_bnbcpdr_central_decoded_value * S ((S (n)) * bcf_row_scale_bnbcpdr_central) + (c))))))))) -> (exists bpr_quotient_bnbcpdr_divides. c = (p) * bpr_quotient_bnbcpdr_divides) -> ((exists bpr_le_gap_bnbcpdr_small. bpr_le_gap_bnbcpdr_small + (p) = (s)) \/ (((exists bpr_gap_bnbcpdr_above_small. bpr_gap_bnbcpdr_above_small + S (s) = p) /\ (exists bpr_le_gap_bnbcpdr_middle_bound. bpr_le_gap_bnbcpdr_middle_bound + (p) = (q))) \/ ((exists bpr_gap_bnbcpdr_above_middle. bpr_gap_bnbcpdr_above_middle + S (q) = p) /\ (exists bpr_le_gap_bnbcpdr_row_bound. bpr_le_gap_bnbcpdr_row_bound + (p) = (n)))))

Proof neighborhood

Direct theorem prerequisites

Direct theorem dependents

Definition-aware tactic body

Only local propositions introduced by have or suffices are compacted. Every changed line has an exact-AST conservative-expansion receipt; the kernel still receives the immutable original tactic script.

Read the argument

Proof checkpoints

63 script commands · 19 reading checkpoints · 5 local claims

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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (4)
01Fix variables and assumptionsL1–9

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro n
  2. L2
    intro s
  3. L3
    intro q
  4. L4
    intro c
  5. L5
    intro p
  6. L6
    intro hfree
  7. L7
    intro hp
  8. L8
    intro hcentral
  9. L9
    intro hdivides
02Establish hrowL10–18

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply no bertrand central prime divisor le.

  1. L10
  2. L11
    specialize no_bertrand_central_prime_divisor_le n
  3. L12
    specialize no_bertrand_central_prime_divisor_le c
  4. L13
    specialize no_bertrand_central_prime_divisor_le p
  5. L14
    apply no_bertrand_central_prime_divisor_le
  6. L15
    exact hfree
  7. L16
    exact hp
  8. L17
    exact hcentral
  9. L18
    exact hdivides
03Establish hpsL19–22

Establish this local claim before using it. It is not an additional assumption.

  1. L19
    have hps : Le(p,s) ∨ Le(s,p)Definitions: Le(p,s)Le(s,p)Original native command in the exact edition
  2. L20
    specialize le_total p
  3. L21
    specialize le_total s
  4. L22
    exact le_total
04Separate the logical casesL23–24

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L23
    cases hps
  2. L24
    left
05Use earlier factsL25–25

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L25
    exact hps_left
06Establish hsmall_casesL26–30

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le eq or lt.

  1. L26
    have hsmall_cases : s = p ∨ Lt(s,p)Definitions: Lt(s,p)Original native command in the exact edition
  2. L27
    specialize le_eq_or_lt s
  3. L28
    specialize le_eq_or_lt p
  4. L29
    apply le_eq_or_lt
  5. L30
    exact hps_right
07Separate the logical casesL31–32

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L31
    cases hsmall_cases
  2. L32
    left
08Calculate and transport equalitiesL33–33

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L33
    rewrite hsmall_cases_left
09Use earlier factsL34–35

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L34
    specialize le_refl p
  2. L35
    exact le_refl
10Establish hpqL36–39

Establish this local claim before using it. It is not an additional assumption.

  1. L36
    have hpq : Le(p,q) ∨ Le(q,p)Definitions: Le(p,q)Le(q,p)Original native command in the exact edition
  2. L37
    specialize le_total p
  3. L38
    specialize le_total q
  4. L39
    exact le_total
11Separate the logical casesL40–43

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L40
    cases hpq
  2. L41
    right
  3. L42
    left
  4. L43
    split
12Use earlier factsL44–45

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L44
    exact hsmall_cases_right
  2. L45
    exact hpq_left
13Establish hmiddle_casesL46–50

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le eq or lt.

  1. L46
    have hmiddle_cases : q = p ∨ Lt(q,p)Definitions: Lt(q,p)Original native command in the exact edition
  2. L47
    specialize le_eq_or_lt q
  3. L48
    specialize le_eq_or_lt p
  4. L49
    apply le_eq_or_lt
  5. L50
    exact hpq_right
14Separate the logical casesL51–54

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L51
    cases hmiddle_cases
  2. L52
    right
  3. L53
    left
  4. L54
    split
15Use earlier factsL55–55

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L55
    exact hsmall_cases_right
16Calculate and transport equalitiesL56–56

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L56
    rewrite hmiddle_cases_left
17Use earlier factsL57–58

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L57
    specialize le_refl p
  2. L58
    exact le_refl
18Separate the logical casesL59–61

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L59
    right
  2. L60
    right
  3. L61
    split
19Use earlier factsL62–63

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L62
    exact hmiddle_cases_right
  2. L63
    exact hrow

Library-wide reading audit

Original defined command ledger · 63 lines
  1. 0001intro n
  2. 0002intro s
  3. 0003intro q
  4. 0004intro c
  5. 0005intro p
  6. 0006intro hfree
  7. 0007intro hp
  8. 0008intro hcentral
  9. 0009intro hdivides
  10. 0010have hrow : Le(p,n)
    Exact native replay linehave hrow : exists bpr_le_gap_bnbcpdr_row_bound. bpr_le_gap_bnbcpdr_row_bound + (p) = (n)
  11. 0011specialize no_bertrand_central_prime_divisor_le n
  12. 0012specialize no_bertrand_central_prime_divisor_le c
  13. 0013specialize no_bertrand_central_prime_divisor_le p
  14. 0014apply no_bertrand_central_prime_divisor_le
  15. 0015exact hfree
  16. 0016exact hp
  17. 0017exact hcentral
  18. 0018exact hdivides
  19. 0019have hps : Le(p,s)Le(s,p)
    Exact native replay linehave hps : (exists a. a + p = s) \/ exists b. b + s = p
  20. 0020specialize le_total p
  21. 0021specialize le_total s
  22. 0022exact le_total
  23. 0023cases hps
  24. 0024left
  25. 0025exact hps_left
  26. 0026have hsmall_cases : s = p ∨ Lt(s,p)
    Exact native replay linehave hsmall_cases : s = p \/ exists g. g + S s = p
  27. 0027specialize le_eq_or_lt s
  28. 0028specialize le_eq_or_lt p
  29. 0029apply le_eq_or_lt
  30. 0030exact hps_right
  31. 0031cases hsmall_cases
  32. 0032left
  33. 0033rewrite hsmall_cases_left
  34. 0034specialize le_refl p
  35. 0035exact le_refl
  36. 0036have hpq : Le(p,q)Le(q,p)
    Exact native replay linehave hpq : (exists a. a + p = q) \/ exists b. b + q = p
  37. 0037specialize le_total p
  38. 0038specialize le_total q
  39. 0039exact le_total
  40. 0040cases hpq
  41. 0041right
  42. 0042left
  43. 0043split
  44. 0044exact hsmall_cases_right
  45. 0045exact hpq_left
  46. 0046have hmiddle_cases : q = p ∨ Lt(q,p)
    Exact native replay linehave hmiddle_cases : q = p \/ exists g. g + S q = p
  47. 0047specialize le_eq_or_lt q
  48. 0048specialize le_eq_or_lt p
  49. 0049apply le_eq_or_lt
  50. 0050exact hpq_right
  51. 0051cases hmiddle_cases
  52. 0052right
  53. 0053left
  54. 0054split
  55. 0055exact hsmall_cases_right
  56. 0056rewrite hmiddle_cases_left
  57. 0057specialize le_refl p
  58. 0058exact le_refl
  59. 0059right
  60. 0060right
  61. 0061split
  62. 0062exact hmiddle_cases_right
  63. 0063exact hrow