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.
The carry relation contains actual quotient columns and carry bits, not the desired valuation. The theorem includes all finite lists and zero parts. It uses sequential binary-column carries; a separate simultaneous-grid or permutation-invariance theorem is not asserted.
Exact theorem in conservative defined notation
∀ b. ∀ c. ∀ sb. ∀ sc. ∀ cb. ∀ cc. ∀ l. ∀ a. ∀ u. ∀ C. MultinomialBinomialPrefix(b,c,sb,sc,cb,cc,l) → BetaAt(b,c,l,a) → BetaAt(sb,sc,l,u) → Choose(u + a,u,C) → ∃ x. ∃ y. MultinomialBinomialPrefix(b,c,sb,sc,x,y,S l)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 76 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.
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.
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–14
03Establish hextL15–20
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta prefix extend.
- L15
have hext : ∃ nb. ∃ nc. BetaAt(nb,nc,l,C) ∧ (∀ x. ∀ y. Lt(x,l) → BetaAt(cb,cc,x,y) → BetaAt(nb,nc,x,y))Definitions: BetaAt(nb,nc,l,C)Lt(x,l)BetaAt(cb,cc,x,y)BetaAt(nb,nc,x,y)Original native command in the exact edition - L16
specialize beta_prefix_extend l - L17
specialize beta_prefix_extend cb - L18
specialize beta_prefix_extend cc - L19
specialize beta_prefix_extend C - L20
apply beta_prefix_extend
04Separate the logical casesL21–23
05Construct an explicit witnessL24–25
06Fix variables and assumptionsL26–27
07Establish hsplitL28–35
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le eq or lt.
08Separate the logical casesL36–36
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L36
cases hsplit
09Construct an explicit witnessL37–39
10Separate the logical casesL40–40
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L40
split
11Calculate and transport equalitiesL41–42
12Use earlier factsL43–43
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L43
exact ha
13Separate the logical casesL44–44
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L44
split
14Calculate and transport equalitiesL45–46
15Use earlier factsL47–47
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L47
exact hu
16Separate the logical casesL48–48
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L48
split
17Use earlier factsL49–49
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L49
exact hC
18Calculate and transport equalitiesL50–51
19Use earlier factsL52–52
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L52
exact hext_witness_witness_left
20Establish hpointL53–56
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply h.
- L53
have hpoint : ∃ mkm_value_binextend_point. ∃ mkm_partial_binextend_point. ∃ mkm_factor_binextend_point. BetaAt(b,c,i,mkm_value_binextend_point) ∧ (BetaAt(sb,sc,i,mkm_partial_binextend_point) ∧ (Choose(mkm_partial_binextend_point + mkm_value_binextend_point,mkm_partial_binextend_point,mkm_factor_binextend_point) ∧ BetaAt(cb,cc,i,mkm_factor_binextend_point)))Definitions: BetaAt(b,c,i,mkm_value_binextend_point)BetaAt(sb,sc,i,mkm_partial_binextend_point)Choose(mkm_partial_binextend_point + mkm_value_binextend_point,mkm_partial_binextend_point,mkm_factor_binextend_point)BetaAt(cb,cc,i,mkm_factor_binextend_point)Original native command in the exact edition - L54
specialize h i - L55
apply h - L56
exact hsplit_right
21Separate the logical casesL57–62
22Construct an explicit witnessL63–65
23Separate the logical casesL66–66
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L66
split
24Use earlier factsL67–67
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L67
exact hpoint_witness_witness_witness_left
25Separate the logical casesL68–68
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L68
split
26Use earlier factsL69–69
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L69
exact hpoint_witness_witness_witness_right_left
27Separate the logical casesL70–70
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L70
split
28Use earlier factsL71–76
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original defined command ledger · 76 lines
- 0001
intro b - 0002
intro c - 0003
intro sb - 0004
intro sc - 0005
intro cb - 0006
intro cc - 0007
intro l - 0008
intro a - 0009
intro u - 0010
intro C - 0011
intro h - 0012
intro ha - 0013
intro hu - 0014
intro hC - 0015
have hext : ∃ nb. ∃ nc. BetaAt(nb,nc,l,C) ∧ (∀ x. ∀ y. Lt(x,l) → BetaAt(cb,cc,x,y) → BetaAt(nb,nc,x,y)) - 0016
specialize beta_prefix_extend l - 0017
specialize beta_prefix_extend cb - 0018
specialize beta_prefix_extend cc - 0019
specialize beta_prefix_extend C - 0020
apply beta_prefix_extend - 0021
cases hext - 0022
cases hext_witness - 0023
cases hext_witness_witness - 0024
exists x - 0025
exists x1 - 0026
intro i - 0027
intro hi - 0028
have hsplit : i = l ∨ Lt(i,l) - 0029
specialize le_eq_or_lt i - 0030
specialize le_eq_or_lt l - 0031
apply le_eq_or_lt - 0032
specialize le_of_succ_le_succ i - 0033
specialize le_of_succ_le_succ l - 0034
apply le_of_succ_le_succ - 0035
exact hi - 0036
cases hsplit - 0037
exists a - 0038
exists u - 0039
exists C - 0040
split - 0041
rewrite hsplit_left - 0042
rewrite hsplit_left - 0043
exact ha - 0044
split - 0045
rewrite hsplit_left - 0046
rewrite hsplit_left - 0047
exact hu - 0048
split - 0049
exact hC - 0050
rewrite hsplit_left - 0051
rewrite hsplit_left - 0052
exact hext_witness_witness_left - 0053
have hpoint : ∃ mkm_value_binextend_point. ∃ mkm_partial_binextend_point. ∃ mkm_factor_binextend_point. BetaAt(b,c,i,mkm_value_binextend_point) ∧ (BetaAt(sb,sc,i,mkm_partial_binextend_point) ∧ (Choose(mkm_partial_binextend_point + mkm_value_binextend_point,mkm_partial_binextend_point,mkm_factor_binextend_point) ∧ BetaAt(cb,cc,i,mkm_factor_binextend_point))) - 0054
specialize h i - 0055
apply h - 0056
exact hsplit_right - 0057
cases hpoint - 0058
cases hpoint_witness - 0059
cases hpoint_witness_witness - 0060
cases hpoint_witness_witness_witness - 0061
cases hpoint_witness_witness_witness_right - 0062
cases hpoint_witness_witness_witness_right_right - 0063
exists x2 - 0064
exists x3 - 0065
exists x4 - 0066
split - 0067
exact hpoint_witness_witness_witness_left - 0068
split - 0069
exact hpoint_witness_witness_witness_right_left - 0070
split - 0071
exact hpoint_witness_witness_witness_right_right_left - 0072
specialize hext_witness_witness_right i - 0073
specialize hext_witness_witness_right x4 - 0074
apply hext_witness_witness_right - 0075
exact hsplit_right - 0076
exact hpoint_witness_witness_witness_right_right_right