Exact expanded PA statement
forall b c i s k. (exists h. h + S i = k) -> exists z d. ((((exists ff_h_replace_entry. ff_h_replace_entry + S (s) = S ((S (i)) * d)) /\ exists ff_q_replace_entry. z = ff_q_replace_entry * S ((S (i)) * d) + (s))) /\ forall j a. (exists h. h + S j = k) -> ~(j = i) -> (((exists ff_h_replace_old. ff_h_replace_old + S (a) = S ((S (j)) * c)) /\ exists ff_q_replace_old. b = ff_q_replace_old * S ((S (j)) * c) + (a))) -> (((exists ff_h_replace_new. ff_h_replace_new + S (a) = S ((S (j)) * d)) /\ exists ff_q_replace_new. z = ff_q_replace_new * S ((S (j)) * d) + (a))))Structural proof guide
Generated structural guide
Recode a finite beta prefix while replacing one interior entry.
Use the direct prerequisites add_eq_zero_right, succ_ne_zero, finite_lt_succ_eq_or_lt, beta_prefix_extend, beta_at_exists, beta_at_unique as previously established PA formulas.
The proof proceeds by structural induction (1), case analysis (14), intermediate claims (7), equality transport (8).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0004 add_eq_zero_right PA0005 succ_ne_zero PA003D finite_lt_succ_eq_or_lt PA002X beta_prefix_extend PA0029 beta_at_exists PA002F beta_at_uniqueDirect 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 i - 0004
intro s - 0005
induction k - 0006
intro hi - 0007
exfalso - 0008
cases hi - 0009
have hsi : S i = 0 - 0010
specialize add_eq_zero_right x - 0011
specialize add_eq_zero_right (S i) - 0012
apply add_eq_zero_right - 0013
exact hi_witness - 0014
specialize succ_ne_zero i - 0015
apply succ_ne_zero - 0016
exact hsi - 0017
intro hi - 0018
have hisplit : i = k \/ exists h. h + S i = k - 0019
specialize finite_lt_succ_eq_or_lt k - 0020
specialize finite_lt_succ_eq_or_lt i - 0021
apply finite_lt_succ_eq_or_lt - 0022
exact hi - 0023
cases hisplit - 0024
specialize beta_prefix_extend k - 0025
specialize beta_prefix_extend b - 0026
specialize beta_prefix_extend c - 0027
specialize beta_prefix_extend s - 0028
cases beta_prefix_extend - 0029
cases beta_prefix_extend_witness - 0030
cases beta_prefix_extend_witness_witness - 0031
exists x - 0032
exists x1 - 0033
split - 0034
rewrite hisplit_left - 0035
rewrite hisplit_left - 0036
exact beta_prefix_extend_witness_witness_left - 0037
intro j - 0038
intro a - 0039
intro hj - 0040
intro hji - 0041
intro hold - 0042
have hjsplit : j = k \/ exists h. h + S j = k - 0043
specialize finite_lt_succ_eq_or_lt k - 0044
specialize finite_lt_succ_eq_or_lt j - 0045
apply finite_lt_succ_eq_or_lt - 0046
exact hj - 0047
cases hjsplit - 0048
exfalso - 0049
apply hji - 0050
trans k - 0051
exact hjsplit_left - 0052
symm - 0053
exact hisplit_left - 0054
specialize beta_prefix_extend_witness_witness_right j - 0055
specialize beta_prefix_extend_witness_witness_right a - 0056
apply beta_prefix_extend_witness_witness_right - 0057
exact hjsplit_right - 0058
exact hold - 0059
have hreplaced : exists z d. (((exists h. h + S s = S ((S i) * d)) /\ exists q. z = q * S ((S i) * d) + s) /\ forall j a. (exists h. h + S j = k) -> ~(j = i) -> ((exists h. h + S a = S ((S j) * c)) /\ exists q. b = q * S ((S j) * c) + a) -> ((exists h. h + S a = S ((S j) * d)) /\ exists q. z = q * S ((S j) * d) + a)) - 0060
apply IH - 0061
exact hisplit_right - 0062
cases hreplaced - 0063
cases hreplaced_witness - 0064
cases hreplaced_witness_witness - 0065
specialize beta_at_exists b - 0066
specialize beta_at_exists c - 0067
specialize beta_at_exists k - 0068
cases beta_at_exists - 0069
specialize beta_prefix_extend k - 0070
specialize beta_prefix_extend x - 0071
specialize beta_prefix_extend x1 - 0072
specialize beta_prefix_extend x2 - 0073
cases beta_prefix_extend - 0074
cases beta_prefix_extend_witness - 0075
cases beta_prefix_extend_witness_witness - 0076
exists x3 - 0077
exists x4 - 0078
split - 0079
specialize beta_prefix_extend_witness_witness_right i - 0080
specialize beta_prefix_extend_witness_witness_right s - 0081
apply beta_prefix_extend_witness_witness_right - 0082
exact hisplit_right - 0083
exact hreplaced_witness_witness_left - 0084
intro j - 0085
intro a - 0086
intro hj - 0087
intro hji - 0088
intro hold - 0089
have hjsplit : j = k \/ exists h. h + S j = k - 0090
specialize finite_lt_succ_eq_or_lt k - 0091
specialize finite_lt_succ_eq_or_lt j - 0092
apply finite_lt_succ_eq_or_lt - 0093
exact hj - 0094
cases hjsplit - 0095
have hax : a = x2 - 0096
specialize beta_at_unique b - 0097
specialize beta_at_unique c - 0098
specialize beta_at_unique k - 0099
specialize beta_at_unique a - 0100
specialize beta_at_unique x2 - 0101
apply beta_at_unique - 0102
rewrite hjsplit_left at hold - 0103
rewrite hjsplit_left at hold - 0104
exact hold - 0105
exact beta_at_exists_witness - 0106
rewrite hjsplit_left - 0107
rewrite hjsplit_left - 0108
rewrite hax - 0109
rewrite hax - 0110
exact beta_prefix_extend_witness_witness_left - 0111
have hmiddle : ((exists h. h + S a = S ((S j) * x1)) /\ exists q. x = q * S ((S j) * x1) + a) - 0112
specialize hreplaced_witness_witness_right j - 0113
specialize hreplaced_witness_witness_right a - 0114
apply hreplaced_witness_witness_right - 0115
exact hjsplit_right - 0116
exact hji - 0117
exact hold - 0118
specialize beta_prefix_extend_witness_witness_right j - 0119
specialize beta_prefix_extend_witness_witness_right a - 0120
apply beta_prefix_extend_witness_witness_right - 0121
exact hjsplit_right - 0122
exact hmiddle