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. ∀ l. ∀ sl. ∀ n. sl = S l → BitCount(b,c,sl,n) → ∃ x. ∃ y. BetaAt(b,c,l,x) ∧ (BitCount(b,c,l,y) ∧ ((x = 0 ∨ x = 1) ∧ n = y + x))Every purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.
Definitions used by this theorem
In the theorem statement
3 occurrences
In local proof propositions
4 occurrences
Exact expanded native-PA statement
forall b c l sl n. sl = S l -> (((exists ff_u_successor_sum ff_v_successor_sum. ((((exists ff_h_successor_sum_start. ff_h_successor_sum_start + S (0) = S ((S (0)) * ff_v_successor_sum)) /\ exists ff_q_successor_sum_start. ff_u_successor_sum = ff_q_successor_sum_start * S ((S (0)) * ff_v_successor_sum) + (0))) /\ ((((exists ff_h_successor_sum_terminal. ff_h_successor_sum_terminal + S (n) = S ((S (sl)) * ff_v_successor_sum)) /\ exists ff_q_successor_sum_terminal. ff_u_successor_sum = ff_q_successor_sum_terminal * S ((S (sl)) * ff_v_successor_sum) + (n))) /\ forall ff_i_successor_sum. (exists ff_lt_successor_sum_bound. ff_lt_successor_sum_bound + S ff_i_successor_sum = sl) -> exists ff_a_successor_sum ff_r_successor_sum ff_s_successor_sum. ((((exists ff_h_successor_sum_summand. ff_h_successor_sum_summand + S (ff_a_successor_sum) = S ((S (ff_i_successor_sum)) * c)) /\ exists ff_q_successor_sum_summand. b = ff_q_successor_sum_summand * S ((S (ff_i_successor_sum)) * c) + (ff_a_successor_sum))) /\ ((((exists ff_h_successor_sum_partial. ff_h_successor_sum_partial + S (ff_r_successor_sum) = S ((S (ff_i_successor_sum)) * ff_v_successor_sum)) /\ exists ff_q_successor_sum_partial. ff_u_successor_sum = ff_q_successor_sum_partial * S ((S (ff_i_successor_sum)) * ff_v_successor_sum) + (ff_r_successor_sum))) /\ ((((exists ff_h_successor_sum_successor. ff_h_successor_sum_successor + S (ff_s_successor_sum) = S ((S (S ff_i_successor_sum)) * ff_v_successor_sum)) /\ exists ff_q_successor_sum_successor. ff_u_successor_sum = ff_q_successor_sum_successor * S ((S (S ff_i_successor_sum)) * ff_v_successor_sum) + (ff_s_successor_sum))) /\ ff_s_successor_sum = ff_r_successor_sum + ff_a_successor_sum)))))) /\ (forall ff_i_successor_bits. (exists ff_lt_successor_bits_bound. ff_lt_successor_bits_bound + S ff_i_successor_bits = sl) -> exists ff_bit_successor_bits. ((((exists ff_h_successor_bits_decoded. ff_h_successor_bits_decoded + S (ff_bit_successor_bits) = S ((S (ff_i_successor_bits)) * c)) /\ exists ff_q_successor_bits_decoded. b = ff_q_successor_bits_decoded * S ((S (ff_i_successor_bits)) * c) + (ff_bit_successor_bits))) /\ (ff_bit_successor_bits = 0 \/ ff_bit_successor_bits = 1))))) -> exists a r. (((exists ff_h_last. ff_h_last + S (a) = S ((S (l)) * c)) /\ exists ff_q_last. b = ff_q_last * S ((S (l)) * c) + (a))) /\ ((((exists ff_u_prefix_sum ff_v_prefix_sum. ((((exists ff_h_prefix_sum_start. ff_h_prefix_sum_start + S (0) = S ((S (0)) * ff_v_prefix_sum)) /\ exists ff_q_prefix_sum_start. ff_u_prefix_sum = ff_q_prefix_sum_start * S ((S (0)) * ff_v_prefix_sum) + (0))) /\ ((((exists ff_h_prefix_sum_terminal. ff_h_prefix_sum_terminal + S (r) = S ((S (l)) * ff_v_prefix_sum)) /\ exists ff_q_prefix_sum_terminal. ff_u_prefix_sum = ff_q_prefix_sum_terminal * S ((S (l)) * ff_v_prefix_sum) + (r))) /\ forall ff_i_prefix_sum. (exists ff_lt_prefix_sum_bound. ff_lt_prefix_sum_bound + S ff_i_prefix_sum = l) -> exists ff_a_prefix_sum ff_r_prefix_sum ff_s_prefix_sum. ((((exists ff_h_prefix_sum_summand. ff_h_prefix_sum_summand + S (ff_a_prefix_sum) = S ((S (ff_i_prefix_sum)) * c)) /\ exists ff_q_prefix_sum_summand. b = ff_q_prefix_sum_summand * S ((S (ff_i_prefix_sum)) * c) + (ff_a_prefix_sum))) /\ ((((exists ff_h_prefix_sum_partial. ff_h_prefix_sum_partial + S (ff_r_prefix_sum) = S ((S (ff_i_prefix_sum)) * ff_v_prefix_sum)) /\ exists ff_q_prefix_sum_partial. ff_u_prefix_sum = ff_q_prefix_sum_partial * S ((S (ff_i_prefix_sum)) * ff_v_prefix_sum) + (ff_r_prefix_sum))) /\ ((((exists ff_h_prefix_sum_successor. ff_h_prefix_sum_successor + S (ff_s_prefix_sum) = S ((S (S ff_i_prefix_sum)) * ff_v_prefix_sum)) /\ exists ff_q_prefix_sum_successor. ff_u_prefix_sum = ff_q_prefix_sum_successor * S ((S (S ff_i_prefix_sum)) * ff_v_prefix_sum) + (ff_s_prefix_sum))) /\ ff_s_prefix_sum = ff_r_prefix_sum + ff_a_prefix_sum)))))) /\ (forall ff_i_prefix_bits. (exists ff_lt_prefix_bits_bound. ff_lt_prefix_bits_bound + S ff_i_prefix_bits = l) -> exists ff_bit_prefix_bits. ((((exists ff_h_prefix_bits_decoded. ff_h_prefix_bits_decoded + S (ff_bit_prefix_bits) = S ((S (ff_i_prefix_bits)) * c)) /\ exists ff_q_prefix_bits_decoded. b = ff_q_prefix_bits_decoded * S ((S (ff_i_prefix_bits)) * c) + (ff_bit_prefix_bits))) /\ (ff_bit_prefix_bits = 0 \/ ff_bit_prefix_bits = 1))))) /\ ((a = 0 \/ a = 1) /\ n = r + a))Proof neighborhood
Direct theorem prerequisites
PA003Y beta_sum_succ_decompose PA0040 all_bits_prefix_succ PA0041 all_bits_last_succ PA002F beta_at_uniqueDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed command.
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 (4)
01Fix variables and assumptionsL1–7
02Calculate and transport equalitiesL8–11
03Separate the logical casesL12–12
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L12
cases hcount
04Establish hsumL13–19
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
- L13
have hsum : ∃ a. ∃ r. BetaAt(b,c,l,a) ∧ (Sum(b,c,l,r) ∧ n = r + a)Definitions: BetaAt(b,c,l,a)Sum(b,c,l,r)Original native command in the exact edition - L14
specialize beta_sum_succ_decompose b - L15
specialize beta_sum_succ_decompose c - L16
specialize beta_sum_succ_decompose l - L17
specialize beta_sum_succ_decompose n - L18
apply beta_sum_succ_decompose - L19
exact hcount_left
05Separate the logical casesL20–23
06Establish hlastL24–31
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply all bits last succ.
- L24
have hlast : ∃ a. BetaAt(b,c,l,a) ∧ (a = 0 ∨ a = 1)Definitions: BetaAt(b,c,l,a)Original native command in the exact edition - L25
specialize all_bits_last_succ b - L26
specialize all_bits_last_succ c - L27
specialize all_bits_last_succ l - L28
specialize all_bits_last_succ (S l) - L29
apply all_bits_last_succ - L30
refl - L31
exact hcount_right
07Separate the logical casesL32–33
08Establish haL34–42
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
09Establish hprefixL43–50
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply all bits prefix succ.
- L43
have hprefix : AllBits(b,c,l)Definitions: AllBits(b,c,l)Original native command in the exact edition - L44
specialize all_bits_prefix_succ b - L45
specialize all_bits_prefix_succ c - L46
specialize all_bits_prefix_succ l - L47
specialize all_bits_prefix_succ (S l) - L48
apply all_bits_prefix_succ - L49
refl - L50
exact hcount_right
10Construct an explicit witnessL51–52
11Separate the logical casesL53–53
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L53
split
12Use earlier factsL54–54
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L54
exact hsum_witness_witness_left
13Separate the logical casesL55–56
14Use earlier factsL57–58
15Separate the logical casesL59–59
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L59
split
16Calculate and transport equalitiesL60–61
Original defined command ledger · 63 lines
- 0001
intro b - 0002
intro c - 0003
intro l - 0004
intro sl - 0005
intro n - 0006
intro hsl - 0007
intro hcount - 0008
rewrite hsl at hcount - 0009
rewrite hsl at hcount - 0010
rewrite hsl at hcount - 0011
rewrite hsl at hcount - 0012
cases hcount - 0013
have hsum : ∃ a. ∃ r. BetaAt(b,c,l,a) ∧ (Sum(b,c,l,r) ∧ n = r + a)Exact native replay line
have hsum : exists a r. (((exists ff_h_sum_last. ff_h_sum_last + S (a) = S ((S (l)) * c)) /\ exists ff_q_sum_last. b = ff_q_sum_last * S ((S (l)) * c) + (a))) /\ ((exists ff_u_sum_prefix ff_v_sum_prefix. ((((exists ff_h_sum_prefix_start. ff_h_sum_prefix_start + S (0) = S ((S (0)) * ff_v_sum_prefix)) /\ exists ff_q_sum_prefix_start. ff_u_sum_prefix = ff_q_sum_prefix_start * S ((S (0)) * ff_v_sum_prefix) + (0))) /\ ((((exists ff_h_sum_prefix_terminal. ff_h_sum_prefix_terminal + S (r) = S ((S (l)) * ff_v_sum_prefix)) /\ exists ff_q_sum_prefix_terminal. ff_u_sum_prefix = ff_q_sum_prefix_terminal * S ((S (l)) * ff_v_sum_prefix) + (r))) /\ forall ff_i_sum_prefix. (exists ff_lt_sum_prefix_bound. ff_lt_sum_prefix_bound + S ff_i_sum_prefix = l) -> exists ff_a_sum_prefix ff_r_sum_prefix ff_s_sum_prefix. ((((exists ff_h_sum_prefix_summand. ff_h_sum_prefix_summand + S (ff_a_sum_prefix) = S ((S (ff_i_sum_prefix)) * c)) /\ exists ff_q_sum_prefix_summand. b = ff_q_sum_prefix_summand * S ((S (ff_i_sum_prefix)) * c) + (ff_a_sum_prefix))) /\ ((((exists ff_h_sum_prefix_partial. ff_h_sum_prefix_partial + S (ff_r_sum_prefix) = S ((S (ff_i_sum_prefix)) * ff_v_sum_prefix)) /\ exists ff_q_sum_prefix_partial. ff_u_sum_prefix = ff_q_sum_prefix_partial * S ((S (ff_i_sum_prefix)) * ff_v_sum_prefix) + (ff_r_sum_prefix))) /\ ((((exists ff_h_sum_prefix_successor. ff_h_sum_prefix_successor + S (ff_s_sum_prefix) = S ((S (S ff_i_sum_prefix)) * ff_v_sum_prefix)) /\ exists ff_q_sum_prefix_successor. ff_u_sum_prefix = ff_q_sum_prefix_successor * S ((S (S ff_i_sum_prefix)) * ff_v_sum_prefix) + (ff_s_sum_prefix))) /\ ff_s_sum_prefix = ff_r_sum_prefix + ff_a_sum_prefix)))))) /\ n = r + a) - 0014
specialize beta_sum_succ_decompose b - 0015
specialize beta_sum_succ_decompose c - 0016
specialize beta_sum_succ_decompose l - 0017
specialize beta_sum_succ_decompose n - 0018
apply beta_sum_succ_decompose - 0019
exact hcount_left - 0020
cases hsum - 0021
cases hsum_witness - 0022
cases hsum_witness_witness - 0023
cases hsum_witness_witness_right - 0024
have hlast : ∃ a. BetaAt(b,c,l,a) ∧ (a = 0 ∨ a = 1)Exact native replay line
have hlast : exists a. ((((exists ff_h_bits_last. ff_h_bits_last + S (a) = S ((S (l)) * c)) /\ exists ff_q_bits_last. b = ff_q_bits_last * S ((S (l)) * c) + (a))) /\ (a = 0 \/ a = 1)) - 0025
specialize all_bits_last_succ b - 0026
specialize all_bits_last_succ c - 0027
specialize all_bits_last_succ l - 0028
specialize all_bits_last_succ (S l) - 0029
apply all_bits_last_succ - 0030
refl - 0031
exact hcount_right - 0032
cases hlast - 0033
cases hlast_witness - 0034
have ha : x = x2 - 0035
specialize beta_at_unique b - 0036
specialize beta_at_unique c - 0037
specialize beta_at_unique l - 0038
specialize beta_at_unique x - 0039
specialize beta_at_unique x2 - 0040
apply beta_at_unique - 0041
exact hsum_witness_witness_left - 0042
exact hlast_witness_left - 0043
have hprefix : AllBits(b,c,l)Exact native replay line
have hprefix : forall ff_i_kept_prefix. (exists ff_lt_kept_prefix_bound. ff_lt_kept_prefix_bound + S ff_i_kept_prefix = l) -> exists ff_bit_kept_prefix. ((((exists ff_h_kept_prefix_decoded. ff_h_kept_prefix_decoded + S (ff_bit_kept_prefix) = S ((S (ff_i_kept_prefix)) * c)) /\ exists ff_q_kept_prefix_decoded. b = ff_q_kept_prefix_decoded * S ((S (ff_i_kept_prefix)) * c) + (ff_bit_kept_prefix))) /\ (ff_bit_kept_prefix = 0 \/ ff_bit_kept_prefix = 1)) - 0044
specialize all_bits_prefix_succ b - 0045
specialize all_bits_prefix_succ c - 0046
specialize all_bits_prefix_succ l - 0047
specialize all_bits_prefix_succ (S l) - 0048
apply all_bits_prefix_succ - 0049
refl - 0050
exact hcount_right - 0051
exists x - 0052
exists x1 - 0053
split - 0054
exact hsum_witness_witness_left - 0055
split - 0056
split - 0057
exact hsum_witness_witness_right_left - 0058
exact hprefix - 0059
split - 0060
rewrite ha - 0061
rewrite ha - 0062
exact hlast_witness_right - 0063
exact hsum_witness_witness_right_right