Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.
Statement with defined notation
∀ d. ∀ b. ∀ c. ∀ qb. ∀ qc. ∀ mb. ∀ mc. ∀ sb. ∀ sc. ∀ l. ∀ X. ∀ Q. ∀ M. ∀ E. Sum(b,c,l,X) → Sum(qb,qc,l,Q) → Sum(mb,mc,l,M) → Sum(sb,sc,l,E) → (∀ x. ∀ y. ∀ z. ∀ n. ∀ m. Lt(x,l) → BetaAt(b,c,x,y) → BetaAt(qb,qc,x,z) → BetaAt(mb,mc,x,n) → BetaAt(sb,sc,x,m) → ModEq(d,y,z + n + m)) → ModEq(d,X,Q + M + E)Every purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.
Definitions used by this theorem
In the theorem statement
11 occurrences
In local proof propositions
17 occurrences
Exact expanded native-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)Proof neighborhood
Direct theorem prerequisites
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 theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed command.
Read the argument
Proof checkpoints
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
Named ingredients (7)
01Fix variables and assumptionsL1–9
02Induction on lL10–19
03Establish hXL20–25
04Establish hQL26–31
05Establish hML32–37
06Establish hEL38–47
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum zero.
07Construct an explicit witnessL48–49
08Calculate and transport equalitiesL50–50
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L50
norm_num
09Fix variables and assumptionsL51–59
10Establish hsource_decompL60–66
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
- L60
have hsource_decomp : ∃ a. ∃ r. BetaAt(b,c,l,a) ∧ (Sum(b,c,l,r) ∧ X = r + a)Definitions: BetaAt(b,c,l,a)Sum(b,c,l,r)Original native command in the exact edition - L61
specialize beta_sum_succ_decompose b - L62
specialize beta_sum_succ_decompose c - L63
specialize beta_sum_succ_decompose l - L64
specialize beta_sum_succ_decompose X - L65
apply beta_sum_succ_decompose - L66
exact hsource
11Separate the logical casesL67–70
12Establish hquotient_decompL71–77
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
- L71
have hquotient_decomp : ∃ a. ∃ r. BetaAt(qb,qc,l,a) ∧ (Sum(qb,qc,l,r) ∧ Q = r + a)Definitions: BetaAt(qb,qc,l,a)Sum(qb,qc,l,r)Original native command in the exact edition - L72
specialize beta_sum_succ_decompose qb - L73
specialize beta_sum_succ_decompose qc - L74
specialize beta_sum_succ_decompose l - L75
specialize beta_sum_succ_decompose Q - L76
apply beta_sum_succ_decompose - L77
exact hquotient
13Separate the logical casesL78–81
14Establish hmagnitude_decompL82–88
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
- L82
have hmagnitude_decomp : ∃ a. ∃ r. BetaAt(mb,mc,l,a) ∧ (Sum(mb,mc,l,r) ∧ M = r + a)Definitions: BetaAt(mb,mc,l,a)Sum(mb,mc,l,r)Original native command in the exact edition - L83
specialize beta_sum_succ_decompose mb - L84
specialize beta_sum_succ_decompose mc - L85
specialize beta_sum_succ_decompose l - L86
specialize beta_sum_succ_decompose M - L87
apply beta_sum_succ_decompose - L88
exact hmagnitude
15Separate the logical casesL89–92
16Establish hsign_decompL93–99
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
- L93
have hsign_decomp : ∃ a. ∃ r. BetaAt(sb,sc,l,a) ∧ (Sum(sb,sc,l,r) ∧ E = r + a)Definitions: BetaAt(sb,sc,l,a)Sum(sb,sc,l,r)Original native command in the exact edition - L94
specialize beta_sum_succ_decompose sb - L95
specialize beta_sum_succ_decompose sc - L96
specialize beta_sum_succ_decompose l - L97
specialize beta_sum_succ_decompose E - L98
apply beta_sum_succ_decompose - L99
exact hsign
17Separate the logical casesL100–103
18Establish hprefix_pointwiseL104–113
Establish this local claim before using it. It is not an additional assumption.
- L104
have hprefix_pointwise : ∀ i. ∀ x. ∀ q. ∀ m. ∀ s. Lt(i,l) → BetaAt(b,c,i,x) → BetaAt(qb,qc,i,q) → BetaAt(mb,mc,i,m) → BetaAt(sb,sc,i,s) → ModEq(d,x,q + m + s)Definitions: Lt(i,l)BetaAt(b,c,i,x)BetaAt(qb,qc,i,q)BetaAt(mb,mc,i,m)BetaAt(sb,sc,i,s)ModEq(d,x,q + m + s)Original native command in the exact edition - L105
intro i - L106
intro y - L107
intro q - L108
intro m - L109
intro s - L110
intro hi - L111
intro hy - L112
intro hq - L113
intro hm
19Fix variables and assumptionsL114–114
Work with arbitrary variables or the premises of the current implication.
- L114
intro hs
20Use earlier factsL115–124
Instantiate or apply named facts and discharge the corresponding proof obligations.
21Use earlier factsL125–128
22Establish hprefixL129–138
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L129
have hprefix : ModEq(d,x1,x3 + x5 + x7)Definitions: ModEq(d,x1,x3 + x5 + x7)Original native command in the exact edition - L130
specialize IH x1 - L131
specialize IH x3 - L132
specialize IH x5 - L133
specialize IH x7 - L134
apply IH - L135
exact hsource_decomp_witness_witness_right_left - L136
exact hquotient_decomp_witness_witness_right_left - L137
exact hmagnitude_decomp_witness_witness_right_left - L138
exact hsign_decomp_witness_witness_right_left
23Use earlier factsL139–139
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L139
exact hprefix_pointwise
24Establish hlastL140–149
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hpointwise.
- L140
have hlast : ModEq(d,x,x2 + x4 + x6)Definitions: ModEq(d,x,x2 + x4 + x6)Original native command in the exact edition - L141
specialize hpointwise l - L142
specialize hpointwise x - L143
specialize hpointwise x2 - L144
specialize hpointwise x4 - L145
specialize hpointwise x6 - L146
apply hpointwise - L147
specialize le_refl (S l) - L148
exact le_refl - L149
exact hsource_decomp_witness_witness_left
25Use earlier factsL150–152
26Establish hcombinedL153–161
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L153
have hcombined : ModEq(d,x1 + x,x3 + x5 + x7 + (x2 + x4 + x6))Definitions: ModEq(d,x1 + x,x3 + x5 + x7 + (x2 + x4 + x6))Original native command in the exact edition - L154
specialize mod_eq_add d - L155
specialize mod_eq_add x1 - L156
specialize mod_eq_add (x3 + x5 + x7) - L157
specialize mod_eq_add x - L158
specialize mod_eq_add (x2 + x4 + x6) - L159
apply mod_eq_add - L160
exact hprefix - L161
exact hlast
27Establish hreorderL162–171
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add assoc.
28Calculate and transport equalitiesL172–172
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L172
congr
29Use earlier factsL173–173
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L173
apply add_comm
30Calculate and transport equalitiesL174–174
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L174
refl
31Use earlier factsL175–175
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L175
apply add_assoc
32Calculate and transport equalitiesL176–180
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
33Use earlier factsL181–181
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L181
exact hcombined
Original defined command ledger · 181 lines
- 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 : ∃ a. ∃ r. BetaAt(b,c,l,a) ∧ (Sum(b,c,l,r) ∧ X = r + a)Exact native replay line
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 : ∃ a. ∃ r. BetaAt(qb,qc,l,a) ∧ (Sum(qb,qc,l,r) ∧ Q = r + a)Exact native replay line
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 : ∃ a. ∃ r. BetaAt(mb,mc,l,a) ∧ (Sum(mb,mc,l,r) ∧ M = r + a)Exact native replay line
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 : ∃ a. ∃ r. BetaAt(sb,sc,l,a) ∧ (Sum(sb,sc,l,r) ∧ E = r + a)Exact native replay line
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 : ∀ i. ∀ x. ∀ q. ∀ m. ∀ s. Lt(i,l) → BetaAt(b,c,i,x) → BetaAt(qb,qc,i,q) → BetaAt(mb,mc,i,m) → BetaAt(sb,sc,i,s) → ModEq(d,x,q + m + s)Exact native replay line
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 : ModEq(d,x1,x3 + x5 + x7)Exact native replay line
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 : ModEq(d,x,x2 + x4 + x6)Exact native replay line
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 : ModEq(d,x1 + x,x3 + x5 + x7 + (x2 + x4 + x6))Exact native replay line
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