Exact expanded PA statement
forall b c z d l a e. (((((exists wpo_beta_height_reflect_trace_first. wpo_beta_height_reflect_trace_first + S (a) = S ((S (l)) * d)) /\ exists wpo_beta_quotient_reflect_trace_first. z = wpo_beta_quotient_reflect_trace_first * S ((S (l)) * d) + (a))) /\ ((((exists wpo_beta_height_reflect_trace_second. wpo_beta_height_reflect_trace_second + S (e) = S ((S (S (l))) * d)) /\ exists wpo_beta_quotient_reflect_trace_second. z = wpo_beta_quotient_reflect_trace_second * S ((S (S (l))) * d) + (e))) /\ (forall wpo_old_index_reflect_trace wpo_old_value_reflect_trace. (exists wpo_gap_reflect_trace_old_bound. wpo_gap_reflect_trace_old_bound + S (wpo_old_index_reflect_trace) = l) -> (((exists wpo_beta_height_reflect_trace_old_entry. wpo_beta_height_reflect_trace_old_entry + S (wpo_old_value_reflect_trace) = S ((S (wpo_old_index_reflect_trace)) * c)) /\ exists wpo_beta_quotient_reflect_trace_old_entry. b = wpo_beta_quotient_reflect_trace_old_entry * S ((S (wpo_old_index_reflect_trace)) * c) + (wpo_old_value_reflect_trace))) -> (((exists wpo_beta_height_reflect_trace_new_entry. wpo_beta_height_reflect_trace_new_entry + S (wpo_old_value_reflect_trace) = S ((S (wpo_old_index_reflect_trace)) * d)) /\ exists wpo_beta_quotient_reflect_trace_new_entry. z = wpo_beta_quotient_reflect_trace_new_entry * S ((S (wpo_old_index_reflect_trace)) * d) + (wpo_old_value_reflect_trace))))))) -> forall i v. (exists wpo_gap_reflect_new_bound. wpo_gap_reflect_new_bound + S (i) = S (S l)) -> (((exists wpo_beta_height_reflect_new_entry. wpo_beta_height_reflect_new_entry + S (v) = S ((S (i)) * d)) /\ exists wpo_beta_quotient_reflect_new_entry. z = wpo_beta_quotient_reflect_new_entry * S ((S (i)) * d) + (v))) -> (((i = S (l) /\ v = e) \/ ((i = l /\ v = a) \/ ((exists wpo_gap_reflect_result_old_bound. wpo_gap_reflect_result_old_bound + S (i) = l) /\ (((exists wpo_beta_height_reflect_result_old_entry. wpo_beta_height_reflect_result_old_entry + S (v) = S ((S (i)) * c)) /\ exists wpo_beta_quotient_reflect_result_old_entry. b = wpo_beta_quotient_reflect_result_old_entry * S ((S (i)) * c) + (v)))))))Structural proof guide
Generated structural guide
Every entry of a two-appended prefix is the second append, the first append, or an old entry.
Use the direct prerequisites finite_lt_succ_eq_or_lt, beta_at_exists, beta_at_unique as previously established PA formulas.
The proof proceeds by case analysis (5), intermediate claims (7), equality transport (6).
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 Alpha-v16 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
- 0001
intro b - 0002
intro c - 0003
intro z - 0004
intro d - 0005
intro l - 0006
intro a - 0007
intro e - 0008
intro htrace - 0009
cases htrace - 0010
cases htrace_right - 0011
intro i - 0012
intro v - 0013
intro hi - 0014
intro hentry - 0015
have htop : i = S l \/ exists h. h + S i = S l - 0016
specialize finite_lt_succ_eq_or_lt (S l) - 0017
specialize finite_lt_succ_eq_or_lt i - 0018
apply finite_lt_succ_eq_or_lt - 0019
exact hi - 0020
cases htop - 0021
left - 0022
split - 0023
exact htop_left - 0024
have hive : v = e - 0025
specialize beta_at_unique z - 0026
specialize beta_at_unique d - 0027
specialize beta_at_unique (S l) - 0028
specialize beta_at_unique v - 0029
specialize beta_at_unique e - 0030
apply beta_at_unique - 0031
rewrite htop_left at hentry - 0032
rewrite htop_left at hentry - 0033
exact hentry - 0034
exact htrace_right_left - 0035
exact hive - 0036
have hmiddle : i = l \/ exists h. h + S i = l - 0037
specialize finite_lt_succ_eq_or_lt l - 0038
specialize finite_lt_succ_eq_or_lt i - 0039
apply finite_lt_succ_eq_or_lt - 0040
exact htop_right - 0041
cases hmiddle - 0042
right - 0043
left - 0044
split - 0045
exact hmiddle_left - 0046
have hiva : v = a - 0047
specialize beta_at_unique z - 0048
specialize beta_at_unique d - 0049
specialize beta_at_unique l - 0050
specialize beta_at_unique v - 0051
specialize beta_at_unique a - 0052
apply beta_at_unique - 0053
rewrite hmiddle_left at hentry - 0054
rewrite hmiddle_left at hentry - 0055
exact hentry - 0056
exact htrace_left - 0057
exact hiva - 0058
have hold : exists w. (((exists wpo_beta_height_reflect_old_exists_entry. wpo_beta_height_reflect_old_exists_entry + S (w) = S ((S (i)) * c)) /\ exists wpo_beta_quotient_reflect_old_exists_entry. b = wpo_beta_quotient_reflect_old_exists_entry * S ((S (i)) * c) + (w))) - 0059
specialize beta_at_exists b - 0060
specialize beta_at_exists c - 0061
specialize beta_at_exists i - 0062
exact beta_at_exists - 0063
cases hold - 0064
have hnew_old : ((exists h. h + S x = S ((S i) * d)) /\ exists q. z = q * S ((S i) * d) + x) - 0065
specialize htrace_right_right i - 0066
specialize htrace_right_right x - 0067
apply htrace_right_right - 0068
exact hmiddle_right - 0069
exact hold_witness - 0070
have hivx : v = x - 0071
specialize beta_at_unique z - 0072
specialize beta_at_unique d - 0073
specialize beta_at_unique i - 0074
specialize beta_at_unique v - 0075
specialize beta_at_unique x - 0076
apply beta_at_unique - 0077
exact hentry - 0078
exact hnew_old - 0079
right - 0080
right - 0081
split - 0082
exact hmiddle_right - 0083
rewrite <- hivx at hold_witness - 0084
rewrite <- hivx at hold_witness - 0085
exact hold_witness