BT00UA · Bertrand theorem

primorial_exists

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

Every natural index has a relational primorial value.

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

∀ m. ∃ z. Primorial(m,z)

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

1 occurrences

In local proof propositions

5 occurrences

Exact expanded native-PA statement
forall m. exists z. (exists bpr_code_bp_exists bpr_scale_bp_exists. ((forall bpr_index_bp_exists_mask. (exists bpr_gap_bp_exists_mask_bound. bpr_gap_bp_exists_mask_bound + S (bpr_index_bp_exists_mask) = m) -> exists bpr_value_bp_exists_mask. ((((exists bpr_height_bp_exists_mask_decoded. bpr_height_bp_exists_mask_decoded + S (bpr_value_bp_exists_mask) = S ((S (bpr_index_bp_exists_mask)) * bpr_scale_bp_exists)) /\ exists bpr_quotient_bp_exists_mask_decoded. bpr_code_bp_exists = bpr_quotient_bp_exists_mask_decoded * S ((S (bpr_index_bp_exists_mask)) * bpr_scale_bp_exists) + (bpr_value_bp_exists_mask))) /\ (((((~(S (bpr_index_bp_exists_mask) = 1) /\ forall bpr_left_bp_exists_mask_choice_prime bpr_right_bp_exists_mask_choice_prime. S (bpr_index_bp_exists_mask) = bpr_left_bp_exists_mask_choice_prime * bpr_right_bp_exists_mask_choice_prime -> bpr_left_bp_exists_mask_choice_prime = 1 \/ bpr_right_bp_exists_mask_choice_prime = 1)) /\ bpr_value_bp_exists_mask = S (bpr_index_bp_exists_mask)) \/ (~((~(S (bpr_index_bp_exists_mask) = 1) /\ forall bpr_left_bp_exists_mask_choice_prime bpr_right_bp_exists_mask_choice_prime. S (bpr_index_bp_exists_mask) = bpr_left_bp_exists_mask_choice_prime * bpr_right_bp_exists_mask_choice_prime -> bpr_left_bp_exists_mask_choice_prime = 1 \/ bpr_right_bp_exists_mask_choice_prime = 1)) /\ bpr_value_bp_exists_mask = 1))))) /\ (exists ff_u_bp_exists_product ff_v_bp_exists_product. ((((exists ff_h_bp_exists_product_start. ff_h_bp_exists_product_start + S (1) = S ((S (0)) * ff_v_bp_exists_product)) /\ exists ff_q_bp_exists_product_start. ff_u_bp_exists_product = ff_q_bp_exists_product_start * S ((S (0)) * ff_v_bp_exists_product) + (1))) /\ ((((exists ff_h_bp_exists_product_terminal. ff_h_bp_exists_product_terminal + S (z) = S ((S (m)) * ff_v_bp_exists_product)) /\ exists ff_q_bp_exists_product_terminal. ff_u_bp_exists_product = ff_q_bp_exists_product_terminal * S ((S (m)) * ff_v_bp_exists_product) + (z))) /\ forall ff_i_bp_exists_product. (exists ff_lt_bp_exists_product_bound. ff_lt_bp_exists_product_bound + S ff_i_bp_exists_product = m) -> exists ff_p_bp_exists_product ff_r_bp_exists_product ff_s_bp_exists_product. ((((exists ff_h_bp_exists_product_factor. ff_h_bp_exists_product_factor + S (ff_p_bp_exists_product) = S ((S (ff_i_bp_exists_product)) * bpr_scale_bp_exists)) /\ exists ff_q_bp_exists_product_factor. bpr_code_bp_exists = ff_q_bp_exists_product_factor * S ((S (ff_i_bp_exists_product)) * bpr_scale_bp_exists) + (ff_p_bp_exists_product))) /\ ((((exists ff_h_bp_exists_product_partial. ff_h_bp_exists_product_partial + S (ff_r_bp_exists_product) = S ((S (ff_i_bp_exists_product)) * ff_v_bp_exists_product)) /\ exists ff_q_bp_exists_product_partial. ff_u_bp_exists_product = ff_q_bp_exists_product_partial * S ((S (ff_i_bp_exists_product)) * ff_v_bp_exists_product) + (ff_r_bp_exists_product))) /\ ((((exists ff_h_bp_exists_product_successor. ff_h_bp_exists_product_successor + S (ff_s_bp_exists_product) = S ((S (S ff_i_bp_exists_product)) * ff_v_bp_exists_product)) /\ exists ff_q_bp_exists_product_successor. ff_u_bp_exists_product = ff_q_bp_exists_product_successor * S ((S (S ff_i_bp_exists_product)) * ff_v_bp_exists_product) + (ff_s_bp_exists_product))) /\ ff_s_bp_exists_product = ff_r_bp_exists_product * ff_p_bp_exists_product))))))))

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

14 script commands · 8 reading checkpoints · 2 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–1

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

  1. L1
    intro m
02Establish hprefixL2–3

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply primorial factor prefix exists.

  1. L2
    have hprefix : ∃ b. ∃ c. ∀ x. Lt(x,m) → ∃ y. BetaAt(b,c,x,y) ∧ (Prime(S x) ∧ y = S x ∨ ¬Prime(S x) ∧ y = 1)Definitions: Lt(x,m)BetaAt(b,c,x,y)Prime(S x)Original native command in the exact edition
  2. L3
    apply primorial_factor_prefix_exists
03Separate the logical casesL4–5

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

  1. L4
    cases hprefix
  2. L5
    cases hprefix_witness
04Establish hproductL6–7

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product exists.

  1. L6
    have hproduct : ∃ z. Product(x,x1,m,z)Definitions: Product(x,x1,m,z)Original native command in the exact edition
  2. L7
    apply beta_product_exists
05Separate the logical casesL8–8

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

  1. L8
    cases hproduct
06Construct an explicit witnessL9–11

Supply the displayed value, then prove that it has the required property.

  1. L9
    exists x2
  2. L10
    exists x
  3. L11
    exists x1
07Separate the logical casesL12–12

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

  1. L12
    split
08Use earlier factsL13–14

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

  1. L13
    exact hprefix_witness_witness
  2. L14
    exact hproduct_witness

Library-wide reading audit

Original defined command ledger · 14 lines
  1. 0001intro m
  2. 0002have hprefix : ∃ b. ∃ c. ∀ x. Lt(x,m) → ∃ y. BetaAt(b,c,x,y) ∧ (Prime(S x) ∧ y = S x ∨ ¬Prime(S x) ∧ y = 1)
    Exact native replay linehave hprefix : exists b c. (forall bpr_index_bpfpx_result. (exists bpr_gap_bpfpx_result_bound. bpr_gap_bpfpx_result_bound + S (bpr_index_bpfpx_result) = m) -> exists bpr_value_bpfpx_result. ((((exists bpr_height_bpfpx_result_decoded. bpr_height_bpfpx_result_decoded + S (bpr_value_bpfpx_result) = S ((S (bpr_index_bpfpx_result)) * c)) /\ exists bpr_quotient_bpfpx_result_decoded. b = bpr_quotient_bpfpx_result_decoded * S ((S (bpr_index_bpfpx_result)) * c) + (bpr_value_bpfpx_result))) /\ (((((~(S (bpr_index_bpfpx_result) = 1) /\ forall bpr_left_bpfpx_result_choice_prime bpr_right_bpfpx_result_choice_prime. S (bpr_index_bpfpx_result) = bpr_left_bpfpx_result_choice_prime * bpr_right_bpfpx_result_choice_prime -> bpr_left_bpfpx_result_choice_prime = 1 \/ bpr_right_bpfpx_result_choice_prime = 1)) /\ bpr_value_bpfpx_result = S (bpr_index_bpfpx_result)) \/ (~((~(S (bpr_index_bpfpx_result) = 1) /\ forall bpr_left_bpfpx_result_choice_prime bpr_right_bpfpx_result_choice_prime. S (bpr_index_bpfpx_result) = bpr_left_bpfpx_result_choice_prime * bpr_right_bpfpx_result_choice_prime -> bpr_left_bpfpx_result_choice_prime = 1 \/ bpr_right_bpfpx_result_choice_prime = 1)) /\ bpr_value_bpfpx_result = 1)))))
  3. 0003apply primorial_factor_prefix_exists
  4. 0004cases hprefix
  5. 0005cases hprefix_witness
  6. 0006have hproduct : ∃ z. Product(x,x1,m,z)
    Exact native replay linehave hproduct : exists z. (exists ff_u_bp_exists_product_witness ff_v_bp_exists_product_witness. ((((exists ff_h_bp_exists_product_witness_start. ff_h_bp_exists_product_witness_start + S (1) = S ((S (0)) * ff_v_bp_exists_product_witness)) /\ exists ff_q_bp_exists_product_witness_start. ff_u_bp_exists_product_witness = ff_q_bp_exists_product_witness_start * S ((S (0)) * ff_v_bp_exists_product_witness) + (1))) /\ ((((exists ff_h_bp_exists_product_witness_terminal. ff_h_bp_exists_product_witness_terminal + S (z) = S ((S (m)) * ff_v_bp_exists_product_witness)) /\ exists ff_q_bp_exists_product_witness_terminal. ff_u_bp_exists_product_witness = ff_q_bp_exists_product_witness_terminal * S ((S (m)) * ff_v_bp_exists_product_witness) + (z))) /\ forall ff_i_bp_exists_product_witness. (exists ff_lt_bp_exists_product_witness_bound. ff_lt_bp_exists_product_witness_bound + S ff_i_bp_exists_product_witness = m) -> exists ff_p_bp_exists_product_witness ff_r_bp_exists_product_witness ff_s_bp_exists_product_witness. ((((exists ff_h_bp_exists_product_witness_factor. ff_h_bp_exists_product_witness_factor + S (ff_p_bp_exists_product_witness) = S ((S (ff_i_bp_exists_product_witness)) * x1)) /\ exists ff_q_bp_exists_product_witness_factor. x = ff_q_bp_exists_product_witness_factor * S ((S (ff_i_bp_exists_product_witness)) * x1) + (ff_p_bp_exists_product_witness))) /\ ((((exists ff_h_bp_exists_product_witness_partial. ff_h_bp_exists_product_witness_partial + S (ff_r_bp_exists_product_witness) = S ((S (ff_i_bp_exists_product_witness)) * ff_v_bp_exists_product_witness)) /\ exists ff_q_bp_exists_product_witness_partial. ff_u_bp_exists_product_witness = ff_q_bp_exists_product_witness_partial * S ((S (ff_i_bp_exists_product_witness)) * ff_v_bp_exists_product_witness) + (ff_r_bp_exists_product_witness))) /\ ((((exists ff_h_bp_exists_product_witness_successor. ff_h_bp_exists_product_witness_successor + S (ff_s_bp_exists_product_witness) = S ((S (S ff_i_bp_exists_product_witness)) * ff_v_bp_exists_product_witness)) /\ exists ff_q_bp_exists_product_witness_successor. ff_u_bp_exists_product_witness = ff_q_bp_exists_product_witness_successor * S ((S (S ff_i_bp_exists_product_witness)) * ff_v_bp_exists_product_witness) + (ff_s_bp_exists_product_witness))) /\ ff_s_bp_exists_product_witness = ff_r_bp_exists_product_witness * ff_p_bp_exists_product_witness))))))
  7. 0007apply beta_product_exists
  8. 0008cases hproduct
  9. 0009exists x2
  10. 0010exists x
  11. 0011exists x1
  12. 0012split
  13. 0013exact hprefix_witness_witness
  14. 0014exact hproduct_witness