BT00T3 · Bertrand theorem

beta_pascal_zero_row_exists

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

Every finite width has a beta-coded Pascal zero row.

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

∀ w. ∃ b. ∃ c. ∀ x. Lt(x,w) → ∃ y. BetaAt(b,c,x,y) ∧ (x = 0 ∧ y = 1 ∨ (∃ z. x = S z ∧ y = 0))

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

2 occurrences

In local proof propositions

4 occurrences

Exact expanded native-PA statement
forall w. exists b c. (forall bcf_index_bpzrx_result. (exists bcf_lt_gap_bpzrx_result_bound. bcf_lt_gap_bpzrx_result_bound + S (bcf_index_bpzrx_result) = w) -> exists bcf_value_bpzrx_result. ((((exists bcf_height_bpzrx_result_entry. bcf_height_bpzrx_result_entry + S (bcf_value_bpzrx_result) = S ((S (bcf_index_bpzrx_result)) * c)) /\ exists bcf_quotient_bpzrx_result_entry. b = bcf_quotient_bpzrx_result_entry * S ((S (bcf_index_bpzrx_result)) * c) + (bcf_value_bpzrx_result))) /\ ((bcf_index_bpzrx_result = 0 /\ bcf_value_bpzrx_result = 1) \/ exists bcf_predecessor_bpzrx_result. bcf_index_bpzrx_result = S bcf_predecessor_bpzrx_result /\ bcf_value_bpzrx_result = 0)))

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

26 script commands · 8 reading checkpoints · 3 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 (3)
01Induction on wL1–1

Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.

  1. L1
    induction w
02Construct an explicit witnessL2–3

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

  1. L2
    exists 0
  2. L3
    exists 0
03Fix variables and assumptionsL4–5

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

  1. L4
    intro i
  2. L5
    intro hi
04Separate the logical casesL6–7

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

  1. L6
    exfalso
  2. L7
    cases hi
05Establish hsiL8–15

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add eq zero right.

  1. L8
    have hsi : S i = 0
  2. L9
    specialize add_eq_zero_right x
  3. L10
    specialize add_eq_zero_right (S i)
  4. L11
    apply add_eq_zero_right
  5. L12
    exact hi_witness
  6. L13
    specialize succ_ne_zero i
  7. L14
    apply succ_ne_zero
  8. L15
    exact hsi
06Establish hpreviousL16–17

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

  1. L16
    have hprevious : ∃ b. ∃ c. ∀ x. Lt(x,w) → ∃ y. BetaAt(b,c,x,y) ∧ (x = 0 ∧ y = 1 ∨ (∃ z. x = S z ∧ y = 0))Definitions: Lt(x,w)BetaAt(b,c,x,y)Original native command in the exact edition
  2. L17
    exact IH
07Separate the logical casesL18–19

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

  1. L18
    cases hprevious
  2. L19
    cases hprevious_witness
08Establish hnextL20–26

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta pascal zero row extend.

  1. L20
    have hnext : ∃ b. ∃ c. ∀ x. Lt(x,S w) → ∃ y. BetaAt(b,c,x,y) ∧ (x = 0 ∧ y = 1 ∨ (∃ z. x = S z ∧ y = 0))Definitions: Lt(x,S w)BetaAt(b,c,x,y)Original native command in the exact edition
  2. L21
    specialize beta_pascal_zero_row_extend x
  3. L22
    specialize beta_pascal_zero_row_extend x1
  4. L23
    specialize beta_pascal_zero_row_extend w
  5. L24
    apply beta_pascal_zero_row_extend
  6. L25
    exact hprevious_witness_witness
  7. L26
    exact hnext

Library-wide reading audit

Original defined command ledger · 26 lines
  1. 0001induction w
  2. 0002exists 0
  3. 0003exists 0
  4. 0004intro i
  5. 0005intro hi
  6. 0006exfalso
  7. 0007cases hi
  8. 0008have hsi : S i = 0
  9. 0009specialize add_eq_zero_right x
  10. 0010specialize add_eq_zero_right (S i)
  11. 0011apply add_eq_zero_right
  12. 0012exact hi_witness
  13. 0013specialize succ_ne_zero i
  14. 0014apply succ_ne_zero
  15. 0015exact hsi
  16. 0016have hprevious : ∃ b. ∃ c. ∀ x. Lt(x,w) → ∃ y. BetaAt(b,c,x,y) ∧ (x = 0 ∧ y = 1 ∨ (∃ z. x = S z ∧ y = 0))
    Exact native replay linehave hprevious : exists b c. (forall bcf_index_bpzrx_previous. (exists bcf_lt_gap_bpzrx_previous_bound. bcf_lt_gap_bpzrx_previous_bound + S (bcf_index_bpzrx_previous) = w) -> exists bcf_value_bpzrx_previous. ((((exists bcf_height_bpzrx_previous_entry. bcf_height_bpzrx_previous_entry + S (bcf_value_bpzrx_previous) = S ((S (bcf_index_bpzrx_previous)) * c)) /\ exists bcf_quotient_bpzrx_previous_entry. b = bcf_quotient_bpzrx_previous_entry * S ((S (bcf_index_bpzrx_previous)) * c) + (bcf_value_bpzrx_previous))) /\ ((bcf_index_bpzrx_previous = 0 /\ bcf_value_bpzrx_previous = 1) \/ exists bcf_predecessor_bpzrx_previous. bcf_index_bpzrx_previous = S bcf_predecessor_bpzrx_previous /\ bcf_value_bpzrx_previous = 0)))
  17. 0017exact IH
  18. 0018cases hprevious
  19. 0019cases hprevious_witness
  20. 0020have hnext : ∃ b. ∃ c. ∀ x. Lt(x,S w) → ∃ y. BetaAt(b,c,x,y) ∧ (x = 0 ∧ y = 1 ∨ (∃ z. x = S z ∧ y = 0))
    Exact native replay linehave hnext : exists b c. (forall bcf_index_bpzrx_successor. (exists bcf_lt_gap_bpzrx_successor_bound. bcf_lt_gap_bpzrx_successor_bound + S (bcf_index_bpzrx_successor) = S (w)) -> exists bcf_value_bpzrx_successor. ((((exists bcf_height_bpzrx_successor_entry. bcf_height_bpzrx_successor_entry + S (bcf_value_bpzrx_successor) = S ((S (bcf_index_bpzrx_successor)) * c)) /\ exists bcf_quotient_bpzrx_successor_entry. b = bcf_quotient_bpzrx_successor_entry * S ((S (bcf_index_bpzrx_successor)) * c) + (bcf_value_bpzrx_successor))) /\ ((bcf_index_bpzrx_successor = 0 /\ bcf_value_bpzrx_successor = 1) \/ exists bcf_predecessor_bpzrx_successor. bcf_index_bpzrx_successor = S bcf_predecessor_bpzrx_successor /\ bcf_value_bpzrx_successor = 0)))
  21. 0021specialize beta_pascal_zero_row_extend x
  22. 0022specialize beta_pascal_zero_row_extend x1
  23. 0023specialize beta_pascal_zero_row_extend w
  24. 0024apply beta_pascal_zero_row_extend
  25. 0025exact hprevious_witness_witness
  26. 0026exact hnext