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. ∀ a. ∀ l. ∀ n. Repeat(b,c,a,l) → Sum(b,c,l,n) → n = l · aEvery 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
2 occurrences
In local proof propositions
3 occurrences
Exact expanded native-PA statement
forall b c a l n. (forall ff_i_repeatsum_repeat. (exists ff_lt_repeatsum_repeat_bound. ff_lt_repeatsum_repeat_bound + S ff_i_repeatsum_repeat = l) -> (((exists ff_h_repeatsum_repeat_decoded. ff_h_repeatsum_repeat_decoded + S (a) = S ((S (ff_i_repeatsum_repeat)) * c)) /\ exists ff_q_repeatsum_repeat_decoded. b = ff_q_repeatsum_repeat_decoded * S ((S (ff_i_repeatsum_repeat)) * c) + (a)))) -> (exists ff_u_repeatsum_sum ff_v_repeatsum_sum. ((((exists ff_h_repeatsum_sum_start. ff_h_repeatsum_sum_start + S (0) = S ((S (0)) * ff_v_repeatsum_sum)) /\ exists ff_q_repeatsum_sum_start. ff_u_repeatsum_sum = ff_q_repeatsum_sum_start * S ((S (0)) * ff_v_repeatsum_sum) + (0))) /\ ((((exists ff_h_repeatsum_sum_terminal. ff_h_repeatsum_sum_terminal + S (n) = S ((S (l)) * ff_v_repeatsum_sum)) /\ exists ff_q_repeatsum_sum_terminal. ff_u_repeatsum_sum = ff_q_repeatsum_sum_terminal * S ((S (l)) * ff_v_repeatsum_sum) + (n))) /\ forall ff_i_repeatsum_sum. (exists ff_lt_repeatsum_sum_bound. ff_lt_repeatsum_sum_bound + S ff_i_repeatsum_sum = l) -> exists ff_a_repeatsum_sum ff_r_repeatsum_sum ff_s_repeatsum_sum. ((((exists ff_h_repeatsum_sum_summand. ff_h_repeatsum_sum_summand + S (ff_a_repeatsum_sum) = S ((S (ff_i_repeatsum_sum)) * c)) /\ exists ff_q_repeatsum_sum_summand. b = ff_q_repeatsum_sum_summand * S ((S (ff_i_repeatsum_sum)) * c) + (ff_a_repeatsum_sum))) /\ ((((exists ff_h_repeatsum_sum_partial. ff_h_repeatsum_sum_partial + S (ff_r_repeatsum_sum) = S ((S (ff_i_repeatsum_sum)) * ff_v_repeatsum_sum)) /\ exists ff_q_repeatsum_sum_partial. ff_u_repeatsum_sum = ff_q_repeatsum_sum_partial * S ((S (ff_i_repeatsum_sum)) * ff_v_repeatsum_sum) + (ff_r_repeatsum_sum))) /\ ((((exists ff_h_repeatsum_sum_successor. ff_h_repeatsum_sum_successor + S (ff_s_repeatsum_sum) = S ((S (S ff_i_repeatsum_sum)) * ff_v_repeatsum_sum)) /\ exists ff_q_repeatsum_sum_successor. ff_u_repeatsum_sum = ff_q_repeatsum_sum_successor * S ((S (S ff_i_repeatsum_sum)) * ff_v_repeatsum_sum) + (ff_s_repeatsum_sum))) /\ ff_s_repeatsum_sum = ff_r_repeatsum_sum + ff_a_repeatsum_sum)))))) -> n = l * aProof neighborhood
Direct theorem prerequisites
PA0047 beta_sum_zero PA003Y beta_sum_succ_decompose PA002O le_succ PA001A le_refl PA004C beta_repeat_entry_eq PA000D mul_zero_left PA000G mul_succ_leftDirect 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 (7)
01Fix variables and assumptionsL1–3
02Induction on lL4–7
03Establish hnL8–17
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum zero.
04Fix variables and assumptionsL18–20
05Establish hdecompL21–27
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
- L21
have hdecomp : ∃ 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 - L22
specialize beta_sum_succ_decompose b - L23
specialize beta_sum_succ_decompose c - L24
specialize beta_sum_succ_decompose l - L25
specialize beta_sum_succ_decompose n - L26
apply beta_sum_succ_decompose - L27
exact hsum
06Separate the logical casesL28–31
07Establish hprefix_repeatL32–40
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hrepeat.
08Establish hprefixL41–45
09Establish hlastL46–55
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta repeat entry eq.
- L46
have hlast : x = a - L47
specialize beta_repeat_entry_eq b - L48
specialize beta_repeat_entry_eq c - L49
specialize beta_repeat_entry_eq a - L50
specialize beta_repeat_entry_eq (S l) - L51
specialize beta_repeat_entry_eq l - L52
specialize beta_repeat_entry_eq x - L53
apply beta_repeat_entry_eq - L54
exact hrepeat - L55
specialize le_refl (S l)
10Use earlier factsL56–57
11Calculate and transport equalitiesL58–60
12Use earlier factsL61–62
13Calculate and transport equalitiesL63–63
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L63
symm
14Use earlier factsL64–64
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L64
exact mul_succ_left
Original defined command ledger · 64 lines
- 0001
intro b - 0002
intro c - 0003
intro a - 0004
induction l - 0005
intro n - 0006
intro hrepeat - 0007
intro hsum - 0008
have hn : n = 0 - 0009
specialize beta_sum_zero b - 0010
specialize beta_sum_zero c - 0011
specialize beta_sum_zero n - 0012
apply beta_sum_zero - 0013
exact hsum - 0014
rewrite hn - 0015
symm - 0016
specialize mul_zero_left a - 0017
exact mul_zero_left - 0018
intro n - 0019
intro hrepeat - 0020
intro hsum - 0021
have hdecomp : ∃ a. ∃ r. BetaAt(b,c,l,a) ∧ (Sum(b,c,l,r) ∧ n = r + a)Exact native replay line
have hdecomp : exists a r. (((exists ff_h_repeatsum_decomp_entry. ff_h_repeatsum_decomp_entry + S (a) = S ((S (l)) * c)) /\ exists ff_q_repeatsum_decomp_entry. b = ff_q_repeatsum_decomp_entry * S ((S (l)) * c) + (a))) /\ ((exists ff_u_repeatsum_decomp_prefix ff_v_repeatsum_decomp_prefix. ((((exists ff_h_repeatsum_decomp_prefix_start. ff_h_repeatsum_decomp_prefix_start + S (0) = S ((S (0)) * ff_v_repeatsum_decomp_prefix)) /\ exists ff_q_repeatsum_decomp_prefix_start. ff_u_repeatsum_decomp_prefix = ff_q_repeatsum_decomp_prefix_start * S ((S (0)) * ff_v_repeatsum_decomp_prefix) + (0))) /\ ((((exists ff_h_repeatsum_decomp_prefix_terminal. ff_h_repeatsum_decomp_prefix_terminal + S (r) = S ((S (l)) * ff_v_repeatsum_decomp_prefix)) /\ exists ff_q_repeatsum_decomp_prefix_terminal. ff_u_repeatsum_decomp_prefix = ff_q_repeatsum_decomp_prefix_terminal * S ((S (l)) * ff_v_repeatsum_decomp_prefix) + (r))) /\ forall ff_i_repeatsum_decomp_prefix. (exists ff_lt_repeatsum_decomp_prefix_bound. ff_lt_repeatsum_decomp_prefix_bound + S ff_i_repeatsum_decomp_prefix = l) -> exists ff_a_repeatsum_decomp_prefix ff_r_repeatsum_decomp_prefix ff_s_repeatsum_decomp_prefix. ((((exists ff_h_repeatsum_decomp_prefix_summand. ff_h_repeatsum_decomp_prefix_summand + S (ff_a_repeatsum_decomp_prefix) = S ((S (ff_i_repeatsum_decomp_prefix)) * c)) /\ exists ff_q_repeatsum_decomp_prefix_summand. b = ff_q_repeatsum_decomp_prefix_summand * S ((S (ff_i_repeatsum_decomp_prefix)) * c) + (ff_a_repeatsum_decomp_prefix))) /\ ((((exists ff_h_repeatsum_decomp_prefix_partial. ff_h_repeatsum_decomp_prefix_partial + S (ff_r_repeatsum_decomp_prefix) = S ((S (ff_i_repeatsum_decomp_prefix)) * ff_v_repeatsum_decomp_prefix)) /\ exists ff_q_repeatsum_decomp_prefix_partial. ff_u_repeatsum_decomp_prefix = ff_q_repeatsum_decomp_prefix_partial * S ((S (ff_i_repeatsum_decomp_prefix)) * ff_v_repeatsum_decomp_prefix) + (ff_r_repeatsum_decomp_prefix))) /\ ((((exists ff_h_repeatsum_decomp_prefix_successor. ff_h_repeatsum_decomp_prefix_successor + S (ff_s_repeatsum_decomp_prefix) = S ((S (S ff_i_repeatsum_decomp_prefix)) * ff_v_repeatsum_decomp_prefix)) /\ exists ff_q_repeatsum_decomp_prefix_successor. ff_u_repeatsum_decomp_prefix = ff_q_repeatsum_decomp_prefix_successor * S ((S (S ff_i_repeatsum_decomp_prefix)) * ff_v_repeatsum_decomp_prefix) + (ff_s_repeatsum_decomp_prefix))) /\ ff_s_repeatsum_decomp_prefix = ff_r_repeatsum_decomp_prefix + ff_a_repeatsum_decomp_prefix)))))) /\ n = r + a) - 0022
specialize beta_sum_succ_decompose b - 0023
specialize beta_sum_succ_decompose c - 0024
specialize beta_sum_succ_decompose l - 0025
specialize beta_sum_succ_decompose n - 0026
apply beta_sum_succ_decompose - 0027
exact hsum - 0028
cases hdecomp - 0029
cases hdecomp_witness - 0030
cases hdecomp_witness_witness - 0031
cases hdecomp_witness_witness_right - 0032
have hprefix_repeat : Repeat(b,c,a,l)Exact native replay line
have hprefix_repeat : forall ff_i_repeatsum_prefix_repeat. (exists ff_lt_repeatsum_prefix_repeat_bound. ff_lt_repeatsum_prefix_repeat_bound + S ff_i_repeatsum_prefix_repeat = l) -> (((exists ff_h_repeatsum_prefix_repeat_decoded. ff_h_repeatsum_prefix_repeat_decoded + S (a) = S ((S (ff_i_repeatsum_prefix_repeat)) * c)) /\ exists ff_q_repeatsum_prefix_repeat_decoded. b = ff_q_repeatsum_prefix_repeat_decoded * S ((S (ff_i_repeatsum_prefix_repeat)) * c) + (a))) - 0033
intro i - 0034
intro hi - 0035
specialize hrepeat i - 0036
apply hrepeat - 0037
specialize le_succ (S i) - 0038
specialize le_succ l - 0039
apply le_succ - 0040
exact hi - 0041
have hprefix : x1 = l * a - 0042
specialize IH x1 - 0043
apply IH - 0044
exact hprefix_repeat - 0045
exact hdecomp_witness_witness_right_left - 0046
have hlast : x = a - 0047
specialize beta_repeat_entry_eq b - 0048
specialize beta_repeat_entry_eq c - 0049
specialize beta_repeat_entry_eq a - 0050
specialize beta_repeat_entry_eq (S l) - 0051
specialize beta_repeat_entry_eq l - 0052
specialize beta_repeat_entry_eq x - 0053
apply beta_repeat_entry_eq - 0054
exact hrepeat - 0055
specialize le_refl (S l) - 0056
exact le_refl - 0057
exact hdecomp_witness_witness_left - 0058
rewrite hdecomp_witness_witness_right_right - 0059
rewrite hprefix - 0060
rewrite hlast - 0061
specialize mul_succ_left l - 0062
specialize mul_succ_left a - 0063
symm - 0064
exact mul_succ_left