Exact expanded PA statement
forall b c l n r. n = S r -> (exists h. h + S (S (S l)) = n) -> (exists y. ((exists wpo_gap_choose_result_bound. wpo_gap_choose_result_bound + S (y) = n) /\ ((~(y = 0) /\ ~((S y) = n)) /\ (~(exists wpo_index_choose_result_omit_contains. ((exists wpo_gap_choose_result_omit_contains_bound. wpo_gap_choose_result_omit_contains_bound + S (wpo_index_choose_result_omit_contains) = l) /\ (((exists wpo_beta_height_choose_result_omit_contains_entry. wpo_beta_height_choose_result_omit_contains_entry + S (y) = S ((S (wpo_index_choose_result_omit_contains)) * c)) /\ exists wpo_beta_quotient_choose_result_omit_contains_entry. b = wpo_beta_quotient_choose_result_omit_contains_entry * S ((S (wpo_index_choose_result_omit_contains)) * c) + (y)))))))))Structural proof guide
Generated structural guide
By temporarily appending both endpoints, finite omission constructively selects a missing nonendpoint value.
Use the direct prerequisites beta_prefix_append_two_exists, finite_short_prefix_omits, le_refl, le_succ, succ_injective as previously established PA formulas.
The proof proceeds by case analysis (8), intermediate claims (7), equality transport (4).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA009K beta_prefix_append_two_exists PA0098 finite_short_prefix_omits PA001A le_refl PA002O le_succ PA003V succ_injectiveDirect 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 l - 0004
intro n - 0005
intro r - 0006
intro hnr - 0007
intro hshort - 0008
have haugmented : exists z d. (((((exists wpo_beta_height_choose_augmented_trace_first. wpo_beta_height_choose_augmented_trace_first + S (0) = S ((S (l)) * d)) /\ exists wpo_beta_quotient_choose_augmented_trace_first. z = wpo_beta_quotient_choose_augmented_trace_first * S ((S (l)) * d) + (0))) /\ ((((exists wpo_beta_height_choose_augmented_trace_second. wpo_beta_height_choose_augmented_trace_second + S (r) = S ((S (S (l))) * d)) /\ exists wpo_beta_quotient_choose_augmented_trace_second. z = wpo_beta_quotient_choose_augmented_trace_second * S ((S (S (l))) * d) + (r))) /\ (forall wpo_old_index_choose_augmented_trace wpo_old_value_choose_augmented_trace. (exists wpo_gap_choose_augmented_trace_old_bound. wpo_gap_choose_augmented_trace_old_bound + S (wpo_old_index_choose_augmented_trace) = l) -> (((exists wpo_beta_height_choose_augmented_trace_old_entry. wpo_beta_height_choose_augmented_trace_old_entry + S (wpo_old_value_choose_augmented_trace) = S ((S (wpo_old_index_choose_augmented_trace)) * c)) /\ exists wpo_beta_quotient_choose_augmented_trace_old_entry. b = wpo_beta_quotient_choose_augmented_trace_old_entry * S ((S (wpo_old_index_choose_augmented_trace)) * c) + (wpo_old_value_choose_augmented_trace))) -> (((exists wpo_beta_height_choose_augmented_trace_new_entry. wpo_beta_height_choose_augmented_trace_new_entry + S (wpo_old_value_choose_augmented_trace) = S ((S (wpo_old_index_choose_augmented_trace)) * d)) /\ exists wpo_beta_quotient_choose_augmented_trace_new_entry. z = wpo_beta_quotient_choose_augmented_trace_new_entry * S ((S (wpo_old_index_choose_augmented_trace)) * d) + (wpo_old_value_choose_augmented_trace))))))) - 0009
specialize beta_prefix_append_two_exists b - 0010
specialize beta_prefix_append_two_exists c - 0011
specialize beta_prefix_append_two_exists l - 0012
specialize beta_prefix_append_two_exists 0 - 0013
specialize beta_prefix_append_two_exists r - 0014
exact beta_prefix_append_two_exists - 0015
cases haugmented - 0016
cases haugmented_witness - 0017
have homitted : exists wpo_value_choose_augmented_omit. ((exists wpo_gap_choose_augmented_omit_value_bound. wpo_gap_choose_augmented_omit_value_bound + S (wpo_value_choose_augmented_omit) = n) /\ (~(exists wpo_index_choose_augmented_omit_omitted_contains. ((exists wpo_gap_choose_augmented_omit_omitted_contains_bound. wpo_gap_choose_augmented_omit_omitted_contains_bound + S (wpo_index_choose_augmented_omit_omitted_contains) = S (S l)) /\ (((exists wpo_beta_height_choose_augmented_omit_omitted_contains_entry. wpo_beta_height_choose_augmented_omit_omitted_contains_entry + S (wpo_value_choose_augmented_omit) = S ((S (wpo_index_choose_augmented_omit_omitted_contains)) * x1)) /\ exists wpo_beta_quotient_choose_augmented_omit_omitted_contains_entry. x = wpo_beta_quotient_choose_augmented_omit_omitted_contains_entry * S ((S (wpo_index_choose_augmented_omit_omitted_contains)) * x1) + (wpo_value_choose_augmented_omit))))))) - 0018
specialize finite_short_prefix_omits x - 0019
specialize finite_short_prefix_omits x1 - 0020
specialize finite_short_prefix_omits (S (S l)) - 0021
specialize finite_short_prefix_omits n - 0022
apply finite_short_prefix_omits - 0023
exact hshort - 0024
cases homitted - 0025
cases homitted_witness - 0026
cases haugmented_witness_witness - 0027
cases haugmented_witness_witness_right - 0028
exists x2 - 0029
split - 0030
exact homitted_witness_left - 0031
split - 0032
split - 0033
intro hxzero - 0034
apply homitted_witness_right - 0035
exists l - 0036
split - 0037
specialize le_succ (S l) - 0038
specialize le_succ (S l) - 0039
apply le_succ - 0040
specialize le_refl (S l) - 0041
exact le_refl - 0042
rewrite hxzero - 0043
rewrite hxzero - 0044
exact haugmented_witness_witness_left - 0045
intro hxlast - 0046
have hxr : x2 = r - 0047
specialize succ_injective x2 - 0048
specialize succ_injective r - 0049
apply succ_injective - 0050
trans n - 0051
exact hxlast - 0052
exact hnr - 0053
apply homitted_witness_right - 0054
exists (S l) - 0055
split - 0056
specialize le_refl (S (S l)) - 0057
exact le_refl - 0058
rewrite hxr - 0059
rewrite hxr - 0060
exact haugmented_witness_witness_right_left - 0061
have hold_omit : ~(exists wpo_index_choose_old_omit_y_contains. ((exists wpo_gap_choose_old_omit_y_contains_bound. wpo_gap_choose_old_omit_y_contains_bound + S (wpo_index_choose_old_omit_y_contains) = l) /\ (((exists wpo_beta_height_choose_old_omit_y_contains_entry. wpo_beta_height_choose_old_omit_y_contains_entry + S (x2) = S ((S (wpo_index_choose_old_omit_y_contains)) * c)) /\ exists wpo_beta_quotient_choose_old_omit_y_contains_entry. b = wpo_beta_quotient_choose_old_omit_y_contains_entry * S ((S (wpo_index_choose_old_omit_y_contains)) * c) + (x2))))) - 0062
intro hold_contains - 0063
cases hold_contains - 0064
cases hold_contains_witness - 0065
have hlift : exists h. h + S x3 = S l - 0066
specialize le_succ (S x3) - 0067
specialize le_succ l - 0068
apply le_succ - 0069
exact hold_contains_witness_left - 0070
have hlift2 : exists h. h + S x3 = S (S l) - 0071
specialize le_succ (S x3) - 0072
specialize le_succ (S l) - 0073
apply le_succ - 0074
exact hlift - 0075
have hnew_entry : ((exists h. h + S x2 = S ((S x3) * x1)) /\ exists q. x = q * S ((S x3) * x1) + x2) - 0076
specialize haugmented_witness_witness_right_right x3 - 0077
specialize haugmented_witness_witness_right_right x2 - 0078
apply haugmented_witness_witness_right_right - 0079
exact hold_contains_witness_left - 0080
exact hold_contains_witness_right - 0081
apply homitted_witness_right - 0082
exists x3 - 0083
split - 0084
exact hlift2 - 0085
exact hnew_entry - 0086
exact hold_omit