Exact expanded 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 i. (exists h. h + S i = n) -> ~(((exists ff_h_top_i. ff_h_top_i + S (n) = S ((S (i)) * c)) /\ exists ff_q_top_i. b = ff_q_top_i * S ((S (i)) * c) + (n)))) -> (forall fp_i_bounded_prefix. (exists fp_gap_bounded_prefix_index. fp_gap_bounded_prefix_index + S fp_i_bounded_prefix = n) -> exists fp_value_bounded_prefix. ((((exists ff_h_bounded_prefix_entry. ff_h_bounded_prefix_entry + S (fp_value_bounded_prefix) = S ((S (fp_i_bounded_prefix)) * c)) /\ exists ff_q_bounded_prefix_entry. b = ff_q_bounded_prefix_entry * S ((S (fp_i_bounded_prefix)) * c) + (fp_value_bounded_prefix))) /\ (exists fp_gap_bounded_prefix_value. fp_gap_bounded_prefix_value + S fp_value_bounded_prefix = n)))Structural proof guide
Generated structural guide
If a successor prefix omits its top value, its old prefix is bounded by the predecessor.
Use the direct prerequisites le_succ, finite_lt_succ_eq_or_lt 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 hbounded - 0007
intro hnotop - 0008
rewrite hsn at hbounded - 0009
rewrite hsn at hbounded - 0010
intro i - 0011
intro hi - 0012
specialize hbounded i - 0013
have hfull : exists x. (((exists h. h + S x = S ((S i) * c)) /\ exists q. b = q * S ((S i) * c) + x) /\ exists h. h + S x = S n) - 0014
apply hbounded - 0015
specialize le_succ (S i) - 0016
specialize le_succ n - 0017
apply le_succ - 0018
exact hi - 0019
cases hfull - 0020
cases hfull_witness - 0021
have hsplit : x = n \/ exists h. h + S x = n - 0022
specialize finite_lt_succ_eq_or_lt n - 0023
specialize finite_lt_succ_eq_or_lt x - 0024
apply finite_lt_succ_eq_or_lt - 0025
exact hfull_witness_right - 0026
cases hsplit - 0027
exfalso - 0028
specialize hnotop i - 0029
apply hnotop - 0030
exact hi - 0031
rewrite <- hsplit_left - 0032
rewrite <- hsplit_left - 0033
exact hfull_witness_left - 0034
exists x - 0035
split - 0036
exact hfull_witness_left - 0037
exact hsplit_right