Exact expanded PA statement
forall p b c qb qc rb rc l. (forall fdp_index_before. (exists gsp_lt_gap_before_index_bound. gsp_lt_gap_before_index_bound + S fdp_index_before = l) -> exists fdp_value_before fdp_quotient_before fdp_remainder_before. (((exists ff_h_fdp_before_source. ff_h_fdp_before_source + S (fdp_value_before) = S ((S (fdp_index_before)) * c)) /\ exists ff_q_fdp_before_source. b = ff_q_fdp_before_source * S ((S (fdp_index_before)) * c) + (fdp_value_before))) /\ ((((exists ff_h_fdp_before_quotient_entry. ff_h_fdp_before_quotient_entry + S (fdp_quotient_before) = S ((S (fdp_index_before)) * qc)) /\ exists ff_q_fdp_before_quotient_entry. qb = ff_q_fdp_before_quotient_entry * S ((S (fdp_index_before)) * qc) + (fdp_quotient_before))) /\ ((((exists ff_h_fdp_before_remainder_entry. ff_h_fdp_before_remainder_entry + S (fdp_remainder_before) = S ((S (fdp_index_before)) * rc)) /\ exists ff_q_fdp_before_remainder_entry. rb = ff_q_fdp_before_remainder_entry * S ((S (fdp_index_before)) * rc) + (fdp_remainder_before))) /\ (fdp_value_before = p * fdp_quotient_before + fdp_remainder_before /\ (exists gsp_lt_gap_before_remainder_bound. gsp_lt_gap_before_remainder_bound + S fdp_remainder_before = p))))) -> (exists x q r. (((exists ff_h_fdp_choice_source. ff_h_fdp_choice_source + S (x) = S ((S (l)) * c)) /\ exists ff_q_fdp_choice_source. b = ff_q_fdp_choice_source * S ((S (l)) * c) + (x))) /\ (x = p * q + r /\ (exists gsp_lt_gap_fdp_choice_remainder_bound. gsp_lt_gap_fdp_choice_remainder_bound + S r = p))) -> exists z d u v. (forall fdp_index_after. (exists gsp_lt_gap_after_index_bound. gsp_lt_gap_after_index_bound + S fdp_index_after = S l) -> exists fdp_value_after fdp_quotient_after fdp_remainder_after. (((exists ff_h_fdp_after_source. ff_h_fdp_after_source + S (fdp_value_after) = S ((S (fdp_index_after)) * c)) /\ exists ff_q_fdp_after_source. b = ff_q_fdp_after_source * S ((S (fdp_index_after)) * c) + (fdp_value_after))) /\ ((((exists ff_h_fdp_after_quotient_entry. ff_h_fdp_after_quotient_entry + S (fdp_quotient_after) = S ((S (fdp_index_after)) * d)) /\ exists ff_q_fdp_after_quotient_entry. z = ff_q_fdp_after_quotient_entry * S ((S (fdp_index_after)) * d) + (fdp_quotient_after))) /\ ((((exists ff_h_fdp_after_remainder_entry. ff_h_fdp_after_remainder_entry + S (fdp_remainder_after) = S ((S (fdp_index_after)) * v)) /\ exists ff_q_fdp_after_remainder_entry. u = ff_q_fdp_after_remainder_entry * S ((S (fdp_index_after)) * v) + (fdp_remainder_after))) /\ (fdp_value_after = p * fdp_quotient_after + fdp_remainder_after /\ (exists gsp_lt_gap_after_remainder_bound. gsp_lt_gap_after_remainder_bound + S fdp_remainder_after = p)))))Structural proof guide
Generated structural guide
Append one quotient/remainder pair while preserving the decoded prefix.
Use the direct prerequisites beta_prefix_extend, finite_lt_succ_eq_or_lt as previously established PA formulas.
The proof proceeds by case analysis (19), 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 b - 0003
intro c - 0004
intro qb - 0005
intro qc - 0006
intro rb - 0007
intro rc - 0008
intro l - 0009
intro hprefix - 0010
intro hchoice - 0011
cases hchoice - 0012
cases hchoice_witness - 0013
cases hchoice_witness_witness - 0014
cases hchoice_witness_witness_witness - 0015
cases hchoice_witness_witness_witness_right - 0016
have hqextend : exists z d. (((exists ff_h_fdp_quotient_extension_last. ff_h_fdp_quotient_extension_last + S (x1) = S ((S (l)) * d)) /\ exists ff_q_fdp_quotient_extension_last. z = ff_q_fdp_quotient_extension_last * S ((S (l)) * d) + (x1))) /\ forall i q0. (exists gsp_lt_gap_fdp_quotient_extension_old_bound. gsp_lt_gap_fdp_quotient_extension_old_bound + S i = l) -> (((exists ff_h_fdp_quotient_extension_old_source. ff_h_fdp_quotient_extension_old_source + S (q0) = S ((S (i)) * qc)) /\ exists ff_q_fdp_quotient_extension_old_source. qb = ff_q_fdp_quotient_extension_old_source * S ((S (i)) * qc) + (q0))) -> (((exists ff_h_fdp_quotient_extension_old_target_symbolic. ff_h_fdp_quotient_extension_old_target_symbolic + S (q0) = S ((S (i)) * d)) /\ exists ff_q_fdp_quotient_extension_old_target_symbolic. z = ff_q_fdp_quotient_extension_old_target_symbolic * S ((S (i)) * d) + (q0))) - 0017
specialize beta_prefix_extend l - 0018
specialize beta_prefix_extend qb - 0019
specialize beta_prefix_extend qc - 0020
specialize beta_prefix_extend x1 - 0021
exact beta_prefix_extend - 0022
cases hqextend - 0023
cases hqextend_witness - 0024
cases hqextend_witness_witness - 0025
have hrextend : exists u v. (((exists ff_h_fdp_remainder_extension_last. ff_h_fdp_remainder_extension_last + S (x2) = S ((S (l)) * v)) /\ exists ff_q_fdp_remainder_extension_last. u = ff_q_fdp_remainder_extension_last * S ((S (l)) * v) + (x2))) /\ forall i r0. (exists gsp_lt_gap_fdp_remainder_extension_old_bound. gsp_lt_gap_fdp_remainder_extension_old_bound + S i = l) -> (((exists ff_h_fdp_remainder_extension_old_source. ff_h_fdp_remainder_extension_old_source + S (r0) = S ((S (i)) * rc)) /\ exists ff_q_fdp_remainder_extension_old_source. rb = ff_q_fdp_remainder_extension_old_source * S ((S (i)) * rc) + (r0))) -> (((exists ff_h_fdp_remainder_extension_old_target. ff_h_fdp_remainder_extension_old_target + S (r0) = S ((S (i)) * v)) /\ exists ff_q_fdp_remainder_extension_old_target. u = ff_q_fdp_remainder_extension_old_target * S ((S (i)) * v) + (r0))) - 0026
specialize beta_prefix_extend l - 0027
specialize beta_prefix_extend rb - 0028
specialize beta_prefix_extend rc - 0029
specialize beta_prefix_extend x2 - 0030
exact beta_prefix_extend - 0031
cases hrextend - 0032
cases hrextend_witness - 0033
cases hrextend_witness_witness - 0034
exists x3 - 0035
exists x4 - 0036
exists x5 - 0037
exists x6 - 0038
intro i - 0039
intro hi - 0040
have hsplit : i = l \/ exists gap. gap + S i = l - 0041
specialize finite_lt_succ_eq_or_lt l - 0042
specialize finite_lt_succ_eq_or_lt i - 0043
apply finite_lt_succ_eq_or_lt - 0044
exact hi - 0045
cases hsplit - 0046
exists x - 0047
exists x1 - 0048
exists x2 - 0049
split - 0050
rewrite hsplit_left - 0051
rewrite hsplit_left - 0052
exact hchoice_witness_witness_witness_left - 0053
split - 0054
rewrite hsplit_left - 0055
rewrite hsplit_left - 0056
exact hqextend_witness_witness_left - 0057
split - 0058
rewrite hsplit_left - 0059
rewrite hsplit_left - 0060
exact hrextend_witness_witness_left - 0061
split - 0062
exact hchoice_witness_witness_witness_right_left - 0063
exact hchoice_witness_witness_witness_right_right - 0064
have hold : exists x q r. (((exists ff_h_fdp_previous_source. ff_h_fdp_previous_source + S (x) = S ((S (i)) * c)) /\ exists ff_q_fdp_previous_source. b = ff_q_fdp_previous_source * S ((S (i)) * c) + (x))) /\ ((((exists ff_h_fdp_previous_quotient. ff_h_fdp_previous_quotient + S (q) = S ((S (i)) * qc)) /\ exists ff_q_fdp_previous_quotient. qb = ff_q_fdp_previous_quotient * S ((S (i)) * qc) + (q))) /\ ((((exists ff_h_fdp_previous_remainder. ff_h_fdp_previous_remainder + S (r) = S ((S (i)) * rc)) /\ exists ff_q_fdp_previous_remainder. rb = ff_q_fdp_previous_remainder * S ((S (i)) * rc) + (r))) /\ (x = p * q + r /\ (exists gsp_lt_gap_fdp_previous_remainder_bound. gsp_lt_gap_fdp_previous_remainder_bound + S r = p)))) - 0065
specialize hprefix i - 0066
apply hprefix - 0067
exact hsplit_right - 0068
cases hold - 0069
cases hold_witness - 0070
cases hold_witness_witness - 0071
cases hold_witness_witness_witness - 0072
cases hold_witness_witness_witness_right - 0073
cases hold_witness_witness_witness_right_right - 0074
cases hold_witness_witness_witness_right_right_right - 0075
exists x7 - 0076
exists x8 - 0077
exists x9 - 0078
split - 0079
exact hold_witness_witness_witness_left - 0080
split - 0081
specialize hqextend_witness_witness_right i - 0082
specialize hqextend_witness_witness_right x8 - 0083
apply hqextend_witness_witness_right - 0084
exact hsplit_right - 0085
exact hold_witness_witness_witness_right_left - 0086
split - 0087
specialize hrextend_witness_witness_right i - 0088
specialize hrextend_witness_witness_right x9 - 0089
apply hrextend_witness_witness_right - 0090
exact hsplit_right - 0091
exact hold_witness_witness_witness_right_right_left - 0092
split - 0093
exact hold_witness_witness_witness_right_right_right_left - 0094
exact hold_witness_witness_witness_right_right_right_right