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.
Exact expanded PA statement
forall w r. exists bb bc sb sc. (forall bcf_row_index_bptpx_result. (exists bcf_lt_gap_bptpx_result_row_bound. bcf_lt_gap_bptpx_result_row_bound + S (bcf_row_index_bptpx_result) = r) -> exists bcf_row_code_bptpx_result bcf_row_scale_bptpx_result. ((((exists bcf_height_bptpx_result_decoded_row_code. bcf_height_bptpx_result_decoded_row_code + S (bcf_row_code_bptpx_result) = S ((S (bcf_row_index_bptpx_result)) * bc)) /\ exists bcf_quotient_bptpx_result_decoded_row_code. bb = bcf_quotient_bptpx_result_decoded_row_code * S ((S (bcf_row_index_bptpx_result)) * bc) + (bcf_row_code_bptpx_result))) /\ ((((exists bcf_height_bptpx_result_decoded_row_scale. bcf_height_bptpx_result_decoded_row_scale + S (bcf_row_scale_bptpx_result) = S ((S (bcf_row_index_bptpx_result)) * sc)) /\ exists bcf_quotient_bptpx_result_decoded_row_scale. sb = bcf_quotient_bptpx_result_decoded_row_scale * S ((S (bcf_row_index_bptpx_result)) * sc) + (bcf_row_scale_bptpx_result))) /\ ((bcf_row_index_bptpx_result = 0 /\ (forall bcf_index_bptpx_result_zero_row. (exists bcf_lt_gap_bptpx_result_zero_row_bound. bcf_lt_gap_bptpx_result_zero_row_bound + S (bcf_index_bptpx_result_zero_row) = w) -> exists bcf_value_bptpx_result_zero_row. ((((exists bcf_height_bptpx_result_zero_row_entry. bcf_height_bptpx_result_zero_row_entry + S (bcf_value_bptpx_result_zero_row) = S ((S (bcf_index_bptpx_result_zero_row)) * bcf_row_scale_bptpx_result)) /\ exists bcf_quotient_bptpx_result_zero_row_entry. bcf_row_code_bptpx_result = bcf_quotient_bptpx_result_zero_row_entry * S ((S (bcf_index_bptpx_result_zero_row)) * bcf_row_scale_bptpx_result) + (bcf_value_bptpx_result_zero_row))) /\ ((bcf_index_bptpx_result_zero_row = 0 /\ bcf_value_bptpx_result_zero_row = 1) \/ exists bcf_predecessor_bptpx_result_zero_row. bcf_index_bptpx_result_zero_row = S bcf_predecessor_bptpx_result_zero_row /\ bcf_value_bptpx_result_zero_row = 0)))) \/ exists bcf_predecessor_bptpx_result bcf_previous_code_bptpx_result bcf_previous_scale_bptpx_result. bcf_row_index_bptpx_result = S bcf_predecessor_bptpx_result /\ ((((exists bcf_height_bptpx_result_decoded_previous_code. bcf_height_bptpx_result_decoded_previous_code + S (bcf_previous_code_bptpx_result) = S ((S (bcf_predecessor_bptpx_result)) * bc)) /\ exists bcf_quotient_bptpx_result_decoded_previous_code. bb = bcf_quotient_bptpx_result_decoded_previous_code * S ((S (bcf_predecessor_bptpx_result)) * bc) + (bcf_previous_code_bptpx_result))) /\ ((((exists bcf_height_bptpx_result_decoded_previous_scale. bcf_height_bptpx_result_decoded_previous_scale + S (bcf_previous_scale_bptpx_result) = S ((S (bcf_predecessor_bptpx_result)) * sc)) /\ exists bcf_quotient_bptpx_result_decoded_previous_scale. sb = bcf_quotient_bptpx_result_decoded_previous_scale * S ((S (bcf_predecessor_bptpx_result)) * sc) + (bcf_previous_scale_bptpx_result))) /\ (forall bcf_index_bptpx_result_row_step. (exists bcf_lt_gap_bptpx_result_row_step_bound. bcf_lt_gap_bptpx_result_row_step_bound + S (bcf_index_bptpx_result_row_step) = w) -> exists bcf_value_bptpx_result_row_step. ((((exists bcf_height_bptpx_result_row_step_entry. bcf_height_bptpx_result_row_step_entry + S (bcf_value_bptpx_result_row_step) = S ((S (bcf_index_bptpx_result_row_step)) * bcf_row_scale_bptpx_result)) /\ exists bcf_quotient_bptpx_result_row_step_entry. bcf_row_code_bptpx_result = bcf_quotient_bptpx_result_row_step_entry * S ((S (bcf_index_bptpx_result_row_step)) * bcf_row_scale_bptpx_result) + (bcf_value_bptpx_result_row_step))) /\ ((bcf_index_bptpx_result_row_step = 0 /\ bcf_value_bptpx_result_row_step = 1) \/ exists bcf_predecessor_bptpx_result_row_step bcf_left_bptpx_result_row_step bcf_right_bptpx_result_row_step. bcf_index_bptpx_result_row_step = S bcf_predecessor_bptpx_result_row_step /\ ((((exists bcf_height_bptpx_result_row_step_previous_left. bcf_height_bptpx_result_row_step_previous_left + S (bcf_left_bptpx_result_row_step) = S ((S (bcf_predecessor_bptpx_result_row_step)) * bcf_previous_scale_bptpx_result)) /\ exists bcf_quotient_bptpx_result_row_step_previous_left. bcf_previous_code_bptpx_result = bcf_quotient_bptpx_result_row_step_previous_left * S ((S (bcf_predecessor_bptpx_result_row_step)) * bcf_previous_scale_bptpx_result) + (bcf_left_bptpx_result_row_step))) /\ ((((exists bcf_height_bptpx_result_row_step_previous_right. bcf_height_bptpx_result_row_step_previous_right + S (bcf_right_bptpx_result_row_step) = S ((S (S (bcf_predecessor_bptpx_result_row_step))) * bcf_previous_scale_bptpx_result)) /\ exists bcf_quotient_bptpx_result_row_step_previous_right. bcf_previous_code_bptpx_result = bcf_quotient_bptpx_result_row_step_previous_right * S ((S (S (bcf_predecessor_bptpx_result_row_step))) * bcf_previous_scale_bptpx_result) + (bcf_right_bptpx_result_row_step))) /\ bcf_value_bptpx_result_row_step = bcf_left_bptpx_result_row_step + bcf_right_bptpx_result_row_step)))))))))))Structural proof guide
Every finite width and height has a nested beta Pascal table.
Direct prerequisites: add_eq_zero_right, succ_ne_zero, beta_pascal_table_prefix_extend. The authored body proceeds by structural induction (1), case analysis (5), intermediate claims (3).
Proof neighborhood
Direct dependencies
Direct dependents
Formal native tactic body
Dependencies are hypotheses of the historical Alpha-v12 body receipt. The complete historical Alpha-v18 proof bundle independently checks every dependency; current Alpha v25 preserves that checked theorem use without changing Stable membership.
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 (3)
01Fix variables and assumptionsL1–1
Work with arbitrary variables or the premises of the current implication.
- L1
intro w
02Induction on rL2–2
Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.
- L2
induction r
03Construct an explicit witnessL3–6
04Fix variables and assumptionsL7–8
05Separate the logical casesL9–10
06Establish hsiL11–18
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add eq zero right.
07Establish hpreviousL19–20
Establish this local claim before using it. It is not an additional assumption.
- L19
have hprevious : ∃ bb. ∃ bc. ∃ sb. ∃ sc. ∀ x. Lt(x,r) → ∃ y. ∃ z. BetaAt(bb,bc,x,y) ∧ (BetaAt(sb,sc,x,z) ∧ (x = 0 ∧ (∀ n. Lt(n,w) → ∃ m. BetaAt(y,z,n,m) ∧ (n = 0 ∧ m = 1 ∨ (∃ k. n = S k ∧ m = 0))) ∨ (∃ n. ∃ m. ∃ k. x = S n ∧ (BetaAt(bb,bc,n,m) ∧ (BetaAt(sb,sc,n,k) ∧ (∀ i. Lt(i,w) → ∃ j. BetaAt(y,z,i,j) ∧ (i = 0 ∧ j = 1 ∨ (∃ u. ∃ v. ∃ x0. i = S u ∧ (BetaAt(m,k,u,v) ∧ (BetaAt(m,k,S u,x0) ∧ j = v + x0))))))))))Definitions: LtBetaAt - L20
exact IH
08Separate the logical casesL21–24
09Establish hnextL25–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta pascal table prefix extend.
- L25
have hnext : ∃ bb. ∃ bc. ∃ sb. ∃ sc. ∀ x. Lt(x,S r) → ∃ y. ∃ z. BetaAt(bb,bc,x,y) ∧ (BetaAt(sb,sc,x,z) ∧ (x = 0 ∧ (∀ n. Lt(n,w) → ∃ m. BetaAt(y,z,n,m) ∧ (n = 0 ∧ m = 1 ∨ (∃ k. n = S k ∧ m = 0))) ∨ (∃ n. ∃ m. ∃ k. x = S n ∧ (BetaAt(bb,bc,n,m) ∧ (BetaAt(sb,sc,n,k) ∧ (∀ i. Lt(i,w) → ∃ j. BetaAt(y,z,i,j) ∧ (i = 0 ∧ j = 1 ∨ (∃ u. ∃ v. ∃ x0. i = S u ∧ (BetaAt(m,k,u,v) ∧ (BetaAt(m,k,S u,x0) ∧ j = v + x0))))))))))Definitions: LtBetaAt - L26
specialize beta_pascal_table_prefix_extend x - L27
specialize beta_pascal_table_prefix_extend x1 - L28
specialize beta_pascal_table_prefix_extend x2 - L29
specialize beta_pascal_table_prefix_extend x3 - L30
specialize beta_pascal_table_prefix_extend w - L31
specialize beta_pascal_table_prefix_extend r - L32
apply beta_pascal_table_prefix_extend - L33
exact hprevious_witness_witness_witness_witness - L34
exact hnext
Original exact command ledger · 34 lines
- 0001
intro w - 0002
induction r - 0003
exists 0 - 0004
exists 0 - 0005
exists 0 - 0006
exists 0 - 0007
intro i - 0008
intro hi - 0009
exfalso - 0010
cases hi - 0011
have hsi : S i = 0 - 0012
specialize add_eq_zero_right x - 0013
specialize add_eq_zero_right (S i) - 0014
apply add_eq_zero_right - 0015
exact hi_witness - 0016
specialize succ_ne_zero i - 0017
apply succ_ne_zero - 0018
exact hsi - 0019
have hprevious : exists bb bc sb sc. (forall bcf_row_index_bptpx_previous. (exists bcf_lt_gap_bptpx_previous_row_bound. bcf_lt_gap_bptpx_previous_row_bound + S (bcf_row_index_bptpx_previous) = r) -> exists bcf_row_code_bptpx_previous bcf_row_scale_bptpx_previous. ((((exists bcf_height_bptpx_previous_decoded_row_code. bcf_height_bptpx_previous_decoded_row_code + S (bcf_row_code_bptpx_previous) = S ((S (bcf_row_index_bptpx_previous)) * bc)) /\ exists bcf_quotient_bptpx_previous_decoded_row_code. bb = bcf_quotient_bptpx_previous_decoded_row_code * S ((S (bcf_row_index_bptpx_previous)) * bc) + (bcf_row_code_bptpx_previous))) /\ ((((exists bcf_height_bptpx_previous_decoded_row_scale. bcf_height_bptpx_previous_decoded_row_scale + S (bcf_row_scale_bptpx_previous) = S ((S (bcf_row_index_bptpx_previous)) * sc)) /\ exists bcf_quotient_bptpx_previous_decoded_row_scale. sb = bcf_quotient_bptpx_previous_decoded_row_scale * S ((S (bcf_row_index_bptpx_previous)) * sc) + (bcf_row_scale_bptpx_previous))) /\ ((bcf_row_index_bptpx_previous = 0 /\ (forall bcf_index_bptpx_previous_zero_row. (exists bcf_lt_gap_bptpx_previous_zero_row_bound. bcf_lt_gap_bptpx_previous_zero_row_bound + S (bcf_index_bptpx_previous_zero_row) = w) -> exists bcf_value_bptpx_previous_zero_row. ((((exists bcf_height_bptpx_previous_zero_row_entry. bcf_height_bptpx_previous_zero_row_entry + S (bcf_value_bptpx_previous_zero_row) = S ((S (bcf_index_bptpx_previous_zero_row)) * bcf_row_scale_bptpx_previous)) /\ exists bcf_quotient_bptpx_previous_zero_row_entry. bcf_row_code_bptpx_previous = bcf_quotient_bptpx_previous_zero_row_entry * S ((S (bcf_index_bptpx_previous_zero_row)) * bcf_row_scale_bptpx_previous) + (bcf_value_bptpx_previous_zero_row))) /\ ((bcf_index_bptpx_previous_zero_row = 0 /\ bcf_value_bptpx_previous_zero_row = 1) \/ exists bcf_predecessor_bptpx_previous_zero_row. bcf_index_bptpx_previous_zero_row = S bcf_predecessor_bptpx_previous_zero_row /\ bcf_value_bptpx_previous_zero_row = 0)))) \/ exists bcf_predecessor_bptpx_previous bcf_previous_code_bptpx_previous bcf_previous_scale_bptpx_previous. bcf_row_index_bptpx_previous = S bcf_predecessor_bptpx_previous /\ ((((exists bcf_height_bptpx_previous_decoded_previous_code. bcf_height_bptpx_previous_decoded_previous_code + S (bcf_previous_code_bptpx_previous) = S ((S (bcf_predecessor_bptpx_previous)) * bc)) /\ exists bcf_quotient_bptpx_previous_decoded_previous_code. bb = bcf_quotient_bptpx_previous_decoded_previous_code * S ((S (bcf_predecessor_bptpx_previous)) * bc) + (bcf_previous_code_bptpx_previous))) /\ ((((exists bcf_height_bptpx_previous_decoded_previous_scale. bcf_height_bptpx_previous_decoded_previous_scale + S (bcf_previous_scale_bptpx_previous) = S ((S (bcf_predecessor_bptpx_previous)) * sc)) /\ exists bcf_quotient_bptpx_previous_decoded_previous_scale. sb = bcf_quotient_bptpx_previous_decoded_previous_scale * S ((S (bcf_predecessor_bptpx_previous)) * sc) + (bcf_previous_scale_bptpx_previous))) /\ (forall bcf_index_bptpx_previous_row_step. (exists bcf_lt_gap_bptpx_previous_row_step_bound. bcf_lt_gap_bptpx_previous_row_step_bound + S (bcf_index_bptpx_previous_row_step) = w) -> exists bcf_value_bptpx_previous_row_step. ((((exists bcf_height_bptpx_previous_row_step_entry. bcf_height_bptpx_previous_row_step_entry + S (bcf_value_bptpx_previous_row_step) = S ((S (bcf_index_bptpx_previous_row_step)) * bcf_row_scale_bptpx_previous)) /\ exists bcf_quotient_bptpx_previous_row_step_entry. bcf_row_code_bptpx_previous = bcf_quotient_bptpx_previous_row_step_entry * S ((S (bcf_index_bptpx_previous_row_step)) * bcf_row_scale_bptpx_previous) + (bcf_value_bptpx_previous_row_step))) /\ ((bcf_index_bptpx_previous_row_step = 0 /\ bcf_value_bptpx_previous_row_step = 1) \/ exists bcf_predecessor_bptpx_previous_row_step bcf_left_bptpx_previous_row_step bcf_right_bptpx_previous_row_step. bcf_index_bptpx_previous_row_step = S bcf_predecessor_bptpx_previous_row_step /\ ((((exists bcf_height_bptpx_previous_row_step_previous_left. bcf_height_bptpx_previous_row_step_previous_left + S (bcf_left_bptpx_previous_row_step) = S ((S (bcf_predecessor_bptpx_previous_row_step)) * bcf_previous_scale_bptpx_previous)) /\ exists bcf_quotient_bptpx_previous_row_step_previous_left. bcf_previous_code_bptpx_previous = bcf_quotient_bptpx_previous_row_step_previous_left * S ((S (bcf_predecessor_bptpx_previous_row_step)) * bcf_previous_scale_bptpx_previous) + (bcf_left_bptpx_previous_row_step))) /\ ((((exists bcf_height_bptpx_previous_row_step_previous_right. bcf_height_bptpx_previous_row_step_previous_right + S (bcf_right_bptpx_previous_row_step) = S ((S (S (bcf_predecessor_bptpx_previous_row_step))) * bcf_previous_scale_bptpx_previous)) /\ exists bcf_quotient_bptpx_previous_row_step_previous_right. bcf_previous_code_bptpx_previous = bcf_quotient_bptpx_previous_row_step_previous_right * S ((S (S (bcf_predecessor_bptpx_previous_row_step))) * bcf_previous_scale_bptpx_previous) + (bcf_right_bptpx_previous_row_step))) /\ bcf_value_bptpx_previous_row_step = bcf_left_bptpx_previous_row_step + bcf_right_bptpx_previous_row_step))))))))))) - 0020
exact IH - 0021
cases hprevious - 0022
cases hprevious_witness - 0023
cases hprevious_witness_witness - 0024
cases hprevious_witness_witness_witness - 0025
have hnext : exists bb bc sb sc. (forall bcf_row_index_bptpx_successor. (exists bcf_lt_gap_bptpx_successor_row_bound. bcf_lt_gap_bptpx_successor_row_bound + S (bcf_row_index_bptpx_successor) = S (r)) -> exists bcf_row_code_bptpx_successor bcf_row_scale_bptpx_successor. ((((exists bcf_height_bptpx_successor_decoded_row_code. bcf_height_bptpx_successor_decoded_row_code + S (bcf_row_code_bptpx_successor) = S ((S (bcf_row_index_bptpx_successor)) * bc)) /\ exists bcf_quotient_bptpx_successor_decoded_row_code. bb = bcf_quotient_bptpx_successor_decoded_row_code * S ((S (bcf_row_index_bptpx_successor)) * bc) + (bcf_row_code_bptpx_successor))) /\ ((((exists bcf_height_bptpx_successor_decoded_row_scale. bcf_height_bptpx_successor_decoded_row_scale + S (bcf_row_scale_bptpx_successor) = S ((S (bcf_row_index_bptpx_successor)) * sc)) /\ exists bcf_quotient_bptpx_successor_decoded_row_scale. sb = bcf_quotient_bptpx_successor_decoded_row_scale * S ((S (bcf_row_index_bptpx_successor)) * sc) + (bcf_row_scale_bptpx_successor))) /\ ((bcf_row_index_bptpx_successor = 0 /\ (forall bcf_index_bptpx_successor_zero_row. (exists bcf_lt_gap_bptpx_successor_zero_row_bound. bcf_lt_gap_bptpx_successor_zero_row_bound + S (bcf_index_bptpx_successor_zero_row) = w) -> exists bcf_value_bptpx_successor_zero_row. ((((exists bcf_height_bptpx_successor_zero_row_entry. bcf_height_bptpx_successor_zero_row_entry + S (bcf_value_bptpx_successor_zero_row) = S ((S (bcf_index_bptpx_successor_zero_row)) * bcf_row_scale_bptpx_successor)) /\ exists bcf_quotient_bptpx_successor_zero_row_entry. bcf_row_code_bptpx_successor = bcf_quotient_bptpx_successor_zero_row_entry * S ((S (bcf_index_bptpx_successor_zero_row)) * bcf_row_scale_bptpx_successor) + (bcf_value_bptpx_successor_zero_row))) /\ ((bcf_index_bptpx_successor_zero_row = 0 /\ bcf_value_bptpx_successor_zero_row = 1) \/ exists bcf_predecessor_bptpx_successor_zero_row. bcf_index_bptpx_successor_zero_row = S bcf_predecessor_bptpx_successor_zero_row /\ bcf_value_bptpx_successor_zero_row = 0)))) \/ exists bcf_predecessor_bptpx_successor bcf_previous_code_bptpx_successor bcf_previous_scale_bptpx_successor. bcf_row_index_bptpx_successor = S bcf_predecessor_bptpx_successor /\ ((((exists bcf_height_bptpx_successor_decoded_previous_code. bcf_height_bptpx_successor_decoded_previous_code + S (bcf_previous_code_bptpx_successor) = S ((S (bcf_predecessor_bptpx_successor)) * bc)) /\ exists bcf_quotient_bptpx_successor_decoded_previous_code. bb = bcf_quotient_bptpx_successor_decoded_previous_code * S ((S (bcf_predecessor_bptpx_successor)) * bc) + (bcf_previous_code_bptpx_successor))) /\ ((((exists bcf_height_bptpx_successor_decoded_previous_scale. bcf_height_bptpx_successor_decoded_previous_scale + S (bcf_previous_scale_bptpx_successor) = S ((S (bcf_predecessor_bptpx_successor)) * sc)) /\ exists bcf_quotient_bptpx_successor_decoded_previous_scale. sb = bcf_quotient_bptpx_successor_decoded_previous_scale * S ((S (bcf_predecessor_bptpx_successor)) * sc) + (bcf_previous_scale_bptpx_successor))) /\ (forall bcf_index_bptpx_successor_row_step. (exists bcf_lt_gap_bptpx_successor_row_step_bound. bcf_lt_gap_bptpx_successor_row_step_bound + S (bcf_index_bptpx_successor_row_step) = w) -> exists bcf_value_bptpx_successor_row_step. ((((exists bcf_height_bptpx_successor_row_step_entry. bcf_height_bptpx_successor_row_step_entry + S (bcf_value_bptpx_successor_row_step) = S ((S (bcf_index_bptpx_successor_row_step)) * bcf_row_scale_bptpx_successor)) /\ exists bcf_quotient_bptpx_successor_row_step_entry. bcf_row_code_bptpx_successor = bcf_quotient_bptpx_successor_row_step_entry * S ((S (bcf_index_bptpx_successor_row_step)) * bcf_row_scale_bptpx_successor) + (bcf_value_bptpx_successor_row_step))) /\ ((bcf_index_bptpx_successor_row_step = 0 /\ bcf_value_bptpx_successor_row_step = 1) \/ exists bcf_predecessor_bptpx_successor_row_step bcf_left_bptpx_successor_row_step bcf_right_bptpx_successor_row_step. bcf_index_bptpx_successor_row_step = S bcf_predecessor_bptpx_successor_row_step /\ ((((exists bcf_height_bptpx_successor_row_step_previous_left. bcf_height_bptpx_successor_row_step_previous_left + S (bcf_left_bptpx_successor_row_step) = S ((S (bcf_predecessor_bptpx_successor_row_step)) * bcf_previous_scale_bptpx_successor)) /\ exists bcf_quotient_bptpx_successor_row_step_previous_left. bcf_previous_code_bptpx_successor = bcf_quotient_bptpx_successor_row_step_previous_left * S ((S (bcf_predecessor_bptpx_successor_row_step)) * bcf_previous_scale_bptpx_successor) + (bcf_left_bptpx_successor_row_step))) /\ ((((exists bcf_height_bptpx_successor_row_step_previous_right. bcf_height_bptpx_successor_row_step_previous_right + S (bcf_right_bptpx_successor_row_step) = S ((S (S (bcf_predecessor_bptpx_successor_row_step))) * bcf_previous_scale_bptpx_successor)) /\ exists bcf_quotient_bptpx_successor_row_step_previous_right. bcf_previous_code_bptpx_successor = bcf_quotient_bptpx_successor_row_step_previous_right * S ((S (S (bcf_predecessor_bptpx_successor_row_step))) * bcf_previous_scale_bptpx_successor) + (bcf_right_bptpx_successor_row_step))) /\ bcf_value_bptpx_successor_row_step = bcf_left_bptpx_successor_row_step + bcf_right_bptpx_successor_row_step))))))))))) - 0026
specialize beta_pascal_table_prefix_extend x - 0027
specialize beta_pascal_table_prefix_extend x1 - 0028
specialize beta_pascal_table_prefix_extend x2 - 0029
specialize beta_pascal_table_prefix_extend x3 - 0030
specialize beta_pascal_table_prefix_extend w - 0031
specialize beta_pascal_table_prefix_extend r - 0032
apply beta_pascal_table_prefix_extend - 0033
exact hprevious_witness_witness_witness_witness - 0034
exact hnext