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
∀ b. ∀ c. ∀ k. ∀ n. Repeat(b,c,1,k) → BitCount(b,c,k,n) → n = kEvery 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 b c k n. (forall eis_one_index_initial_segment_all_one_source. (exists eis_lt_gap_initial_segment_all_one_source_bound. eis_lt_gap_initial_segment_all_one_source_bound + S (eis_one_index_initial_segment_all_one_source) = k) -> (((exists ff_h_eis_initial_segment_all_one_source_decoded. ff_h_eis_initial_segment_all_one_source_decoded + S (1) = S ((S (eis_one_index_initial_segment_all_one_source)) * c)) /\ exists ff_q_eis_initial_segment_all_one_source_decoded. b = ff_q_eis_initial_segment_all_one_source_decoded * S ((S (eis_one_index_initial_segment_all_one_source)) * c) + (1)))) -> (((exists ff_u_initial_segment_all_one_count_sum ff_v_initial_segment_all_one_count_sum. ((((exists ff_h_initial_segment_all_one_count_sum_start. ff_h_initial_segment_all_one_count_sum_start + S (0) = S ((S (0)) * ff_v_initial_segment_all_one_count_sum)) /\ exists ff_q_initial_segment_all_one_count_sum_start. ff_u_initial_segment_all_one_count_sum = ff_q_initial_segment_all_one_count_sum_start * S ((S (0)) * ff_v_initial_segment_all_one_count_sum) + (0))) /\ ((((exists ff_h_initial_segment_all_one_count_sum_terminal. ff_h_initial_segment_all_one_count_sum_terminal + S (n) = S ((S (k)) * ff_v_initial_segment_all_one_count_sum)) /\ exists ff_q_initial_segment_all_one_count_sum_terminal. ff_u_initial_segment_all_one_count_sum = ff_q_initial_segment_all_one_count_sum_terminal * S ((S (k)) * ff_v_initial_segment_all_one_count_sum) + (n))) /\ forall ff_i_initial_segment_all_one_count_sum. (exists ff_lt_initial_segment_all_one_count_sum_bound. ff_lt_initial_segment_all_one_count_sum_bound + S ff_i_initial_segment_all_one_count_sum = k) -> exists ff_a_initial_segment_all_one_count_sum ff_r_initial_segment_all_one_count_sum ff_s_initial_segment_all_one_count_sum. ((((exists ff_h_initial_segment_all_one_count_sum_summand. ff_h_initial_segment_all_one_count_sum_summand + S (ff_a_initial_segment_all_one_count_sum) = S ((S (ff_i_initial_segment_all_one_count_sum)) * c)) /\ exists ff_q_initial_segment_all_one_count_sum_summand. b = ff_q_initial_segment_all_one_count_sum_summand * S ((S (ff_i_initial_segment_all_one_count_sum)) * c) + (ff_a_initial_segment_all_one_count_sum))) /\ ((((exists ff_h_initial_segment_all_one_count_sum_partial. ff_h_initial_segment_all_one_count_sum_partial + S (ff_r_initial_segment_all_one_count_sum) = S ((S (ff_i_initial_segment_all_one_count_sum)) * ff_v_initial_segment_all_one_count_sum)) /\ exists ff_q_initial_segment_all_one_count_sum_partial. ff_u_initial_segment_all_one_count_sum = ff_q_initial_segment_all_one_count_sum_partial * S ((S (ff_i_initial_segment_all_one_count_sum)) * ff_v_initial_segment_all_one_count_sum) + (ff_r_initial_segment_all_one_count_sum))) /\ ((((exists ff_h_initial_segment_all_one_count_sum_successor. ff_h_initial_segment_all_one_count_sum_successor + S (ff_s_initial_segment_all_one_count_sum) = S ((S (S ff_i_initial_segment_all_one_count_sum)) * ff_v_initial_segment_all_one_count_sum)) /\ exists ff_q_initial_segment_all_one_count_sum_successor. ff_u_initial_segment_all_one_count_sum = ff_q_initial_segment_all_one_count_sum_successor * S ((S (S ff_i_initial_segment_all_one_count_sum)) * ff_v_initial_segment_all_one_count_sum) + (ff_s_initial_segment_all_one_count_sum))) /\ ff_s_initial_segment_all_one_count_sum = ff_r_initial_segment_all_one_count_sum + ff_a_initial_segment_all_one_count_sum)))))) /\ (forall ff_i_initial_segment_all_one_count_bits. (exists ff_lt_initial_segment_all_one_count_bits_bound. ff_lt_initial_segment_all_one_count_bits_bound + S ff_i_initial_segment_all_one_count_bits = k) -> exists ff_bit_initial_segment_all_one_count_bits. ((((exists ff_h_initial_segment_all_one_count_bits_decoded. ff_h_initial_segment_all_one_count_bits_decoded + S (ff_bit_initial_segment_all_one_count_bits) = S ((S (ff_i_initial_segment_all_one_count_bits)) * c)) /\ exists ff_q_initial_segment_all_one_count_bits_decoded. b = ff_q_initial_segment_all_one_count_bits_decoded * S ((S (ff_i_initial_segment_all_one_count_bits)) * c) + (ff_bit_initial_segment_all_one_count_bits))) /\ (ff_bit_initial_segment_all_one_count_bits = 0 \/ ff_bit_initial_segment_all_one_count_bits = 1))))) -> n = kProof neighborhood
Direct theorem prerequisites
BT008N bit_count_zero BT008O bit_count_succ_decompose BT008J all_bits_prefix_succ BT0042 beta_at_unique BT0018 le_succ BT000E le_reflDirect 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
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 (5)
01Fix variables and assumptionsL1–2
02Induction on kL3–12
Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.
03Use earlier factsL13–13
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L13
exact hcount
04Fix variables and assumptionsL14–16
05Establish hdecompL17–25
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply bit count succ decompose.
- L17
have hdecomp : ∃ a. ∃ r. BetaAt(b,c,k,a) ∧ (BitCount(b,c,k,r) ∧ ((a = 0 ∨ a = 1) ∧ n = r + a))Definitions: BetaAt(b,c,k,a)BitCount(b,c,k,r)Original native command in the exact edition - L18
specialize bit_count_succ_decompose b - L19
specialize bit_count_succ_decompose c - L20
specialize bit_count_succ_decompose k - L21
specialize bit_count_succ_decompose (S k) - L22
specialize bit_count_succ_decompose n - L23
apply bit_count_succ_decompose - L24
refl - L25
exact hcount
06Separate the logical casesL26–30
07Establish hone_previousL31–39
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hone.
08Establish hrL40–44
09Establish hlast_oneL45–49
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hone.
- L45
have hlast_one : BetaAt(b,c,k,1)Definitions: BetaAt(b,c,k,1)Original native command in the exact edition - L46
specialize hone k - L47
apply hone - L48
specialize le_refl (S k) - L49
exact le_refl
10Establish haL50–59
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
Original defined command ledger · 62 lines
- 0001
intro b - 0002
intro c - 0003
induction k - 0004
intro n - 0005
intro hone - 0006
intro hcount - 0007
specialize bit_count_zero b - 0008
specialize bit_count_zero c - 0009
specialize bit_count_zero 0 - 0010
specialize bit_count_zero n - 0011
apply bit_count_zero - 0012
refl - 0013
exact hcount - 0014
intro n - 0015
intro hone - 0016
intro hcount - 0017
have hdecomp : ∃ a. ∃ r. BetaAt(b,c,k,a) ∧ (BitCount(b,c,k,r) ∧ ((a = 0 ∨ a = 1) ∧ n = r + a))Exact native replay line
have hdecomp : exists a r. (((exists ff_h_initial_segment_all_one_last. ff_h_initial_segment_all_one_last + S (a) = S ((S (k)) * c)) /\ exists ff_q_initial_segment_all_one_last. b = ff_q_initial_segment_all_one_last * S ((S (k)) * c) + (a))) /\ ((((exists ff_u_initial_segment_all_one_prefix_count_sum ff_v_initial_segment_all_one_prefix_count_sum. ((((exists ff_h_initial_segment_all_one_prefix_count_sum_start. ff_h_initial_segment_all_one_prefix_count_sum_start + S (0) = S ((S (0)) * ff_v_initial_segment_all_one_prefix_count_sum)) /\ exists ff_q_initial_segment_all_one_prefix_count_sum_start. ff_u_initial_segment_all_one_prefix_count_sum = ff_q_initial_segment_all_one_prefix_count_sum_start * S ((S (0)) * ff_v_initial_segment_all_one_prefix_count_sum) + (0))) /\ ((((exists ff_h_initial_segment_all_one_prefix_count_sum_terminal. ff_h_initial_segment_all_one_prefix_count_sum_terminal + S (r) = S ((S (k)) * ff_v_initial_segment_all_one_prefix_count_sum)) /\ exists ff_q_initial_segment_all_one_prefix_count_sum_terminal. ff_u_initial_segment_all_one_prefix_count_sum = ff_q_initial_segment_all_one_prefix_count_sum_terminal * S ((S (k)) * ff_v_initial_segment_all_one_prefix_count_sum) + (r))) /\ forall ff_i_initial_segment_all_one_prefix_count_sum. (exists ff_lt_initial_segment_all_one_prefix_count_sum_bound. ff_lt_initial_segment_all_one_prefix_count_sum_bound + S ff_i_initial_segment_all_one_prefix_count_sum = k) -> exists ff_a_initial_segment_all_one_prefix_count_sum ff_r_initial_segment_all_one_prefix_count_sum ff_s_initial_segment_all_one_prefix_count_sum. ((((exists ff_h_initial_segment_all_one_prefix_count_sum_summand. ff_h_initial_segment_all_one_prefix_count_sum_summand + S (ff_a_initial_segment_all_one_prefix_count_sum) = S ((S (ff_i_initial_segment_all_one_prefix_count_sum)) * c)) /\ exists ff_q_initial_segment_all_one_prefix_count_sum_summand. b = ff_q_initial_segment_all_one_prefix_count_sum_summand * S ((S (ff_i_initial_segment_all_one_prefix_count_sum)) * c) + (ff_a_initial_segment_all_one_prefix_count_sum))) /\ ((((exists ff_h_initial_segment_all_one_prefix_count_sum_partial. ff_h_initial_segment_all_one_prefix_count_sum_partial + S (ff_r_initial_segment_all_one_prefix_count_sum) = S ((S (ff_i_initial_segment_all_one_prefix_count_sum)) * ff_v_initial_segment_all_one_prefix_count_sum)) /\ exists ff_q_initial_segment_all_one_prefix_count_sum_partial. ff_u_initial_segment_all_one_prefix_count_sum = ff_q_initial_segment_all_one_prefix_count_sum_partial * S ((S (ff_i_initial_segment_all_one_prefix_count_sum)) * ff_v_initial_segment_all_one_prefix_count_sum) + (ff_r_initial_segment_all_one_prefix_count_sum))) /\ ((((exists ff_h_initial_segment_all_one_prefix_count_sum_successor. ff_h_initial_segment_all_one_prefix_count_sum_successor + S (ff_s_initial_segment_all_one_prefix_count_sum) = S ((S (S ff_i_initial_segment_all_one_prefix_count_sum)) * ff_v_initial_segment_all_one_prefix_count_sum)) /\ exists ff_q_initial_segment_all_one_prefix_count_sum_successor. ff_u_initial_segment_all_one_prefix_count_sum = ff_q_initial_segment_all_one_prefix_count_sum_successor * S ((S (S ff_i_initial_segment_all_one_prefix_count_sum)) * ff_v_initial_segment_all_one_prefix_count_sum) + (ff_s_initial_segment_all_one_prefix_count_sum))) /\ ff_s_initial_segment_all_one_prefix_count_sum = ff_r_initial_segment_all_one_prefix_count_sum + ff_a_initial_segment_all_one_prefix_count_sum)))))) /\ (forall ff_i_initial_segment_all_one_prefix_count_bits. (exists ff_lt_initial_segment_all_one_prefix_count_bits_bound. ff_lt_initial_segment_all_one_prefix_count_bits_bound + S ff_i_initial_segment_all_one_prefix_count_bits = k) -> exists ff_bit_initial_segment_all_one_prefix_count_bits. ((((exists ff_h_initial_segment_all_one_prefix_count_bits_decoded. ff_h_initial_segment_all_one_prefix_count_bits_decoded + S (ff_bit_initial_segment_all_one_prefix_count_bits) = S ((S (ff_i_initial_segment_all_one_prefix_count_bits)) * c)) /\ exists ff_q_initial_segment_all_one_prefix_count_bits_decoded. b = ff_q_initial_segment_all_one_prefix_count_bits_decoded * S ((S (ff_i_initial_segment_all_one_prefix_count_bits)) * c) + (ff_bit_initial_segment_all_one_prefix_count_bits))) /\ (ff_bit_initial_segment_all_one_prefix_count_bits = 0 \/ ff_bit_initial_segment_all_one_prefix_count_bits = 1))))) /\ ((a = 0 \/ a = 1) /\ n = r + a)) - 0018
specialize bit_count_succ_decompose b - 0019
specialize bit_count_succ_decompose c - 0020
specialize bit_count_succ_decompose k - 0021
specialize bit_count_succ_decompose (S k) - 0022
specialize bit_count_succ_decompose n - 0023
apply bit_count_succ_decompose - 0024
refl - 0025
exact hcount - 0026
cases hdecomp - 0027
cases hdecomp_witness - 0028
cases hdecomp_witness_witness - 0029
cases hdecomp_witness_witness_right - 0030
cases hdecomp_witness_witness_right_right - 0031
have hone_previous : Repeat(b,c,1,k)Exact native replay line
have hone_previous : forall eis_one_index_initial_segment_all_one_previous. (exists eis_lt_gap_initial_segment_all_one_previous_bound. eis_lt_gap_initial_segment_all_one_previous_bound + S (eis_one_index_initial_segment_all_one_previous) = k) -> (((exists ff_h_eis_initial_segment_all_one_previous_decoded. ff_h_eis_initial_segment_all_one_previous_decoded + S (1) = S ((S (eis_one_index_initial_segment_all_one_previous)) * c)) /\ exists ff_q_eis_initial_segment_all_one_previous_decoded. b = ff_q_eis_initial_segment_all_one_previous_decoded * S ((S (eis_one_index_initial_segment_all_one_previous)) * c) + (1))) - 0032
intro j - 0033
intro hj - 0034
specialize hone j - 0035
apply hone - 0036
specialize le_succ (S j) - 0037
specialize le_succ k - 0038
apply le_succ - 0039
exact hj - 0040
have hr : x1 = k - 0041
specialize IH x1 - 0042
apply IH - 0043
exact hone_previous - 0044
exact hdecomp_witness_witness_right_left - 0045
have hlast_one : BetaAt(b,c,k,1)Exact native replay line
have hlast_one : ((exists ff_h_initial_segment_all_one_terminal. ff_h_initial_segment_all_one_terminal + S (1) = S ((S (k)) * c)) /\ exists ff_q_initial_segment_all_one_terminal. b = ff_q_initial_segment_all_one_terminal * S ((S (k)) * c) + (1)) - 0046
specialize hone k - 0047
apply hone - 0048
specialize le_refl (S k) - 0049
exact le_refl - 0050
have ha : x = 1 - 0051
specialize beta_at_unique b - 0052
specialize beta_at_unique c - 0053
specialize beta_at_unique k - 0054
specialize beta_at_unique x - 0055
specialize beta_at_unique 1 - 0056
apply beta_at_unique - 0057
exact hdecomp_witness_witness_left - 0058
exact hlast_one - 0059
rewrite hdecomp_witness_witness_right_right_right - 0060
rewrite hr - 0061
rewrite ha - 0062
simp