Exact expanded PA statement
forall p h a b c mb mc sb sc l. (forall gsp_index_extend_before. (exists gsp_lt_gap_extend_before_index_bound. gsp_lt_gap_extend_before_index_bound + S gsp_index_extend_before = l) -> (exists gsp_value_extend_before_entry gsp_magnitude_extend_before_entry gsp_sign_extend_before_entry. (((exists ff_h_gsp_extend_before_entry_source. ff_h_gsp_extend_before_entry_source + S (gsp_value_extend_before_entry) = S ((S (gsp_index_extend_before)) * c)) /\ exists ff_q_gsp_extend_before_entry_source. b = ff_q_gsp_extend_before_entry_source * S ((S (gsp_index_extend_before)) * c) + (gsp_value_extend_before_entry))) /\ ((((exists ff_h_gsp_extend_before_entry_magnitude. ff_h_gsp_extend_before_entry_magnitude + S (gsp_magnitude_extend_before_entry) = S ((S (gsp_index_extend_before)) * mc)) /\ exists ff_q_gsp_extend_before_entry_magnitude. mb = ff_q_gsp_extend_before_entry_magnitude * S ((S (gsp_index_extend_before)) * mc) + (gsp_magnitude_extend_before_entry))) /\ ((((exists ff_h_gsp_extend_before_entry_sign. ff_h_gsp_extend_before_entry_sign + S (gsp_sign_extend_before_entry) = S ((S (gsp_index_extend_before)) * sc)) /\ exists ff_q_gsp_extend_before_entry_sign. sb = ff_q_gsp_extend_before_entry_sign * S ((S (gsp_index_extend_before)) * sc) + (gsp_sign_extend_before_entry))) /\ ((exists gsp_lt_gap_extend_before_entry_positive. gsp_lt_gap_extend_before_entry_positive + S 0 = gsp_magnitude_extend_before_entry) /\ ((exists gsp_le_gap_extend_before_entry_bounded. gsp_le_gap_extend_before_entry_bounded + gsp_magnitude_extend_before_entry = h) /\ ((gsp_sign_extend_before_entry = 0 \/ gsp_sign_extend_before_entry = 1) /\ (((gsp_sign_extend_before_entry = 0 /\ (exists gsp_mod_left_extend_before_entry_lower gsp_mod_right_extend_before_entry_lower. (a * gsp_value_extend_before_entry) + p * gsp_mod_left_extend_before_entry_lower = (gsp_magnitude_extend_before_entry) + p * gsp_mod_right_extend_before_entry_lower)) \/ (gsp_sign_extend_before_entry = 1 /\ (exists gsp_mod_left_extend_before_entry_reflected gsp_mod_right_extend_before_entry_reflected. (a * gsp_value_extend_before_entry) + p * gsp_mod_left_extend_before_entry_reflected = ((2 * h) * gsp_magnitude_extend_before_entry) + p * gsp_mod_right_extend_before_entry_reflected))))))))))) -> (exists gsp_value_extend_choice gsp_magnitude_extend_choice gsp_sign_extend_choice. (((exists ff_h_gsp_extend_choice_source. ff_h_gsp_extend_choice_source + S (gsp_value_extend_choice) = S ((S (l)) * c)) /\ exists ff_q_gsp_extend_choice_source. b = ff_q_gsp_extend_choice_source * S ((S (l)) * c) + (gsp_value_extend_choice))) /\ ((exists gsp_lt_gap_extend_choice_positive. gsp_lt_gap_extend_choice_positive + S 0 = gsp_magnitude_extend_choice) /\ ((exists gsp_le_gap_extend_choice_bounded. gsp_le_gap_extend_choice_bounded + gsp_magnitude_extend_choice = h) /\ ((gsp_sign_extend_choice = 0 \/ gsp_sign_extend_choice = 1) /\ (((gsp_sign_extend_choice = 0 /\ (exists gsp_mod_left_extend_choice_lower gsp_mod_right_extend_choice_lower. (a * gsp_value_extend_choice) + p * gsp_mod_left_extend_choice_lower = (gsp_magnitude_extend_choice) + p * gsp_mod_right_extend_choice_lower)) \/ (gsp_sign_extend_choice = 1 /\ (exists gsp_mod_left_extend_choice_reflected gsp_mod_right_extend_choice_reflected. (a * gsp_value_extend_choice) + p * gsp_mod_left_extend_choice_reflected = ((2 * h) * gsp_magnitude_extend_choice) + p * gsp_mod_right_extend_choice_reflected)))))))) -> exists z d u v. (forall gsp_index_extend_after. (exists gsp_lt_gap_extend_after_index_bound. gsp_lt_gap_extend_after_index_bound + S gsp_index_extend_after = S l) -> (exists gsp_value_extend_after_entry gsp_magnitude_extend_after_entry gsp_sign_extend_after_entry. (((exists ff_h_gsp_extend_after_entry_source. ff_h_gsp_extend_after_entry_source + S (gsp_value_extend_after_entry) = S ((S (gsp_index_extend_after)) * c)) /\ exists ff_q_gsp_extend_after_entry_source. b = ff_q_gsp_extend_after_entry_source * S ((S (gsp_index_extend_after)) * c) + (gsp_value_extend_after_entry))) /\ ((((exists ff_h_gsp_extend_after_entry_magnitude. ff_h_gsp_extend_after_entry_magnitude + S (gsp_magnitude_extend_after_entry) = S ((S (gsp_index_extend_after)) * d)) /\ exists ff_q_gsp_extend_after_entry_magnitude. z = ff_q_gsp_extend_after_entry_magnitude * S ((S (gsp_index_extend_after)) * d) + (gsp_magnitude_extend_after_entry))) /\ ((((exists ff_h_gsp_extend_after_entry_sign. ff_h_gsp_extend_after_entry_sign + S (gsp_sign_extend_after_entry) = S ((S (gsp_index_extend_after)) * v)) /\ exists ff_q_gsp_extend_after_entry_sign. u = ff_q_gsp_extend_after_entry_sign * S ((S (gsp_index_extend_after)) * v) + (gsp_sign_extend_after_entry))) /\ ((exists gsp_lt_gap_extend_after_entry_positive. gsp_lt_gap_extend_after_entry_positive + S 0 = gsp_magnitude_extend_after_entry) /\ ((exists gsp_le_gap_extend_after_entry_bounded. gsp_le_gap_extend_after_entry_bounded + gsp_magnitude_extend_after_entry = h) /\ ((gsp_sign_extend_after_entry = 0 \/ gsp_sign_extend_after_entry = 1) /\ (((gsp_sign_extend_after_entry = 0 /\ (exists gsp_mod_left_extend_after_entry_lower gsp_mod_right_extend_after_entry_lower. (a * gsp_value_extend_after_entry) + p * gsp_mod_left_extend_after_entry_lower = (gsp_magnitude_extend_after_entry) + p * gsp_mod_right_extend_after_entry_lower)) \/ (gsp_sign_extend_after_entry = 1 /\ (exists gsp_mod_left_extend_after_entry_reflected gsp_mod_right_extend_after_entry_reflected. (a * gsp_value_extend_after_entry) + p * gsp_mod_left_extend_after_entry_reflected = ((2 * h) * gsp_magnitude_extend_after_entry) + p * gsp_mod_right_extend_after_entry_reflected)))))))))))Structural proof guide
Generated structural guide
Append one pointwise signed choice simultaneously to the magnitude and zero/one sign beta prefixes.
Use the direct prerequisites beta_prefix_extend, finite_lt_succ_eq_or_lt as previously established PA formulas.
The proof proceeds by case analysis (23), intermediate claims (4), 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 p - 0002
intro h - 0003
intro a - 0004
intro b - 0005
intro c - 0006
intro mb - 0007
intro mc - 0008
intro sb - 0009
intro sc - 0010
intro l - 0011
intro hprefix - 0012
intro hchoice - 0013
cases hchoice - 0014
cases hchoice_witness - 0015
cases hchoice_witness_witness - 0016
cases hchoice_witness_witness_witness - 0017
cases hchoice_witness_witness_witness_right - 0018
cases hchoice_witness_witness_witness_right_right - 0019
cases hchoice_witness_witness_witness_right_right_right - 0020
have hmag_extend : exists gsp_new_code_magnitude_extension gsp_new_scale_magnitude_extension. (((exists ff_h_gsp_magnitude_extension_new_last. ff_h_gsp_magnitude_extension_new_last + S (x1) = S ((S (l)) * gsp_new_scale_magnitude_extension)) /\ exists ff_q_gsp_magnitude_extension_new_last. gsp_new_code_magnitude_extension = ff_q_gsp_magnitude_extension_new_last * S ((S (l)) * gsp_new_scale_magnitude_extension) + (x1))) /\ forall gsp_old_index_magnitude_extension gsp_old_value_magnitude_extension. (exists gsp_lt_gap_magnitude_extension_old_bound. gsp_lt_gap_magnitude_extension_old_bound + S gsp_old_index_magnitude_extension = l) -> (((exists ff_h_gsp_magnitude_extension_old_entry. ff_h_gsp_magnitude_extension_old_entry + S (gsp_old_value_magnitude_extension) = S ((S (gsp_old_index_magnitude_extension)) * mc)) /\ exists ff_q_gsp_magnitude_extension_old_entry. mb = ff_q_gsp_magnitude_extension_old_entry * S ((S (gsp_old_index_magnitude_extension)) * mc) + (gsp_old_value_magnitude_extension))) -> (((exists ff_h_gsp_magnitude_extension_new_entry. ff_h_gsp_magnitude_extension_new_entry + S (gsp_old_value_magnitude_extension) = S ((S (gsp_old_index_magnitude_extension)) * gsp_new_scale_magnitude_extension)) /\ exists ff_q_gsp_magnitude_extension_new_entry. gsp_new_code_magnitude_extension = ff_q_gsp_magnitude_extension_new_entry * S ((S (gsp_old_index_magnitude_extension)) * gsp_new_scale_magnitude_extension) + (gsp_old_value_magnitude_extension))) - 0021
specialize beta_prefix_extend l - 0022
specialize beta_prefix_extend mb - 0023
specialize beta_prefix_extend mc - 0024
specialize beta_prefix_extend x1 - 0025
exact beta_prefix_extend - 0026
cases hmag_extend - 0027
cases hmag_extend_witness - 0028
cases hmag_extend_witness_witness - 0029
have hsign_extend : exists gsp_new_code_sign_extension gsp_new_scale_sign_extension. (((exists ff_h_gsp_sign_extension_new_last. ff_h_gsp_sign_extension_new_last + S (x2) = S ((S (l)) * gsp_new_scale_sign_extension)) /\ exists ff_q_gsp_sign_extension_new_last. gsp_new_code_sign_extension = ff_q_gsp_sign_extension_new_last * S ((S (l)) * gsp_new_scale_sign_extension) + (x2))) /\ forall gsp_old_index_sign_extension gsp_old_value_sign_extension. (exists gsp_lt_gap_sign_extension_old_bound. gsp_lt_gap_sign_extension_old_bound + S gsp_old_index_sign_extension = l) -> (((exists ff_h_gsp_sign_extension_old_entry. ff_h_gsp_sign_extension_old_entry + S (gsp_old_value_sign_extension) = S ((S (gsp_old_index_sign_extension)) * sc)) /\ exists ff_q_gsp_sign_extension_old_entry. sb = ff_q_gsp_sign_extension_old_entry * S ((S (gsp_old_index_sign_extension)) * sc) + (gsp_old_value_sign_extension))) -> (((exists ff_h_gsp_sign_extension_new_entry. ff_h_gsp_sign_extension_new_entry + S (gsp_old_value_sign_extension) = S ((S (gsp_old_index_sign_extension)) * gsp_new_scale_sign_extension)) /\ exists ff_q_gsp_sign_extension_new_entry. gsp_new_code_sign_extension = ff_q_gsp_sign_extension_new_entry * S ((S (gsp_old_index_sign_extension)) * gsp_new_scale_sign_extension) + (gsp_old_value_sign_extension))) - 0030
specialize beta_prefix_extend l - 0031
specialize beta_prefix_extend sb - 0032
specialize beta_prefix_extend sc - 0033
specialize beta_prefix_extend x2 - 0034
exact beta_prefix_extend - 0035
cases hsign_extend - 0036
cases hsign_extend_witness - 0037
cases hsign_extend_witness_witness - 0038
exists x3 - 0039
exists x4 - 0040
exists x5 - 0041
exists x6 - 0042
intro i - 0043
intro hi - 0044
have hsplit : i = l \/ exists gap. gap + S i = l - 0045
specialize finite_lt_succ_eq_or_lt l - 0046
specialize finite_lt_succ_eq_or_lt i - 0047
apply finite_lt_succ_eq_or_lt - 0048
exact hi - 0049
cases hsplit - 0050
exists x - 0051
exists x1 - 0052
exists x2 - 0053
split - 0054
rewrite hsplit_left - 0055
rewrite hsplit_left - 0056
exact hchoice_witness_witness_witness_left - 0057
split - 0058
rewrite hsplit_left - 0059
rewrite hsplit_left - 0060
exact hmag_extend_witness_witness_left - 0061
split - 0062
rewrite hsplit_left - 0063
rewrite hsplit_left - 0064
exact hsign_extend_witness_witness_left - 0065
split - 0066
exact hchoice_witness_witness_witness_right_left - 0067
split - 0068
exact hchoice_witness_witness_witness_right_right_left - 0069
split - 0070
exact hchoice_witness_witness_witness_right_right_right_left - 0071
exact hchoice_witness_witness_witness_right_right_right_right - 0072
have hold : exists gsp_value_extend_previous_entry gsp_magnitude_extend_previous_entry gsp_sign_extend_previous_entry. (((exists ff_h_gsp_extend_previous_entry_source. ff_h_gsp_extend_previous_entry_source + S (gsp_value_extend_previous_entry) = S ((S (i)) * c)) /\ exists ff_q_gsp_extend_previous_entry_source. b = ff_q_gsp_extend_previous_entry_source * S ((S (i)) * c) + (gsp_value_extend_previous_entry))) /\ ((((exists ff_h_gsp_extend_previous_entry_magnitude. ff_h_gsp_extend_previous_entry_magnitude + S (gsp_magnitude_extend_previous_entry) = S ((S (i)) * mc)) /\ exists ff_q_gsp_extend_previous_entry_magnitude. mb = ff_q_gsp_extend_previous_entry_magnitude * S ((S (i)) * mc) + (gsp_magnitude_extend_previous_entry))) /\ ((((exists ff_h_gsp_extend_previous_entry_sign. ff_h_gsp_extend_previous_entry_sign + S (gsp_sign_extend_previous_entry) = S ((S (i)) * sc)) /\ exists ff_q_gsp_extend_previous_entry_sign. sb = ff_q_gsp_extend_previous_entry_sign * S ((S (i)) * sc) + (gsp_sign_extend_previous_entry))) /\ ((exists gsp_lt_gap_extend_previous_entry_positive. gsp_lt_gap_extend_previous_entry_positive + S 0 = gsp_magnitude_extend_previous_entry) /\ ((exists gsp_le_gap_extend_previous_entry_bounded. gsp_le_gap_extend_previous_entry_bounded + gsp_magnitude_extend_previous_entry = h) /\ ((gsp_sign_extend_previous_entry = 0 \/ gsp_sign_extend_previous_entry = 1) /\ (((gsp_sign_extend_previous_entry = 0 /\ (exists gsp_mod_left_extend_previous_entry_lower gsp_mod_right_extend_previous_entry_lower. (a * gsp_value_extend_previous_entry) + p * gsp_mod_left_extend_previous_entry_lower = (gsp_magnitude_extend_previous_entry) + p * gsp_mod_right_extend_previous_entry_lower)) \/ (gsp_sign_extend_previous_entry = 1 /\ (exists gsp_mod_left_extend_previous_entry_reflected gsp_mod_right_extend_previous_entry_reflected. (a * gsp_value_extend_previous_entry) + p * gsp_mod_left_extend_previous_entry_reflected = ((2 * h) * gsp_magnitude_extend_previous_entry) + p * gsp_mod_right_extend_previous_entry_reflected))))))))) - 0073
specialize hprefix i - 0074
apply hprefix - 0075
exact hsplit_right - 0076
cases hold - 0077
cases hold_witness - 0078
cases hold_witness_witness - 0079
cases hold_witness_witness_witness - 0080
cases hold_witness_witness_witness_right - 0081
cases hold_witness_witness_witness_right_right - 0082
cases hold_witness_witness_witness_right_right_right - 0083
cases hold_witness_witness_witness_right_right_right_right - 0084
cases hold_witness_witness_witness_right_right_right_right_right - 0085
exists x7 - 0086
exists x8 - 0087
exists x9 - 0088
split - 0089
exact hold_witness_witness_witness_left - 0090
split - 0091
specialize hmag_extend_witness_witness_right i - 0092
specialize hmag_extend_witness_witness_right x8 - 0093
apply hmag_extend_witness_witness_right - 0094
exact hsplit_right - 0095
exact hold_witness_witness_witness_right_left - 0096
split - 0097
specialize hsign_extend_witness_witness_right i - 0098
specialize hsign_extend_witness_witness_right x9 - 0099
apply hsign_extend_witness_witness_right - 0100
exact hsplit_right - 0101
exact hold_witness_witness_witness_right_right_left - 0102
split - 0103
exact hold_witness_witness_witness_right_right_right_left - 0104
split - 0105
exact hold_witness_witness_witness_right_right_right_right_left - 0106
split - 0107
exact hold_witness_witness_witness_right_right_right_right_right_left - 0108
exact hold_witness_witness_witness_right_right_right_right_right_right