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. ∀ z. ∀ d. ∀ n. (∀ x. Lt(x,n) → ∃ y. BetaAt(z,d,x,y) ∧ (Lt(y,l) ∧ BetaAt(b,c,y,x))) → InjectivePrefix(z,d,n)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
5 occurrences
In local proof propositions
14 occurrences
Exact expanded native-PA statement
forall b c l z d n. (forall fom_value_injective_choice. (exists fom_gap_injective_choice_value_bound. fom_gap_injective_choice_value_bound + S (fom_value_injective_choice) = n) -> exists fom_index_injective_choice. ((((exists fom_beta_height_injective_choice_choice_entry. fom_beta_height_injective_choice_choice_entry + S (fom_index_injective_choice) = S ((S (fom_value_injective_choice)) * d)) /\ exists fom_beta_quotient_injective_choice_choice_entry. z = fom_beta_quotient_injective_choice_choice_entry * S ((S (fom_value_injective_choice)) * d) + (fom_index_injective_choice))) /\ ((exists fom_gap_injective_choice_index_bound. fom_gap_injective_choice_index_bound + S (fom_index_injective_choice) = l) /\ (((exists fom_beta_height_injective_choice_source_entry. fom_beta_height_injective_choice_source_entry + S (fom_value_injective_choice) = S ((S (fom_index_injective_choice)) * c)) /\ exists fom_beta_quotient_injective_choice_source_entry. b = fom_beta_quotient_injective_choice_source_entry * S ((S (fom_index_injective_choice)) * c) + (fom_value_injective_choice)))))) -> (forall fp_i_injective_result fp_j_injective_result fp_value_injective_result. (exists fp_gap_injective_result_i. fp_gap_injective_result_i + S fp_i_injective_result = n) -> (exists fp_gap_injective_result_j. fp_gap_injective_result_j + S fp_j_injective_result = n) -> (((exists ff_h_injective_result_left. ff_h_injective_result_left + S (fp_value_injective_result) = S ((S (fp_i_injective_result)) * d)) /\ exists ff_q_injective_result_left. z = ff_q_injective_result_left * S ((S (fp_i_injective_result)) * d) + (fp_value_injective_result))) -> (((exists ff_h_injective_result_right. ff_h_injective_result_right + S (fp_value_injective_result) = S ((S (fp_j_injective_result)) * d)) /\ exists ff_q_injective_result_right. z = ff_q_injective_result_right * S ((S (fp_j_injective_result)) * d) + (fp_value_injective_result))) -> fp_i_injective_result = fp_j_injective_result)Proof neighborhood
Direct theorem prerequisites
Direct 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 (1)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–14
03Establish hchoice_leftL15–16
Establish this local claim before using it. It is not an additional assumption.
- L15
have hchoice_left : ∀ fom_value_injective_choice_left. Lt(fom_value_injective_choice_left,n) → ∃ x. BetaAt(z,d,fom_value_injective_choice_left,x) ∧ (Lt(x,l) ∧ BetaAt(b,c,x,fom_value_injective_choice_left))Definitions: Lt(fom_value_injective_choice_left,n)BetaAt(z,d,fom_value_injective_choice_left,x)Lt(x,l)BetaAt(b,c,x,fom_value_injective_choice_left)Original native command in the exact edition - L16
exact hchoice
04Establish hchoice_rightL17–19
Establish this local claim before using it. It is not an additional assumption.
- L17
have hchoice_right : ∀ fom_value_injective_choice_right. Lt(fom_value_injective_choice_right,n) → ∃ x. BetaAt(z,d,fom_value_injective_choice_right,x) ∧ (Lt(x,l) ∧ BetaAt(b,c,x,fom_value_injective_choice_right))Definitions: Lt(fom_value_injective_choice_right,n)BetaAt(z,d,fom_value_injective_choice_right,x)Lt(x,l)BetaAt(b,c,x,fom_value_injective_choice_right)Original native command in the exact edition - L18
exact hchoice - L19
specialize hchoice_left i
05Establish hleftL20–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hchoice left.
- L20
have hleft : ∃ a. BetaAt(z,d,i,a) ∧ (Lt(a,l) ∧ BetaAt(b,c,a,i))Definitions: BetaAt(z,d,i,a)Lt(a,l)BetaAt(b,c,a,i)Original native command in the exact edition - L21
apply hchoice_left - L22
exact hi - L23
specialize hchoice_right j
06Establish hrightL24–26
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hchoice right.
- L24
have hright : ∃ a. BetaAt(z,d,j,a) ∧ (Lt(a,l) ∧ BetaAt(b,c,a,j))Definitions: BetaAt(z,d,j,a)Lt(a,l)BetaAt(b,c,a,j)Original native command in the exact edition - L25
apply hchoice_right - L26
exact hj
07Separate the logical casesL27–32
08Establish hvxL33–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
09Establish hvx1L42–50
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
10Establish hxxL51–60
Establish this local claim before using it. It is not an additional assumption.
Original defined command ledger · 65 lines
- 0001
intro b - 0002
intro c - 0003
intro l - 0004
intro z - 0005
intro d - 0006
intro n - 0007
intro hchoice - 0008
intro i - 0009
intro j - 0010
intro v - 0011
intro hi - 0012
intro hj - 0013
intro hvi - 0014
intro hvj - 0015
have hchoice_left : ∀ fom_value_injective_choice_left. Lt(fom_value_injective_choice_left,n) → ∃ x. BetaAt(z,d,fom_value_injective_choice_left,x) ∧ (Lt(x,l) ∧ BetaAt(b,c,x,fom_value_injective_choice_left))Exact native replay line
have hchoice_left : forall fom_value_injective_choice_left. (exists fom_gap_injective_choice_left_value_bound. fom_gap_injective_choice_left_value_bound + S (fom_value_injective_choice_left) = n) -> exists fom_index_injective_choice_left. ((((exists fom_beta_height_injective_choice_left_choice_entry. fom_beta_height_injective_choice_left_choice_entry + S (fom_index_injective_choice_left) = S ((S (fom_value_injective_choice_left)) * d)) /\ exists fom_beta_quotient_injective_choice_left_choice_entry. z = fom_beta_quotient_injective_choice_left_choice_entry * S ((S (fom_value_injective_choice_left)) * d) + (fom_index_injective_choice_left))) /\ ((exists fom_gap_injective_choice_left_index_bound. fom_gap_injective_choice_left_index_bound + S (fom_index_injective_choice_left) = l) /\ (((exists fom_beta_height_injective_choice_left_source_entry. fom_beta_height_injective_choice_left_source_entry + S (fom_value_injective_choice_left) = S ((S (fom_index_injective_choice_left)) * c)) /\ exists fom_beta_quotient_injective_choice_left_source_entry. b = fom_beta_quotient_injective_choice_left_source_entry * S ((S (fom_index_injective_choice_left)) * c) + (fom_value_injective_choice_left))))) - 0016
exact hchoice - 0017
have hchoice_right : ∀ fom_value_injective_choice_right. Lt(fom_value_injective_choice_right,n) → ∃ x. BetaAt(z,d,fom_value_injective_choice_right,x) ∧ (Lt(x,l) ∧ BetaAt(b,c,x,fom_value_injective_choice_right))Exact native replay line
have hchoice_right : forall fom_value_injective_choice_right. (exists fom_gap_injective_choice_right_value_bound. fom_gap_injective_choice_right_value_bound + S (fom_value_injective_choice_right) = n) -> exists fom_index_injective_choice_right. ((((exists fom_beta_height_injective_choice_right_choice_entry. fom_beta_height_injective_choice_right_choice_entry + S (fom_index_injective_choice_right) = S ((S (fom_value_injective_choice_right)) * d)) /\ exists fom_beta_quotient_injective_choice_right_choice_entry. z = fom_beta_quotient_injective_choice_right_choice_entry * S ((S (fom_value_injective_choice_right)) * d) + (fom_index_injective_choice_right))) /\ ((exists fom_gap_injective_choice_right_index_bound. fom_gap_injective_choice_right_index_bound + S (fom_index_injective_choice_right) = l) /\ (((exists fom_beta_height_injective_choice_right_source_entry. fom_beta_height_injective_choice_right_source_entry + S (fom_value_injective_choice_right) = S ((S (fom_index_injective_choice_right)) * c)) /\ exists fom_beta_quotient_injective_choice_right_source_entry. b = fom_beta_quotient_injective_choice_right_source_entry * S ((S (fom_index_injective_choice_right)) * c) + (fom_value_injective_choice_right))))) - 0018
exact hchoice - 0019
specialize hchoice_left i - 0020
have hleft : ∃ a. BetaAt(z,d,i,a) ∧ (Lt(a,l) ∧ BetaAt(b,c,a,i))Exact native replay line
have hleft : exists a. (((exists h. h + S a = S ((S i) * d)) /\ exists q. z = q * S ((S i) * d) + a) /\ ((exists h. h + S a = l) /\ ((exists h. h + S i = S ((S a) * c)) /\ exists q. b = q * S ((S a) * c) + i))) - 0021
apply hchoice_left - 0022
exact hi - 0023
specialize hchoice_right j - 0024
have hright : ∃ a. BetaAt(z,d,j,a) ∧ (Lt(a,l) ∧ BetaAt(b,c,a,j))Exact native replay line
have hright : exists a. (((exists h. h + S a = S ((S j) * d)) /\ exists q. z = q * S ((S j) * d) + a) /\ ((exists h. h + S a = l) /\ ((exists h. h + S j = S ((S a) * c)) /\ exists q. b = q * S ((S a) * c) + j))) - 0025
apply hchoice_right - 0026
exact hj - 0027
cases hleft - 0028
cases hleft_witness - 0029
cases hleft_witness_right - 0030
cases hright - 0031
cases hright_witness - 0032
cases hright_witness_right - 0033
have hvx : v = x - 0034
specialize beta_at_unique z - 0035
specialize beta_at_unique d - 0036
specialize beta_at_unique i - 0037
specialize beta_at_unique v - 0038
specialize beta_at_unique x - 0039
apply beta_at_unique - 0040
exact hvi - 0041
exact hleft_witness_left - 0042
have hvx1 : v = x1 - 0043
specialize beta_at_unique z - 0044
specialize beta_at_unique d - 0045
specialize beta_at_unique j - 0046
specialize beta_at_unique v - 0047
specialize beta_at_unique x1 - 0048
apply beta_at_unique - 0049
exact hvj - 0050
exact hright_witness_left - 0051
have hxx : x = x1 - 0052
trans v - 0053
symm - 0054
exact hvx - 0055
exact hvx1 - 0056
rewrite hxx at hleft_witness_right_right - 0057
rewrite hxx at hleft_witness_right_right - 0058
specialize beta_at_unique b - 0059
specialize beta_at_unique c - 0060
specialize beta_at_unique x1 - 0061
specialize beta_at_unique i - 0062
specialize beta_at_unique j - 0063
apply beta_at_unique - 0064
exact hleft_witness_right_right - 0065
exact hright_witness_right_right