BT00X8 · Bertrand theorem

bertrand_main_inequality_nat

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

The public B6 surface retains n+n and reaches the factorized internal theorem through five checked equality rewrites.

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. ∀ r. ∀ A. ∀ B. ∀ F. Le(16 · 32,n)FloorSqrt(n + n,s)DivRem(n + n,3,q,r)Pow(n + n,s,A)Pow(4,q,B)Pow(4,n,F)Le(n · A · B,F)

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

7 occurrences

In local proof propositions

none

0 occurrences

Exact expanded native-PA statement
forall n s q r A B F. (exists bqb_le_gap_b6_main_public_threshold. bqb_le_gap_b6_main_public_threshold + (16 * 32) = (n)) -> (((exists bcs_sqrt_lower_gap_b6_main_public_floor. bcs_sqrt_lower_gap_b6_main_public_floor + (s) * (s) = (n + n)) /\ exists bcs_sqrt_upper_gap_b6_main_public_floor. bcs_sqrt_upper_gap_b6_main_public_floor + S (n + n) = S (s) * S (s))) -> ((((n + n) = 3 * (q) + (r)) /\ exists bmi_remainder_gap_b6_main_public_division. bmi_remainder_gap_b6_main_public_division + S (r) = 3)) -> (exists pa_b_b6_main_public_a pa_c_b6_main_public_a. ((forall pa_i_b6_main_public_a_repeat. (exists pa_lt_b6_main_public_a_repeat_bound. pa_lt_b6_main_public_a_repeat_bound + S pa_i_b6_main_public_a_repeat = s) -> (((exists pa_h_b6_main_public_a_repeat_decoded. pa_h_b6_main_public_a_repeat_decoded + S (n + n) = S ((S (pa_i_b6_main_public_a_repeat)) * pa_c_b6_main_public_a)) /\ exists pa_q_b6_main_public_a_repeat_decoded. pa_b_b6_main_public_a = pa_q_b6_main_public_a_repeat_decoded * S ((S (pa_i_b6_main_public_a_repeat)) * pa_c_b6_main_public_a) + (n + n)))) /\ (exists pa_u_b6_main_public_a_product pa_v_b6_main_public_a_product. ((((exists pa_h_b6_main_public_a_product_start. pa_h_b6_main_public_a_product_start + S (1) = S ((S (0)) * pa_v_b6_main_public_a_product)) /\ exists pa_q_b6_main_public_a_product_start. pa_u_b6_main_public_a_product = pa_q_b6_main_public_a_product_start * S ((S (0)) * pa_v_b6_main_public_a_product) + (1))) /\ ((((exists pa_h_b6_main_public_a_product_terminal. pa_h_b6_main_public_a_product_terminal + S (A) = S ((S (s)) * pa_v_b6_main_public_a_product)) /\ exists pa_q_b6_main_public_a_product_terminal. pa_u_b6_main_public_a_product = pa_q_b6_main_public_a_product_terminal * S ((S (s)) * pa_v_b6_main_public_a_product) + (A))) /\ forall pa_i_b6_main_public_a_product. (exists pa_lt_b6_main_public_a_product_bound. pa_lt_b6_main_public_a_product_bound + S pa_i_b6_main_public_a_product = s) -> exists pa_p_b6_main_public_a_product pa_r_b6_main_public_a_product pa_s_b6_main_public_a_product. ((((exists pa_h_b6_main_public_a_product_factor. pa_h_b6_main_public_a_product_factor + S (pa_p_b6_main_public_a_product) = S ((S (pa_i_b6_main_public_a_product)) * pa_c_b6_main_public_a)) /\ exists pa_q_b6_main_public_a_product_factor. pa_b_b6_main_public_a = pa_q_b6_main_public_a_product_factor * S ((S (pa_i_b6_main_public_a_product)) * pa_c_b6_main_public_a) + (pa_p_b6_main_public_a_product))) /\ ((((exists pa_h_b6_main_public_a_product_partial. pa_h_b6_main_public_a_product_partial + S (pa_r_b6_main_public_a_product) = S ((S (pa_i_b6_main_public_a_product)) * pa_v_b6_main_public_a_product)) /\ exists pa_q_b6_main_public_a_product_partial. pa_u_b6_main_public_a_product = pa_q_b6_main_public_a_product_partial * S ((S (pa_i_b6_main_public_a_product)) * pa_v_b6_main_public_a_product) + (pa_r_b6_main_public_a_product))) /\ ((((exists pa_h_b6_main_public_a_product_successor. pa_h_b6_main_public_a_product_successor + S (pa_s_b6_main_public_a_product) = S ((S (S pa_i_b6_main_public_a_product)) * pa_v_b6_main_public_a_product)) /\ exists pa_q_b6_main_public_a_product_successor. pa_u_b6_main_public_a_product = pa_q_b6_main_public_a_product_successor * S ((S (S pa_i_b6_main_public_a_product)) * pa_v_b6_main_public_a_product) + (pa_s_b6_main_public_a_product))) /\ pa_s_b6_main_public_a_product = pa_r_b6_main_public_a_product * pa_p_b6_main_public_a_product)))))))) -> (exists pa_b_b6_main_public_b pa_c_b6_main_public_b. ((forall pa_i_b6_main_public_b_repeat. (exists pa_lt_b6_main_public_b_repeat_bound. pa_lt_b6_main_public_b_repeat_bound + S pa_i_b6_main_public_b_repeat = q) -> (((exists pa_h_b6_main_public_b_repeat_decoded. pa_h_b6_main_public_b_repeat_decoded + S (4) = S ((S (pa_i_b6_main_public_b_repeat)) * pa_c_b6_main_public_b)) /\ exists pa_q_b6_main_public_b_repeat_decoded. pa_b_b6_main_public_b = pa_q_b6_main_public_b_repeat_decoded * S ((S (pa_i_b6_main_public_b_repeat)) * pa_c_b6_main_public_b) + (4)))) /\ (exists pa_u_b6_main_public_b_product pa_v_b6_main_public_b_product. ((((exists pa_h_b6_main_public_b_product_start. pa_h_b6_main_public_b_product_start + S (1) = S ((S (0)) * pa_v_b6_main_public_b_product)) /\ exists pa_q_b6_main_public_b_product_start. pa_u_b6_main_public_b_product = pa_q_b6_main_public_b_product_start * S ((S (0)) * pa_v_b6_main_public_b_product) + (1))) /\ ((((exists pa_h_b6_main_public_b_product_terminal. pa_h_b6_main_public_b_product_terminal + S (B) = S ((S (q)) * pa_v_b6_main_public_b_product)) /\ exists pa_q_b6_main_public_b_product_terminal. pa_u_b6_main_public_b_product = pa_q_b6_main_public_b_product_terminal * S ((S (q)) * pa_v_b6_main_public_b_product) + (B))) /\ forall pa_i_b6_main_public_b_product. (exists pa_lt_b6_main_public_b_product_bound. pa_lt_b6_main_public_b_product_bound + S pa_i_b6_main_public_b_product = q) -> exists pa_p_b6_main_public_b_product pa_r_b6_main_public_b_product pa_s_b6_main_public_b_product. ((((exists pa_h_b6_main_public_b_product_factor. pa_h_b6_main_public_b_product_factor + S (pa_p_b6_main_public_b_product) = S ((S (pa_i_b6_main_public_b_product)) * pa_c_b6_main_public_b)) /\ exists pa_q_b6_main_public_b_product_factor. pa_b_b6_main_public_b = pa_q_b6_main_public_b_product_factor * S ((S (pa_i_b6_main_public_b_product)) * pa_c_b6_main_public_b) + (pa_p_b6_main_public_b_product))) /\ ((((exists pa_h_b6_main_public_b_product_partial. pa_h_b6_main_public_b_product_partial + S (pa_r_b6_main_public_b_product) = S ((S (pa_i_b6_main_public_b_product)) * pa_v_b6_main_public_b_product)) /\ exists pa_q_b6_main_public_b_product_partial. pa_u_b6_main_public_b_product = pa_q_b6_main_public_b_product_partial * S ((S (pa_i_b6_main_public_b_product)) * pa_v_b6_main_public_b_product) + (pa_r_b6_main_public_b_product))) /\ ((((exists pa_h_b6_main_public_b_product_successor. pa_h_b6_main_public_b_product_successor + S (pa_s_b6_main_public_b_product) = S ((S (S pa_i_b6_main_public_b_product)) * pa_v_b6_main_public_b_product)) /\ exists pa_q_b6_main_public_b_product_successor. pa_u_b6_main_public_b_product = pa_q_b6_main_public_b_product_successor * S ((S (S pa_i_b6_main_public_b_product)) * pa_v_b6_main_public_b_product) + (pa_s_b6_main_public_b_product))) /\ pa_s_b6_main_public_b_product = pa_r_b6_main_public_b_product * pa_p_b6_main_public_b_product)))))))) -> (exists pa_b_b6_main_public_f pa_c_b6_main_public_f. ((forall pa_i_b6_main_public_f_repeat. (exists pa_lt_b6_main_public_f_repeat_bound. pa_lt_b6_main_public_f_repeat_bound + S pa_i_b6_main_public_f_repeat = n) -> (((exists pa_h_b6_main_public_f_repeat_decoded. pa_h_b6_main_public_f_repeat_decoded + S (4) = S ((S (pa_i_b6_main_public_f_repeat)) * pa_c_b6_main_public_f)) /\ exists pa_q_b6_main_public_f_repeat_decoded. pa_b_b6_main_public_f = pa_q_b6_main_public_f_repeat_decoded * S ((S (pa_i_b6_main_public_f_repeat)) * pa_c_b6_main_public_f) + (4)))) /\ (exists pa_u_b6_main_public_f_product pa_v_b6_main_public_f_product. ((((exists pa_h_b6_main_public_f_product_start. pa_h_b6_main_public_f_product_start + S (1) = S ((S (0)) * pa_v_b6_main_public_f_product)) /\ exists pa_q_b6_main_public_f_product_start. pa_u_b6_main_public_f_product = pa_q_b6_main_public_f_product_start * S ((S (0)) * pa_v_b6_main_public_f_product) + (1))) /\ ((((exists pa_h_b6_main_public_f_product_terminal. pa_h_b6_main_public_f_product_terminal + S (F) = S ((S (n)) * pa_v_b6_main_public_f_product)) /\ exists pa_q_b6_main_public_f_product_terminal. pa_u_b6_main_public_f_product = pa_q_b6_main_public_f_product_terminal * S ((S (n)) * pa_v_b6_main_public_f_product) + (F))) /\ forall pa_i_b6_main_public_f_product. (exists pa_lt_b6_main_public_f_product_bound. pa_lt_b6_main_public_f_product_bound + S pa_i_b6_main_public_f_product = n) -> exists pa_p_b6_main_public_f_product pa_r_b6_main_public_f_product pa_s_b6_main_public_f_product. ((((exists pa_h_b6_main_public_f_product_factor. pa_h_b6_main_public_f_product_factor + S (pa_p_b6_main_public_f_product) = S ((S (pa_i_b6_main_public_f_product)) * pa_c_b6_main_public_f)) /\ exists pa_q_b6_main_public_f_product_factor. pa_b_b6_main_public_f = pa_q_b6_main_public_f_product_factor * S ((S (pa_i_b6_main_public_f_product)) * pa_c_b6_main_public_f) + (pa_p_b6_main_public_f_product))) /\ ((((exists pa_h_b6_main_public_f_product_partial. pa_h_b6_main_public_f_product_partial + S (pa_r_b6_main_public_f_product) = S ((S (pa_i_b6_main_public_f_product)) * pa_v_b6_main_public_f_product)) /\ exists pa_q_b6_main_public_f_product_partial. pa_u_b6_main_public_f_product = pa_q_b6_main_public_f_product_partial * S ((S (pa_i_b6_main_public_f_product)) * pa_v_b6_main_public_f_product) + (pa_r_b6_main_public_f_product))) /\ ((((exists pa_h_b6_main_public_f_product_successor. pa_h_b6_main_public_f_product_successor + S (pa_s_b6_main_public_f_product) = S ((S (S pa_i_b6_main_public_f_product)) * pa_v_b6_main_public_f_product)) /\ exists pa_q_b6_main_public_f_product_successor. pa_u_b6_main_public_f_product = pa_q_b6_main_public_f_product_successor * S ((S (S pa_i_b6_main_public_f_product)) * pa_v_b6_main_public_f_product) + (pa_s_b6_main_public_f_product))) /\ pa_s_b6_main_public_f_product = pa_r_b6_main_public_f_product * pa_p_b6_main_public_f_product)))))))) -> (exists bqb_le_gap_b6_main_public_result. bqb_le_gap_b6_main_public_result + (n * A * B) = (F))

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

35 script commands · 5 reading checkpoints · 1 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 (2)
01Fix variables and assumptionsL1–10

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 r
  5. L5
    intro A
  6. L6
    intro B
  7. L7
    intro F
  8. L8
    intro hthreshold
  9. L9
    intro hfloor
  10. L10
    intro hdiv
02Fix variables and assumptionsL11–13

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

  1. L11
    intro hA
  2. L12
    intro hB
  3. L13
    intro hF
03Establish hdoubleL14–23

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

  1. L14
    have hdouble : 2 * n = n + n
  2. L15
    specialize two_mul_eq_add_self n
  3. L16
    exact two_mul_eq_add_self
  4. L17
    rewrite <- hdouble at hfloor
  5. L18
    rewrite <- hdouble at hfloor
  6. L19
    rewrite <- hdouble at hdiv
  7. L20
    rewrite <- hdouble at hA
  8. L21
    rewrite <- hdouble at hA
  9. L22
    specialize bertrand_main_inequality_factorized n
  10. L23
    specialize bertrand_main_inequality_factorized s
04Use earlier factsL24–33

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

  1. L24
    specialize bertrand_main_inequality_factorized q
  2. L25
    specialize bertrand_main_inequality_factorized r
  3. L26
    specialize bertrand_main_inequality_factorized A
  4. L27
    specialize bertrand_main_inequality_factorized B
  5. L28
    specialize bertrand_main_inequality_factorized F
  6. L29
    apply bertrand_main_inequality_factorized
  7. L30
    exact hthreshold
  8. L31
    exact hfloor
  9. L32
    exact hdiv
  10. L33
    exact hA
05Use earlier factsL34–35

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

  1. L34
    exact hB
  2. L35
    exact hF

Library-wide reading audit

Original defined command ledger · 35 lines
  1. 0001intro n
  2. 0002intro s
  3. 0003intro q
  4. 0004intro r
  5. 0005intro A
  6. 0006intro B
  7. 0007intro F
  8. 0008intro hthreshold
  9. 0009intro hfloor
  10. 0010intro hdiv
  11. 0011intro hA
  12. 0012intro hB
  13. 0013intro hF
  14. 0014have hdouble : 2 * n = n + n
  15. 0015specialize two_mul_eq_add_self n
  16. 0016exact two_mul_eq_add_self
  17. 0017rewrite <- hdouble at hfloor
  18. 0018rewrite <- hdouble at hfloor
  19. 0019rewrite <- hdouble at hdiv
  20. 0020rewrite <- hdouble at hA
  21. 0021rewrite <- hdouble at hA
  22. 0022specialize bertrand_main_inequality_factorized n
  23. 0023specialize bertrand_main_inequality_factorized s
  24. 0024specialize bertrand_main_inequality_factorized q
  25. 0025specialize bertrand_main_inequality_factorized r
  26. 0026specialize bertrand_main_inequality_factorized A
  27. 0027specialize bertrand_main_inequality_factorized B
  28. 0028specialize bertrand_main_inequality_factorized F
  29. 0029apply bertrand_main_inequality_factorized
  30. 0030exact hthreshold
  31. 0031exact hfloor
  32. 0032exact hdiv
  33. 0033exact hA
  34. 0034exact hB
  35. 0035exact hF