Exact expanded PA statement
forall d b c qb qc mb mc sb sc l X Q M E. (exists ff_u_pointmod_source ff_v_pointmod_source. ((((exists ff_h_pointmod_source_start. ff_h_pointmod_source_start + S (0) = S ((S (0)) * ff_v_pointmod_source)) /\ exists ff_q_pointmod_source_start. ff_u_pointmod_source = ff_q_pointmod_source_start * S ((S (0)) * ff_v_pointmod_source) + (0))) /\ ((((exists ff_h_pointmod_source_terminal. ff_h_pointmod_source_terminal + S (X) = S ((S (l)) * ff_v_pointmod_source)) /\ exists ff_q_pointmod_source_terminal. ff_u_pointmod_source = ff_q_pointmod_source_terminal * S ((S (l)) * ff_v_pointmod_source) + (X))) /\ forall ff_i_pointmod_source. (exists ff_lt_pointmod_source_bound. ff_lt_pointmod_source_bound + S ff_i_pointmod_source = l) -> exists ff_a_pointmod_source ff_r_pointmod_source ff_s_pointmod_source. ((((exists ff_h_pointmod_source_summand. ff_h_pointmod_source_summand + S (ff_a_pointmod_source) = S ((S (ff_i_pointmod_source)) * c)) /\ exists ff_q_pointmod_source_summand. b = ff_q_pointmod_source_summand * S ((S (ff_i_pointmod_source)) * c) + (ff_a_pointmod_source))) /\ ((((exists ff_h_pointmod_source_partial. ff_h_pointmod_source_partial + S (ff_r_pointmod_source) = S ((S (ff_i_pointmod_source)) * ff_v_pointmod_source)) /\ exists ff_q_pointmod_source_partial. ff_u_pointmod_source = ff_q_pointmod_source_partial * S ((S (ff_i_pointmod_source)) * ff_v_pointmod_source) + (ff_r_pointmod_source))) /\ ((((exists ff_h_pointmod_source_successor. ff_h_pointmod_source_successor + S (ff_s_pointmod_source) = S ((S (S ff_i_pointmod_source)) * ff_v_pointmod_source)) /\ exists ff_q_pointmod_source_successor. ff_u_pointmod_source = ff_q_pointmod_source_successor * S ((S (S ff_i_pointmod_source)) * ff_v_pointmod_source) + (ff_s_pointmod_source))) /\ ff_s_pointmod_source = ff_r_pointmod_source + ff_a_pointmod_source)))))) -> (exists ff_u_pointmod_quotient ff_v_pointmod_quotient. ((((exists ff_h_pointmod_quotient_start. ff_h_pointmod_quotient_start + S (0) = S ((S (0)) * ff_v_pointmod_quotient)) /\ exists ff_q_pointmod_quotient_start. ff_u_pointmod_quotient = ff_q_pointmod_quotient_start * S ((S (0)) * ff_v_pointmod_quotient) + (0))) /\ ((((exists ff_h_pointmod_quotient_terminal. ff_h_pointmod_quotient_terminal + S (Q) = S ((S (l)) * ff_v_pointmod_quotient)) /\ exists ff_q_pointmod_quotient_terminal. ff_u_pointmod_quotient = ff_q_pointmod_quotient_terminal * S ((S (l)) * ff_v_pointmod_quotient) + (Q))) /\ forall ff_i_pointmod_quotient. (exists ff_lt_pointmod_quotient_bound. ff_lt_pointmod_quotient_bound + S ff_i_pointmod_quotient = l) -> exists ff_a_pointmod_quotient ff_r_pointmod_quotient ff_s_pointmod_quotient. ((((exists ff_h_pointmod_quotient_summand. ff_h_pointmod_quotient_summand + S (ff_a_pointmod_quotient) = S ((S (ff_i_pointmod_quotient)) * qc)) /\ exists ff_q_pointmod_quotient_summand. qb = ff_q_pointmod_quotient_summand * S ((S (ff_i_pointmod_quotient)) * qc) + (ff_a_pointmod_quotient))) /\ ((((exists ff_h_pointmod_quotient_partial. ff_h_pointmod_quotient_partial + S (ff_r_pointmod_quotient) = S ((S (ff_i_pointmod_quotient)) * ff_v_pointmod_quotient)) /\ exists ff_q_pointmod_quotient_partial. ff_u_pointmod_quotient = ff_q_pointmod_quotient_partial * S ((S (ff_i_pointmod_quotient)) * ff_v_pointmod_quotient) + (ff_r_pointmod_quotient))) /\ ((((exists ff_h_pointmod_quotient_successor. ff_h_pointmod_quotient_successor + S (ff_s_pointmod_quotient) = S ((S (S ff_i_pointmod_quotient)) * ff_v_pointmod_quotient)) /\ exists ff_q_pointmod_quotient_successor. ff_u_pointmod_quotient = ff_q_pointmod_quotient_successor * S ((S (S ff_i_pointmod_quotient)) * ff_v_pointmod_quotient) + (ff_s_pointmod_quotient))) /\ ff_s_pointmod_quotient = ff_r_pointmod_quotient + ff_a_pointmod_quotient)))))) -> (exists ff_u_pointmod_magnitude ff_v_pointmod_magnitude. ((((exists ff_h_pointmod_magnitude_start. ff_h_pointmod_magnitude_start + S (0) = S ((S (0)) * ff_v_pointmod_magnitude)) /\ exists ff_q_pointmod_magnitude_start. ff_u_pointmod_magnitude = ff_q_pointmod_magnitude_start * S ((S (0)) * ff_v_pointmod_magnitude) + (0))) /\ ((((exists ff_h_pointmod_magnitude_terminal. ff_h_pointmod_magnitude_terminal + S (M) = S ((S (l)) * ff_v_pointmod_magnitude)) /\ exists ff_q_pointmod_magnitude_terminal. ff_u_pointmod_magnitude = ff_q_pointmod_magnitude_terminal * S ((S (l)) * ff_v_pointmod_magnitude) + (M))) /\ forall ff_i_pointmod_magnitude. (exists ff_lt_pointmod_magnitude_bound. ff_lt_pointmod_magnitude_bound + S ff_i_pointmod_magnitude = l) -> exists ff_a_pointmod_magnitude ff_r_pointmod_magnitude ff_s_pointmod_magnitude. ((((exists ff_h_pointmod_magnitude_summand. ff_h_pointmod_magnitude_summand + S (ff_a_pointmod_magnitude) = S ((S (ff_i_pointmod_magnitude)) * mc)) /\ exists ff_q_pointmod_magnitude_summand. mb = ff_q_pointmod_magnitude_summand * S ((S (ff_i_pointmod_magnitude)) * mc) + (ff_a_pointmod_magnitude))) /\ ((((exists ff_h_pointmod_magnitude_partial. ff_h_pointmod_magnitude_partial + S (ff_r_pointmod_magnitude) = S ((S (ff_i_pointmod_magnitude)) * ff_v_pointmod_magnitude)) /\ exists ff_q_pointmod_magnitude_partial. ff_u_pointmod_magnitude = ff_q_pointmod_magnitude_partial * S ((S (ff_i_pointmod_magnitude)) * ff_v_pointmod_magnitude) + (ff_r_pointmod_magnitude))) /\ ((((exists ff_h_pointmod_magnitude_successor. ff_h_pointmod_magnitude_successor + S (ff_s_pointmod_magnitude) = S ((S (S ff_i_pointmod_magnitude)) * ff_v_pointmod_magnitude)) /\ exists ff_q_pointmod_magnitude_successor. ff_u_pointmod_magnitude = ff_q_pointmod_magnitude_successor * S ((S (S ff_i_pointmod_magnitude)) * ff_v_pointmod_magnitude) + (ff_s_pointmod_magnitude))) /\ ff_s_pointmod_magnitude = ff_r_pointmod_magnitude + ff_a_pointmod_magnitude)))))) -> (exists ff_u_pointmod_sign ff_v_pointmod_sign. ((((exists ff_h_pointmod_sign_start. ff_h_pointmod_sign_start + S (0) = S ((S (0)) * ff_v_pointmod_sign)) /\ exists ff_q_pointmod_sign_start. ff_u_pointmod_sign = ff_q_pointmod_sign_start * S ((S (0)) * ff_v_pointmod_sign) + (0))) /\ ((((exists ff_h_pointmod_sign_terminal. ff_h_pointmod_sign_terminal + S (E) = S ((S (l)) * ff_v_pointmod_sign)) /\ exists ff_q_pointmod_sign_terminal. ff_u_pointmod_sign = ff_q_pointmod_sign_terminal * S ((S (l)) * ff_v_pointmod_sign) + (E))) /\ forall ff_i_pointmod_sign. (exists ff_lt_pointmod_sign_bound. ff_lt_pointmod_sign_bound + S ff_i_pointmod_sign = l) -> exists ff_a_pointmod_sign ff_r_pointmod_sign ff_s_pointmod_sign. ((((exists ff_h_pointmod_sign_summand. ff_h_pointmod_sign_summand + S (ff_a_pointmod_sign) = S ((S (ff_i_pointmod_sign)) * sc)) /\ exists ff_q_pointmod_sign_summand. sb = ff_q_pointmod_sign_summand * S ((S (ff_i_pointmod_sign)) * sc) + (ff_a_pointmod_sign))) /\ ((((exists ff_h_pointmod_sign_partial. ff_h_pointmod_sign_partial + S (ff_r_pointmod_sign) = S ((S (ff_i_pointmod_sign)) * ff_v_pointmod_sign)) /\ exists ff_q_pointmod_sign_partial. ff_u_pointmod_sign = ff_q_pointmod_sign_partial * S ((S (ff_i_pointmod_sign)) * ff_v_pointmod_sign) + (ff_r_pointmod_sign))) /\ ((((exists ff_h_pointmod_sign_successor. ff_h_pointmod_sign_successor + S (ff_s_pointmod_sign) = S ((S (S ff_i_pointmod_sign)) * ff_v_pointmod_sign)) /\ exists ff_q_pointmod_sign_successor. ff_u_pointmod_sign = ff_q_pointmod_sign_successor * S ((S (S ff_i_pointmod_sign)) * ff_v_pointmod_sign) + (ff_s_pointmod_sign))) /\ ff_s_pointmod_sign = ff_r_pointmod_sign + ff_a_pointmod_sign)))))) -> (forall i x q m s. (exists h. h + S i = l) -> (((exists ff_h_pointmod_source_entry. ff_h_pointmod_source_entry + S (x) = S ((S (i)) * c)) /\ exists ff_q_pointmod_source_entry. b = ff_q_pointmod_source_entry * S ((S (i)) * c) + (x))) -> (((exists ff_h_pointmod_quotient_entry. ff_h_pointmod_quotient_entry + S (q) = S ((S (i)) * qc)) /\ exists ff_q_pointmod_quotient_entry. qb = ff_q_pointmod_quotient_entry * S ((S (i)) * qc) + (q))) -> (((exists ff_h_pointmod_magnitude_entry. ff_h_pointmod_magnitude_entry + S (m) = S ((S (i)) * mc)) /\ exists ff_q_pointmod_magnitude_entry. mb = ff_q_pointmod_magnitude_entry * S ((S (i)) * mc) + (m))) -> (((exists ff_h_pointmod_sign_entry. ff_h_pointmod_sign_entry + S (s) = S ((S (i)) * sc)) /\ exists ff_q_pointmod_sign_entry. sb = ff_q_pointmod_sign_entry * S ((S (i)) * sc) + (s))) -> (exists fspm_u_pointmod_entry fspm_v_pointmod_entry. (x) + d * fspm_u_pointmod_entry = (q + m + s) + d * fspm_v_pointmod_entry)) -> (exists fspm_u_pointmod_endpoint fspm_v_pointmod_endpoint. (X) + d * fspm_u_pointmod_endpoint = (Q + M + E) + d * fspm_v_pointmod_endpoint)Structural proof guide
Generated structural guide
Pointwise x==q+m+s congruence lifts to the four exact Sum endpoints.
Use the direct prerequisites beta_sum_zero, beta_sum_succ_decompose, mod_eq_add, le_succ, le_refl, add_assoc, add_comm, add_permute_outer as previously established PA formulas.
The proof proceeds by structural induction (1), case analysis (16), intermediate claims (13), equality transport (9), certified simplification (1), closed numeral normalization (1).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0047 beta_sum_zero PA003Y beta_sum_succ_decompose PA0022 mod_eq_add PA002O le_succ PA001A le_refl PA0009 add_assoc PA000F add_comm PA001I add_permute_outerDirect 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 d - 0002
intro b - 0003
intro c - 0004
intro qb - 0005
intro qc - 0006
intro mb - 0007
intro mc - 0008
intro sb - 0009
intro sc - 0010
induction l - 0011
intro X - 0012
intro Q - 0013
intro M - 0014
intro E - 0015
intro hsource - 0016
intro hquotient - 0017
intro hmagnitude - 0018
intro hsign - 0019
intro hpointwise - 0020
have hX : X = 0 - 0021
specialize beta_sum_zero b - 0022
specialize beta_sum_zero c - 0023
specialize beta_sum_zero X - 0024
apply beta_sum_zero - 0025
exact hsource - 0026
have hQ : Q = 0 - 0027
specialize beta_sum_zero qb - 0028
specialize beta_sum_zero qc - 0029
specialize beta_sum_zero Q - 0030
apply beta_sum_zero - 0031
exact hquotient - 0032
have hM : M = 0 - 0033
specialize beta_sum_zero mb - 0034
specialize beta_sum_zero mc - 0035
specialize beta_sum_zero M - 0036
apply beta_sum_zero - 0037
exact hmagnitude - 0038
have hE : E = 0 - 0039
specialize beta_sum_zero sb - 0040
specialize beta_sum_zero sc - 0041
specialize beta_sum_zero E - 0042
apply beta_sum_zero - 0043
exact hsign - 0044
rewrite hX - 0045
rewrite hQ - 0046
rewrite hM - 0047
rewrite hE - 0048
exists 0 - 0049
exists 0 - 0050
norm_num - 0051
intro X - 0052
intro Q - 0053
intro M - 0054
intro E - 0055
intro hsource - 0056
intro hquotient - 0057
intro hmagnitude - 0058
intro hsign - 0059
intro hpointwise - 0060
have hsource_decomp : exists a r. (((exists ff_h_pointmod_source_decomp_entry. ff_h_pointmod_source_decomp_entry + S (a) = S ((S (l)) * c)) /\ exists ff_q_pointmod_source_decomp_entry. b = ff_q_pointmod_source_decomp_entry * S ((S (l)) * c) + (a))) /\ ((exists ff_u_pointmod_source_decomp_prefix ff_v_pointmod_source_decomp_prefix. ((((exists ff_h_pointmod_source_decomp_prefix_start. ff_h_pointmod_source_decomp_prefix_start + S (0) = S ((S (0)) * ff_v_pointmod_source_decomp_prefix)) /\ exists ff_q_pointmod_source_decomp_prefix_start. ff_u_pointmod_source_decomp_prefix = ff_q_pointmod_source_decomp_prefix_start * S ((S (0)) * ff_v_pointmod_source_decomp_prefix) + (0))) /\ ((((exists ff_h_pointmod_source_decomp_prefix_terminal. ff_h_pointmod_source_decomp_prefix_terminal + S (r) = S ((S (l)) * ff_v_pointmod_source_decomp_prefix)) /\ exists ff_q_pointmod_source_decomp_prefix_terminal. ff_u_pointmod_source_decomp_prefix = ff_q_pointmod_source_decomp_prefix_terminal * S ((S (l)) * ff_v_pointmod_source_decomp_prefix) + (r))) /\ forall ff_i_pointmod_source_decomp_prefix. (exists ff_lt_pointmod_source_decomp_prefix_bound. ff_lt_pointmod_source_decomp_prefix_bound + S ff_i_pointmod_source_decomp_prefix = l) -> exists ff_a_pointmod_source_decomp_prefix ff_r_pointmod_source_decomp_prefix ff_s_pointmod_source_decomp_prefix. ((((exists ff_h_pointmod_source_decomp_prefix_summand. ff_h_pointmod_source_decomp_prefix_summand + S (ff_a_pointmod_source_decomp_prefix) = S ((S (ff_i_pointmod_source_decomp_prefix)) * c)) /\ exists ff_q_pointmod_source_decomp_prefix_summand. b = ff_q_pointmod_source_decomp_prefix_summand * S ((S (ff_i_pointmod_source_decomp_prefix)) * c) + (ff_a_pointmod_source_decomp_prefix))) /\ ((((exists ff_h_pointmod_source_decomp_prefix_partial. ff_h_pointmod_source_decomp_prefix_partial + S (ff_r_pointmod_source_decomp_prefix) = S ((S (ff_i_pointmod_source_decomp_prefix)) * ff_v_pointmod_source_decomp_prefix)) /\ exists ff_q_pointmod_source_decomp_prefix_partial. ff_u_pointmod_source_decomp_prefix = ff_q_pointmod_source_decomp_prefix_partial * S ((S (ff_i_pointmod_source_decomp_prefix)) * ff_v_pointmod_source_decomp_prefix) + (ff_r_pointmod_source_decomp_prefix))) /\ ((((exists ff_h_pointmod_source_decomp_prefix_successor. ff_h_pointmod_source_decomp_prefix_successor + S (ff_s_pointmod_source_decomp_prefix) = S ((S (S ff_i_pointmod_source_decomp_prefix)) * ff_v_pointmod_source_decomp_prefix)) /\ exists ff_q_pointmod_source_decomp_prefix_successor. ff_u_pointmod_source_decomp_prefix = ff_q_pointmod_source_decomp_prefix_successor * S ((S (S ff_i_pointmod_source_decomp_prefix)) * ff_v_pointmod_source_decomp_prefix) + (ff_s_pointmod_source_decomp_prefix))) /\ ff_s_pointmod_source_decomp_prefix = ff_r_pointmod_source_decomp_prefix + ff_a_pointmod_source_decomp_prefix)))))) /\ X = r + a) - 0061
specialize beta_sum_succ_decompose b - 0062
specialize beta_sum_succ_decompose c - 0063
specialize beta_sum_succ_decompose l - 0064
specialize beta_sum_succ_decompose X - 0065
apply beta_sum_succ_decompose - 0066
exact hsource - 0067
cases hsource_decomp - 0068
cases hsource_decomp_witness - 0069
cases hsource_decomp_witness_witness - 0070
cases hsource_decomp_witness_witness_right - 0071
have hquotient_decomp : exists a r. (((exists ff_h_pointmod_quotient_decomp_entry. ff_h_pointmod_quotient_decomp_entry + S (a) = S ((S (l)) * qc)) /\ exists ff_q_pointmod_quotient_decomp_entry. qb = ff_q_pointmod_quotient_decomp_entry * S ((S (l)) * qc) + (a))) /\ ((exists ff_u_pointmod_quotient_decomp_prefix ff_v_pointmod_quotient_decomp_prefix. ((((exists ff_h_pointmod_quotient_decomp_prefix_start. ff_h_pointmod_quotient_decomp_prefix_start + S (0) = S ((S (0)) * ff_v_pointmod_quotient_decomp_prefix)) /\ exists ff_q_pointmod_quotient_decomp_prefix_start. ff_u_pointmod_quotient_decomp_prefix = ff_q_pointmod_quotient_decomp_prefix_start * S ((S (0)) * ff_v_pointmod_quotient_decomp_prefix) + (0))) /\ ((((exists ff_h_pointmod_quotient_decomp_prefix_terminal. ff_h_pointmod_quotient_decomp_prefix_terminal + S (r) = S ((S (l)) * ff_v_pointmod_quotient_decomp_prefix)) /\ exists ff_q_pointmod_quotient_decomp_prefix_terminal. ff_u_pointmod_quotient_decomp_prefix = ff_q_pointmod_quotient_decomp_prefix_terminal * S ((S (l)) * ff_v_pointmod_quotient_decomp_prefix) + (r))) /\ forall ff_i_pointmod_quotient_decomp_prefix. (exists ff_lt_pointmod_quotient_decomp_prefix_bound. ff_lt_pointmod_quotient_decomp_prefix_bound + S ff_i_pointmod_quotient_decomp_prefix = l) -> exists ff_a_pointmod_quotient_decomp_prefix ff_r_pointmod_quotient_decomp_prefix ff_s_pointmod_quotient_decomp_prefix. ((((exists ff_h_pointmod_quotient_decomp_prefix_summand. ff_h_pointmod_quotient_decomp_prefix_summand + S (ff_a_pointmod_quotient_decomp_prefix) = S ((S (ff_i_pointmod_quotient_decomp_prefix)) * qc)) /\ exists ff_q_pointmod_quotient_decomp_prefix_summand. qb = ff_q_pointmod_quotient_decomp_prefix_summand * S ((S (ff_i_pointmod_quotient_decomp_prefix)) * qc) + (ff_a_pointmod_quotient_decomp_prefix))) /\ ((((exists ff_h_pointmod_quotient_decomp_prefix_partial. ff_h_pointmod_quotient_decomp_prefix_partial + S (ff_r_pointmod_quotient_decomp_prefix) = S ((S (ff_i_pointmod_quotient_decomp_prefix)) * ff_v_pointmod_quotient_decomp_prefix)) /\ exists ff_q_pointmod_quotient_decomp_prefix_partial. ff_u_pointmod_quotient_decomp_prefix = ff_q_pointmod_quotient_decomp_prefix_partial * S ((S (ff_i_pointmod_quotient_decomp_prefix)) * ff_v_pointmod_quotient_decomp_prefix) + (ff_r_pointmod_quotient_decomp_prefix))) /\ ((((exists ff_h_pointmod_quotient_decomp_prefix_successor. ff_h_pointmod_quotient_decomp_prefix_successor + S (ff_s_pointmod_quotient_decomp_prefix) = S ((S (S ff_i_pointmod_quotient_decomp_prefix)) * ff_v_pointmod_quotient_decomp_prefix)) /\ exists ff_q_pointmod_quotient_decomp_prefix_successor. ff_u_pointmod_quotient_decomp_prefix = ff_q_pointmod_quotient_decomp_prefix_successor * S ((S (S ff_i_pointmod_quotient_decomp_prefix)) * ff_v_pointmod_quotient_decomp_prefix) + (ff_s_pointmod_quotient_decomp_prefix))) /\ ff_s_pointmod_quotient_decomp_prefix = ff_r_pointmod_quotient_decomp_prefix + ff_a_pointmod_quotient_decomp_prefix)))))) /\ Q = r + a) - 0072
specialize beta_sum_succ_decompose qb - 0073
specialize beta_sum_succ_decompose qc - 0074
specialize beta_sum_succ_decompose l - 0075
specialize beta_sum_succ_decompose Q - 0076
apply beta_sum_succ_decompose - 0077
exact hquotient - 0078
cases hquotient_decomp - 0079
cases hquotient_decomp_witness - 0080
cases hquotient_decomp_witness_witness - 0081
cases hquotient_decomp_witness_witness_right - 0082
have hmagnitude_decomp : exists a r. (((exists ff_h_pointmod_magnitude_decomp_entry. ff_h_pointmod_magnitude_decomp_entry + S (a) = S ((S (l)) * mc)) /\ exists ff_q_pointmod_magnitude_decomp_entry. mb = ff_q_pointmod_magnitude_decomp_entry * S ((S (l)) * mc) + (a))) /\ ((exists ff_u_pointmod_magnitude_decomp_prefix ff_v_pointmod_magnitude_decomp_prefix. ((((exists ff_h_pointmod_magnitude_decomp_prefix_start. ff_h_pointmod_magnitude_decomp_prefix_start + S (0) = S ((S (0)) * ff_v_pointmod_magnitude_decomp_prefix)) /\ exists ff_q_pointmod_magnitude_decomp_prefix_start. ff_u_pointmod_magnitude_decomp_prefix = ff_q_pointmod_magnitude_decomp_prefix_start * S ((S (0)) * ff_v_pointmod_magnitude_decomp_prefix) + (0))) /\ ((((exists ff_h_pointmod_magnitude_decomp_prefix_terminal. ff_h_pointmod_magnitude_decomp_prefix_terminal + S (r) = S ((S (l)) * ff_v_pointmod_magnitude_decomp_prefix)) /\ exists ff_q_pointmod_magnitude_decomp_prefix_terminal. ff_u_pointmod_magnitude_decomp_prefix = ff_q_pointmod_magnitude_decomp_prefix_terminal * S ((S (l)) * ff_v_pointmod_magnitude_decomp_prefix) + (r))) /\ forall ff_i_pointmod_magnitude_decomp_prefix. (exists ff_lt_pointmod_magnitude_decomp_prefix_bound. ff_lt_pointmod_magnitude_decomp_prefix_bound + S ff_i_pointmod_magnitude_decomp_prefix = l) -> exists ff_a_pointmod_magnitude_decomp_prefix ff_r_pointmod_magnitude_decomp_prefix ff_s_pointmod_magnitude_decomp_prefix. ((((exists ff_h_pointmod_magnitude_decomp_prefix_summand. ff_h_pointmod_magnitude_decomp_prefix_summand + S (ff_a_pointmod_magnitude_decomp_prefix) = S ((S (ff_i_pointmod_magnitude_decomp_prefix)) * mc)) /\ exists ff_q_pointmod_magnitude_decomp_prefix_summand. mb = ff_q_pointmod_magnitude_decomp_prefix_summand * S ((S (ff_i_pointmod_magnitude_decomp_prefix)) * mc) + (ff_a_pointmod_magnitude_decomp_prefix))) /\ ((((exists ff_h_pointmod_magnitude_decomp_prefix_partial. ff_h_pointmod_magnitude_decomp_prefix_partial + S (ff_r_pointmod_magnitude_decomp_prefix) = S ((S (ff_i_pointmod_magnitude_decomp_prefix)) * ff_v_pointmod_magnitude_decomp_prefix)) /\ exists ff_q_pointmod_magnitude_decomp_prefix_partial. ff_u_pointmod_magnitude_decomp_prefix = ff_q_pointmod_magnitude_decomp_prefix_partial * S ((S (ff_i_pointmod_magnitude_decomp_prefix)) * ff_v_pointmod_magnitude_decomp_prefix) + (ff_r_pointmod_magnitude_decomp_prefix))) /\ ((((exists ff_h_pointmod_magnitude_decomp_prefix_successor. ff_h_pointmod_magnitude_decomp_prefix_successor + S (ff_s_pointmod_magnitude_decomp_prefix) = S ((S (S ff_i_pointmod_magnitude_decomp_prefix)) * ff_v_pointmod_magnitude_decomp_prefix)) /\ exists ff_q_pointmod_magnitude_decomp_prefix_successor. ff_u_pointmod_magnitude_decomp_prefix = ff_q_pointmod_magnitude_decomp_prefix_successor * S ((S (S ff_i_pointmod_magnitude_decomp_prefix)) * ff_v_pointmod_magnitude_decomp_prefix) + (ff_s_pointmod_magnitude_decomp_prefix))) /\ ff_s_pointmod_magnitude_decomp_prefix = ff_r_pointmod_magnitude_decomp_prefix + ff_a_pointmod_magnitude_decomp_prefix)))))) /\ M = r + a) - 0083
specialize beta_sum_succ_decompose mb - 0084
specialize beta_sum_succ_decompose mc - 0085
specialize beta_sum_succ_decompose l - 0086
specialize beta_sum_succ_decompose M - 0087
apply beta_sum_succ_decompose - 0088
exact hmagnitude - 0089
cases hmagnitude_decomp - 0090
cases hmagnitude_decomp_witness - 0091
cases hmagnitude_decomp_witness_witness - 0092
cases hmagnitude_decomp_witness_witness_right - 0093
have hsign_decomp : exists a r. (((exists ff_h_pointmod_sign_decomp_entry. ff_h_pointmod_sign_decomp_entry + S (a) = S ((S (l)) * sc)) /\ exists ff_q_pointmod_sign_decomp_entry. sb = ff_q_pointmod_sign_decomp_entry * S ((S (l)) * sc) + (a))) /\ ((exists ff_u_pointmod_sign_decomp_prefix ff_v_pointmod_sign_decomp_prefix. ((((exists ff_h_pointmod_sign_decomp_prefix_start. ff_h_pointmod_sign_decomp_prefix_start + S (0) = S ((S (0)) * ff_v_pointmod_sign_decomp_prefix)) /\ exists ff_q_pointmod_sign_decomp_prefix_start. ff_u_pointmod_sign_decomp_prefix = ff_q_pointmod_sign_decomp_prefix_start * S ((S (0)) * ff_v_pointmod_sign_decomp_prefix) + (0))) /\ ((((exists ff_h_pointmod_sign_decomp_prefix_terminal. ff_h_pointmod_sign_decomp_prefix_terminal + S (r) = S ((S (l)) * ff_v_pointmod_sign_decomp_prefix)) /\ exists ff_q_pointmod_sign_decomp_prefix_terminal. ff_u_pointmod_sign_decomp_prefix = ff_q_pointmod_sign_decomp_prefix_terminal * S ((S (l)) * ff_v_pointmod_sign_decomp_prefix) + (r))) /\ forall ff_i_pointmod_sign_decomp_prefix. (exists ff_lt_pointmod_sign_decomp_prefix_bound. ff_lt_pointmod_sign_decomp_prefix_bound + S ff_i_pointmod_sign_decomp_prefix = l) -> exists ff_a_pointmod_sign_decomp_prefix ff_r_pointmod_sign_decomp_prefix ff_s_pointmod_sign_decomp_prefix. ((((exists ff_h_pointmod_sign_decomp_prefix_summand. ff_h_pointmod_sign_decomp_prefix_summand + S (ff_a_pointmod_sign_decomp_prefix) = S ((S (ff_i_pointmod_sign_decomp_prefix)) * sc)) /\ exists ff_q_pointmod_sign_decomp_prefix_summand. sb = ff_q_pointmod_sign_decomp_prefix_summand * S ((S (ff_i_pointmod_sign_decomp_prefix)) * sc) + (ff_a_pointmod_sign_decomp_prefix))) /\ ((((exists ff_h_pointmod_sign_decomp_prefix_partial. ff_h_pointmod_sign_decomp_prefix_partial + S (ff_r_pointmod_sign_decomp_prefix) = S ((S (ff_i_pointmod_sign_decomp_prefix)) * ff_v_pointmod_sign_decomp_prefix)) /\ exists ff_q_pointmod_sign_decomp_prefix_partial. ff_u_pointmod_sign_decomp_prefix = ff_q_pointmod_sign_decomp_prefix_partial * S ((S (ff_i_pointmod_sign_decomp_prefix)) * ff_v_pointmod_sign_decomp_prefix) + (ff_r_pointmod_sign_decomp_prefix))) /\ ((((exists ff_h_pointmod_sign_decomp_prefix_successor. ff_h_pointmod_sign_decomp_prefix_successor + S (ff_s_pointmod_sign_decomp_prefix) = S ((S (S ff_i_pointmod_sign_decomp_prefix)) * ff_v_pointmod_sign_decomp_prefix)) /\ exists ff_q_pointmod_sign_decomp_prefix_successor. ff_u_pointmod_sign_decomp_prefix = ff_q_pointmod_sign_decomp_prefix_successor * S ((S (S ff_i_pointmod_sign_decomp_prefix)) * ff_v_pointmod_sign_decomp_prefix) + (ff_s_pointmod_sign_decomp_prefix))) /\ ff_s_pointmod_sign_decomp_prefix = ff_r_pointmod_sign_decomp_prefix + ff_a_pointmod_sign_decomp_prefix)))))) /\ E = r + a) - 0094
specialize beta_sum_succ_decompose sb - 0095
specialize beta_sum_succ_decompose sc - 0096
specialize beta_sum_succ_decompose l - 0097
specialize beta_sum_succ_decompose E - 0098
apply beta_sum_succ_decompose - 0099
exact hsign - 0100
cases hsign_decomp - 0101
cases hsign_decomp_witness - 0102
cases hsign_decomp_witness_witness - 0103
cases hsign_decomp_witness_witness_right - 0104
have hprefix_pointwise : forall i x q m s. (exists h. h + S i = l) -> (((exists ff_h_pointmod_prefix_source_entry. ff_h_pointmod_prefix_source_entry + S (x) = S ((S (i)) * c)) /\ exists ff_q_pointmod_prefix_source_entry. b = ff_q_pointmod_prefix_source_entry * S ((S (i)) * c) + (x))) -> (((exists ff_h_pointmod_prefix_quotient_entry. ff_h_pointmod_prefix_quotient_entry + S (q) = S ((S (i)) * qc)) /\ exists ff_q_pointmod_prefix_quotient_entry. qb = ff_q_pointmod_prefix_quotient_entry * S ((S (i)) * qc) + (q))) -> (((exists ff_h_pointmod_prefix_magnitude_entry. ff_h_pointmod_prefix_magnitude_entry + S (m) = S ((S (i)) * mc)) /\ exists ff_q_pointmod_prefix_magnitude_entry. mb = ff_q_pointmod_prefix_magnitude_entry * S ((S (i)) * mc) + (m))) -> (((exists ff_h_pointmod_prefix_sign_entry. ff_h_pointmod_prefix_sign_entry + S (s) = S ((S (i)) * sc)) /\ exists ff_q_pointmod_prefix_sign_entry. sb = ff_q_pointmod_prefix_sign_entry * S ((S (i)) * sc) + (s))) -> (exists fspm_u_pointmod_prefix_entry fspm_v_pointmod_prefix_entry. (x) + d * fspm_u_pointmod_prefix_entry = (q + m + s) + d * fspm_v_pointmod_prefix_entry) - 0105
intro i - 0106
intro y - 0107
intro q - 0108
intro m - 0109
intro s - 0110
intro hi - 0111
intro hy - 0112
intro hq - 0113
intro hm - 0114
intro hs - 0115
specialize hpointwise i - 0116
specialize hpointwise y - 0117
specialize hpointwise q - 0118
specialize hpointwise m - 0119
specialize hpointwise s - 0120
apply hpointwise - 0121
specialize le_succ (S i) - 0122
specialize le_succ l - 0123
apply le_succ - 0124
exact hi - 0125
exact hy - 0126
exact hq - 0127
exact hm - 0128
exact hs - 0129
have hprefix : exists fspm_u_pointmod_prefix fspm_v_pointmod_prefix. (x1) + d * fspm_u_pointmod_prefix = (x3 + x5 + x7) + d * fspm_v_pointmod_prefix - 0130
specialize IH x1 - 0131
specialize IH x3 - 0132
specialize IH x5 - 0133
specialize IH x7 - 0134
apply IH - 0135
exact hsource_decomp_witness_witness_right_left - 0136
exact hquotient_decomp_witness_witness_right_left - 0137
exact hmagnitude_decomp_witness_witness_right_left - 0138
exact hsign_decomp_witness_witness_right_left - 0139
exact hprefix_pointwise - 0140
have hlast : exists fspm_u_pointmod_last fspm_v_pointmod_last. (x) + d * fspm_u_pointmod_last = (x2 + x4 + x6) + d * fspm_v_pointmod_last - 0141
specialize hpointwise l - 0142
specialize hpointwise x - 0143
specialize hpointwise x2 - 0144
specialize hpointwise x4 - 0145
specialize hpointwise x6 - 0146
apply hpointwise - 0147
specialize le_refl (S l) - 0148
exact le_refl - 0149
exact hsource_decomp_witness_witness_left - 0150
exact hquotient_decomp_witness_witness_left - 0151
exact hmagnitude_decomp_witness_witness_left - 0152
exact hsign_decomp_witness_witness_left - 0153
have hcombined : exists fspm_u_pointmod_combined fspm_v_pointmod_combined. (x1 + x) + d * fspm_u_pointmod_combined = ((x3 + x5 + x7) + (x2 + x4 + x6)) + d * fspm_v_pointmod_combined - 0154
specialize mod_eq_add d - 0155
specialize mod_eq_add x1 - 0156
specialize mod_eq_add (x3 + x5 + x7) - 0157
specialize mod_eq_add x - 0158
specialize mod_eq_add (x2 + x4 + x6) - 0159
apply mod_eq_add - 0160
exact hprefix - 0161
exact hlast - 0162
have hreorder : (x3 + x5 + x7) + (x2 + x4 + x6) = (x3 + x2) + (x5 + x4) + (x7 + x6) - 0163
simp [add_assoc, add_comm, add_permute_outer] - 0164
congr - 0165
refl - 0166
congr - 0167
refl - 0168
trans (x7 + x4) + (x6 + x2) - 0169
symm - 0170
apply add_assoc - 0171
trans (x4 + x7) + (x6 + x2) - 0172
congr - 0173
apply add_comm - 0174
refl - 0175
apply add_assoc - 0176
rewrite hreorder at hcombined - 0177
rewrite hsource_decomp_witness_witness_right_right - 0178
rewrite hquotient_decomp_witness_witness_right_right - 0179
rewrite hmagnitude_decomp_witness_witness_right_right - 0180
rewrite hsign_decomp_witness_witness_right_right - 0181
exact hcombined