Exact expanded PA statement
forall b c n sn. sn = S n -> (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))))) -> (((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))) -> (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)))))Structural proof guide
Generated structural guide
A surjective prefix plus its new top value is surjective at successor length.
Use the direct prerequisites finite_lt_succ_eq_or_lt, le_refl, le_succ as previously established PA formulas.
The proof proceeds by case analysis (3), intermediate claims (2), equality transport (4).
Referenced ingredients
Proof neighborhood
Direct dependencies
Direct dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Stable checked-use theorem is independently kernel-checked when replayed.
- 0001
intro b - 0002
intro c - 0003
intro n - 0004
intro sn - 0005
intro hsn - 0006
intro hsurj - 0007
intro hlast - 0008
rewrite hsn - 0009
rewrite hsn - 0010
intro y - 0011
intro hy - 0012
have hsplit : y = n \/ exists h. h + S y = n - 0013
specialize finite_lt_succ_eq_or_lt n - 0014
specialize finite_lt_succ_eq_or_lt y - 0015
apply finite_lt_succ_eq_or_lt - 0016
exact hy - 0017
cases hsplit - 0018
exists n - 0019
split - 0020
specialize le_refl (S n) - 0021
exact le_refl - 0022
rewrite hsplit_left - 0023
rewrite hsplit_left - 0024
exact hlast - 0025
specialize hsurj y - 0026
have hpre : exists i. ((exists h. h + S i = n) /\ ((exists h. h + S y = S ((S i) * c)) /\ exists q. b = q * S ((S i) * c) + y)) - 0027
apply hsurj - 0028
exact hsplit_right - 0029
cases hpre - 0030
cases hpre_witness - 0031
exists x - 0032
split - 0033
specialize le_succ (S x) - 0034
specialize le_succ n - 0035
apply le_succ - 0036
exact hpre_witness_left - 0037
exact hpre_witness_right