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. ∀ n. ∀ sn. sn = S n → BoundedPrefix(b,c,sn) → InjectivePrefix(b,c,sn) → SurjectivePrefix(b,c,n) → SurjectivePrefix(b,c,sn)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
4 occurrences
In local proof propositions
1 occurrences
Exact expanded native-PA statement
forall b c n sn. sn = S n -> (forall fp_i_bounded_succ. (exists fp_gap_bounded_succ_index. fp_gap_bounded_succ_index + S fp_i_bounded_succ = sn) -> exists fp_value_bounded_succ. ((((exists ff_h_bounded_succ_entry. ff_h_bounded_succ_entry + S (fp_value_bounded_succ) = S ((S (fp_i_bounded_succ)) * c)) /\ exists ff_q_bounded_succ_entry. b = ff_q_bounded_succ_entry * S ((S (fp_i_bounded_succ)) * c) + (fp_value_bounded_succ))) /\ (exists fp_gap_bounded_succ_value. fp_gap_bounded_succ_value + S fp_value_bounded_succ = sn))) -> (forall fp_i_inj_succ fp_j_inj_succ fp_value_inj_succ. (exists fp_gap_inj_succ_i. fp_gap_inj_succ_i + S fp_i_inj_succ = sn) -> (exists fp_gap_inj_succ_j. fp_gap_inj_succ_j + S fp_j_inj_succ = sn) -> (((exists ff_h_inj_succ_left. ff_h_inj_succ_left + S (fp_value_inj_succ) = S ((S (fp_i_inj_succ)) * c)) /\ exists ff_q_inj_succ_left. b = ff_q_inj_succ_left * S ((S (fp_i_inj_succ)) * c) + (fp_value_inj_succ))) -> (((exists ff_h_inj_succ_right. ff_h_inj_succ_right + S (fp_value_inj_succ) = S ((S (fp_j_inj_succ)) * c)) /\ exists ff_q_inj_succ_right. b = ff_q_inj_succ_right * S ((S (fp_j_inj_succ)) * c) + (fp_value_inj_succ))) -> fp_i_inj_succ = fp_j_inj_succ) -> (forall fp_value_surj_n. (exists fp_gap_surj_n_value. fp_gap_surj_n_value + S fp_value_surj_n = n) -> exists fp_i_surj_n. ((exists fp_gap_surj_n_index. fp_gap_surj_n_index + S fp_i_surj_n = n) /\ (((exists ff_h_surj_n_entry. ff_h_surj_n_entry + S (fp_value_surj_n) = S ((S (fp_i_surj_n)) * c)) /\ exists ff_q_surj_n_entry. b = ff_q_surj_n_entry * S ((S (fp_i_surj_n)) * c) + (fp_value_surj_n))))) -> (forall fp_value_surj_succ. (exists fp_gap_surj_succ_value. fp_gap_surj_succ_value + S fp_value_surj_succ = sn) -> exists fp_i_surj_succ. ((exists fp_gap_surj_succ_index. fp_gap_surj_succ_index + S fp_i_surj_succ = sn) /\ (((exists ff_h_surj_succ_entry. ff_h_surj_succ_entry + S (fp_value_surj_succ) = S ((S (fp_i_surj_succ)) * c)) /\ exists ff_q_surj_succ_entry. b = ff_q_surj_succ_entry * S ((S (fp_i_surj_succ)) * c) + (fp_value_surj_succ)))))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 (2)
01Fix variables and assumptionsL1–8
02Establish hlastL9–18
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite last is top from prefix surjective.
- L9
have hlast : BetaAt(b,c,n,n)Definitions: BetaAt(b,c,n,n)Original native command in the exact edition - L10
specialize finite_last_is_top_from_prefix_surjective b - L11
specialize finite_last_is_top_from_prefix_surjective c - L12
specialize finite_last_is_top_from_prefix_surjective n - L13
specialize finite_last_is_top_from_prefix_surjective sn - L14
apply finite_last_is_top_from_prefix_surjective - L15
exact hsn - L16
exact hbounded - L17
exact hinj - L18
exact hsurj
03Use earlier factsL19–26
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original defined command ledger · 26 lines
- 0001
intro b - 0002
intro c - 0003
intro n - 0004
intro sn - 0005
intro hsn - 0006
intro hbounded - 0007
intro hinj - 0008
intro hsurj - 0009
have hlast : BetaAt(b,c,n,n)Exact native replay line
have hlast : ((exists ff_h_last_n. ff_h_last_n + S (n) = S ((S (n)) * c)) /\ exists ff_q_last_n. b = ff_q_last_n * S ((S (n)) * c) + (n)) - 0010
specialize finite_last_is_top_from_prefix_surjective b - 0011
specialize finite_last_is_top_from_prefix_surjective c - 0012
specialize finite_last_is_top_from_prefix_surjective n - 0013
specialize finite_last_is_top_from_prefix_surjective sn - 0014
apply finite_last_is_top_from_prefix_surjective - 0015
exact hsn - 0016
exact hbounded - 0017
exact hinj - 0018
exact hsurj - 0019
specialize finite_surjective_succ_intro b - 0020
specialize finite_surjective_succ_intro c - 0021
specialize finite_surjective_succ_intro n - 0022
specialize finite_surjective_succ_intro sn - 0023
apply finite_surjective_succ_intro - 0024
exact hsn - 0025
exact hsurj - 0026
exact hlast