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.
Exact expanded PA statement
forall p h a b c tb tc qb qc rb rc mb mc sb sc X Q M E. ((~(p = 1) /\ forall gsp_prime_left_ges_prime gsp_prime_right_ges_prime. p = gsp_prime_left_ges_prime * gsp_prime_right_ges_prime -> gsp_prime_left_ges_prime = 1 \/ gsp_prime_right_ges_prime = 1)) -> (~(exists gsp_divisor_factor_ges_nondivisor. a = p * gsp_divisor_factor_ges_nondivisor)) -> p = 2 * h + 1 -> (exists sdp_odd_ges_scale. a = 2 * sdp_odd_ges_scale + 1) -> (forall gsp_range_index_ges_half. (exists gsp_lt_gap_ges_half_range_bound. gsp_lt_gap_ges_half_range_bound + S gsp_range_index_ges_half = h) -> (((exists gsp_beta_height_ges_half_range_entry. gsp_beta_height_ges_half_range_entry + S (1 + gsp_range_index_ges_half) = S ((S (gsp_range_index_ges_half)) * c)) /\ exists gsp_beta_quotient_ges_half_range_entry. b = gsp_beta_quotient_ges_half_range_entry * S ((S (gsp_range_index_ges_half)) * c) + (1 + gsp_range_index_ges_half)))) -> (forall esd_index_ges_scaled esd_value_ges_scaled. (exists esd_gap_ges_scaled. esd_gap_ges_scaled + S esd_index_ges_scaled = h) -> (((exists ff_h_esd_ges_scaled_decoded. ff_h_esd_ges_scaled_decoded + S (esd_value_ges_scaled) = S ((S (esd_index_ges_scaled)) * tc)) /\ exists ff_q_esd_ges_scaled_decoded. tb = ff_q_esd_ges_scaled_decoded * S ((S (esd_index_ges_scaled)) * tc) + (esd_value_ges_scaled))) -> esd_value_ges_scaled = a * (1 + esd_index_ges_scaled)) -> (forall fdp_index_ges_division. (exists gsp_lt_gap_ges_division_index_bound. gsp_lt_gap_ges_division_index_bound + S fdp_index_ges_division = h) -> exists fdp_value_ges_division fdp_quotient_ges_division fdp_remainder_ges_division. (((exists ff_h_fdp_ges_division_source. ff_h_fdp_ges_division_source + S (fdp_value_ges_division) = S ((S (fdp_index_ges_division)) * tc)) /\ exists ff_q_fdp_ges_division_source. tb = ff_q_fdp_ges_division_source * S ((S (fdp_index_ges_division)) * tc) + (fdp_value_ges_division))) /\ ((((exists ff_h_fdp_ges_division_quotient_entry. ff_h_fdp_ges_division_quotient_entry + S (fdp_quotient_ges_division) = S ((S (fdp_index_ges_division)) * qc)) /\ exists ff_q_fdp_ges_division_quotient_entry. qb = ff_q_fdp_ges_division_quotient_entry * S ((S (fdp_index_ges_division)) * qc) + (fdp_quotient_ges_division))) /\ ((((exists ff_h_fdp_ges_division_remainder_entry. ff_h_fdp_ges_division_remainder_entry + S (fdp_remainder_ges_division) = S ((S (fdp_index_ges_division)) * rc)) /\ exists ff_q_fdp_ges_division_remainder_entry. rb = ff_q_fdp_ges_division_remainder_entry * S ((S (fdp_index_ges_division)) * rc) + (fdp_remainder_ges_division))) /\ (fdp_value_ges_division = p * fdp_quotient_ges_division + fdp_remainder_ges_division /\ (exists gsp_lt_gap_ges_division_remainder_bound. gsp_lt_gap_ges_division_remainder_bound + S fdp_remainder_ges_division = p))))) -> (forall gsp_index_ges_signed. (exists gsp_lt_gap_ges_signed_index_bound. gsp_lt_gap_ges_signed_index_bound + S gsp_index_ges_signed = h) -> (exists gsp_value_ges_signed_entry gsp_magnitude_ges_signed_entry gsp_sign_ges_signed_entry. (((exists ff_h_gsp_ges_signed_entry_source. ff_h_gsp_ges_signed_entry_source + S (gsp_value_ges_signed_entry) = S ((S (gsp_index_ges_signed)) * c)) /\ exists ff_q_gsp_ges_signed_entry_source. b = ff_q_gsp_ges_signed_entry_source * S ((S (gsp_index_ges_signed)) * c) + (gsp_value_ges_signed_entry))) /\ ((((exists ff_h_gsp_ges_signed_entry_magnitude. ff_h_gsp_ges_signed_entry_magnitude + S (gsp_magnitude_ges_signed_entry) = S ((S (gsp_index_ges_signed)) * mc)) /\ exists ff_q_gsp_ges_signed_entry_magnitude. mb = ff_q_gsp_ges_signed_entry_magnitude * S ((S (gsp_index_ges_signed)) * mc) + (gsp_magnitude_ges_signed_entry))) /\ ((((exists ff_h_gsp_ges_signed_entry_sign. ff_h_gsp_ges_signed_entry_sign + S (gsp_sign_ges_signed_entry) = S ((S (gsp_index_ges_signed)) * sc)) /\ exists ff_q_gsp_ges_signed_entry_sign. sb = ff_q_gsp_ges_signed_entry_sign * S ((S (gsp_index_ges_signed)) * sc) + (gsp_sign_ges_signed_entry))) /\ ((exists gsp_lt_gap_ges_signed_entry_positive. gsp_lt_gap_ges_signed_entry_positive + S 0 = gsp_magnitude_ges_signed_entry) /\ ((exists gsp_le_gap_ges_signed_entry_bounded. gsp_le_gap_ges_signed_entry_bounded + gsp_magnitude_ges_signed_entry = h) /\ ((gsp_sign_ges_signed_entry = 0 \/ gsp_sign_ges_signed_entry = 1) /\ (((gsp_sign_ges_signed_entry = 0 /\ (exists gsp_mod_left_ges_signed_entry_lower gsp_mod_right_ges_signed_entry_lower. (a * gsp_value_ges_signed_entry) + p * gsp_mod_left_ges_signed_entry_lower = (gsp_magnitude_ges_signed_entry) + p * gsp_mod_right_ges_signed_entry_lower)) \/ (gsp_sign_ges_signed_entry = 1 /\ (exists gsp_mod_left_ges_signed_entry_reflected gsp_mod_right_ges_signed_entry_reflected. (a * gsp_value_ges_signed_entry) + p * gsp_mod_left_ges_signed_entry_reflected = ((2 * h) * gsp_magnitude_ges_signed_entry) + p * gsp_mod_right_ges_signed_entry_reflected))))))))))) -> (exists ff_u_ges_half_sum ff_v_ges_half_sum. ((((exists ff_h_ges_half_sum_start. ff_h_ges_half_sum_start + S (0) = S ((S (0)) * ff_v_ges_half_sum)) /\ exists ff_q_ges_half_sum_start. ff_u_ges_half_sum = ff_q_ges_half_sum_start * S ((S (0)) * ff_v_ges_half_sum) + (0))) /\ ((((exists ff_h_ges_half_sum_terminal. ff_h_ges_half_sum_terminal + S (X) = S ((S (h)) * ff_v_ges_half_sum)) /\ exists ff_q_ges_half_sum_terminal. ff_u_ges_half_sum = ff_q_ges_half_sum_terminal * S ((S (h)) * ff_v_ges_half_sum) + (X))) /\ forall ff_i_ges_half_sum. (exists ff_lt_ges_half_sum_bound. ff_lt_ges_half_sum_bound + S ff_i_ges_half_sum = h) -> exists ff_a_ges_half_sum ff_r_ges_half_sum ff_s_ges_half_sum. ((((exists ff_h_ges_half_sum_summand. ff_h_ges_half_sum_summand + S (ff_a_ges_half_sum) = S ((S (ff_i_ges_half_sum)) * c)) /\ exists ff_q_ges_half_sum_summand. b = ff_q_ges_half_sum_summand * S ((S (ff_i_ges_half_sum)) * c) + (ff_a_ges_half_sum))) /\ ((((exists ff_h_ges_half_sum_partial. ff_h_ges_half_sum_partial + S (ff_r_ges_half_sum) = S ((S (ff_i_ges_half_sum)) * ff_v_ges_half_sum)) /\ exists ff_q_ges_half_sum_partial. ff_u_ges_half_sum = ff_q_ges_half_sum_partial * S ((S (ff_i_ges_half_sum)) * ff_v_ges_half_sum) + (ff_r_ges_half_sum))) /\ ((((exists ff_h_ges_half_sum_successor. ff_h_ges_half_sum_successor + S (ff_s_ges_half_sum) = S ((S (S ff_i_ges_half_sum)) * ff_v_ges_half_sum)) /\ exists ff_q_ges_half_sum_successor. ff_u_ges_half_sum = ff_q_ges_half_sum_successor * S ((S (S ff_i_ges_half_sum)) * ff_v_ges_half_sum) + (ff_s_ges_half_sum))) /\ ff_s_ges_half_sum = ff_r_ges_half_sum + ff_a_ges_half_sum)))))) -> (exists ff_u_ges_quotient_sum ff_v_ges_quotient_sum. ((((exists ff_h_ges_quotient_sum_start. ff_h_ges_quotient_sum_start + S (0) = S ((S (0)) * ff_v_ges_quotient_sum)) /\ exists ff_q_ges_quotient_sum_start. ff_u_ges_quotient_sum = ff_q_ges_quotient_sum_start * S ((S (0)) * ff_v_ges_quotient_sum) + (0))) /\ ((((exists ff_h_ges_quotient_sum_terminal. ff_h_ges_quotient_sum_terminal + S (Q) = S ((S (h)) * ff_v_ges_quotient_sum)) /\ exists ff_q_ges_quotient_sum_terminal. ff_u_ges_quotient_sum = ff_q_ges_quotient_sum_terminal * S ((S (h)) * ff_v_ges_quotient_sum) + (Q))) /\ forall ff_i_ges_quotient_sum. (exists ff_lt_ges_quotient_sum_bound. ff_lt_ges_quotient_sum_bound + S ff_i_ges_quotient_sum = h) -> exists ff_a_ges_quotient_sum ff_r_ges_quotient_sum ff_s_ges_quotient_sum. ((((exists ff_h_ges_quotient_sum_summand. ff_h_ges_quotient_sum_summand + S (ff_a_ges_quotient_sum) = S ((S (ff_i_ges_quotient_sum)) * qc)) /\ exists ff_q_ges_quotient_sum_summand. qb = ff_q_ges_quotient_sum_summand * S ((S (ff_i_ges_quotient_sum)) * qc) + (ff_a_ges_quotient_sum))) /\ ((((exists ff_h_ges_quotient_sum_partial. ff_h_ges_quotient_sum_partial + S (ff_r_ges_quotient_sum) = S ((S (ff_i_ges_quotient_sum)) * ff_v_ges_quotient_sum)) /\ exists ff_q_ges_quotient_sum_partial. ff_u_ges_quotient_sum = ff_q_ges_quotient_sum_partial * S ((S (ff_i_ges_quotient_sum)) * ff_v_ges_quotient_sum) + (ff_r_ges_quotient_sum))) /\ ((((exists ff_h_ges_quotient_sum_successor. ff_h_ges_quotient_sum_successor + S (ff_s_ges_quotient_sum) = S ((S (S ff_i_ges_quotient_sum)) * ff_v_ges_quotient_sum)) /\ exists ff_q_ges_quotient_sum_successor. ff_u_ges_quotient_sum = ff_q_ges_quotient_sum_successor * S ((S (S ff_i_ges_quotient_sum)) * ff_v_ges_quotient_sum) + (ff_s_ges_quotient_sum))) /\ ff_s_ges_quotient_sum = ff_r_ges_quotient_sum + ff_a_ges_quotient_sum)))))) -> (exists ff_u_ges_magnitude_sum ff_v_ges_magnitude_sum. ((((exists ff_h_ges_magnitude_sum_start. ff_h_ges_magnitude_sum_start + S (0) = S ((S (0)) * ff_v_ges_magnitude_sum)) /\ exists ff_q_ges_magnitude_sum_start. ff_u_ges_magnitude_sum = ff_q_ges_magnitude_sum_start * S ((S (0)) * ff_v_ges_magnitude_sum) + (0))) /\ ((((exists ff_h_ges_magnitude_sum_terminal. ff_h_ges_magnitude_sum_terminal + S (M) = S ((S (h)) * ff_v_ges_magnitude_sum)) /\ exists ff_q_ges_magnitude_sum_terminal. ff_u_ges_magnitude_sum = ff_q_ges_magnitude_sum_terminal * S ((S (h)) * ff_v_ges_magnitude_sum) + (M))) /\ forall ff_i_ges_magnitude_sum. (exists ff_lt_ges_magnitude_sum_bound. ff_lt_ges_magnitude_sum_bound + S ff_i_ges_magnitude_sum = h) -> exists ff_a_ges_magnitude_sum ff_r_ges_magnitude_sum ff_s_ges_magnitude_sum. ((((exists ff_h_ges_magnitude_sum_summand. ff_h_ges_magnitude_sum_summand + S (ff_a_ges_magnitude_sum) = S ((S (ff_i_ges_magnitude_sum)) * mc)) /\ exists ff_q_ges_magnitude_sum_summand. mb = ff_q_ges_magnitude_sum_summand * S ((S (ff_i_ges_magnitude_sum)) * mc) + (ff_a_ges_magnitude_sum))) /\ ((((exists ff_h_ges_magnitude_sum_partial. ff_h_ges_magnitude_sum_partial + S (ff_r_ges_magnitude_sum) = S ((S (ff_i_ges_magnitude_sum)) * ff_v_ges_magnitude_sum)) /\ exists ff_q_ges_magnitude_sum_partial. ff_u_ges_magnitude_sum = ff_q_ges_magnitude_sum_partial * S ((S (ff_i_ges_magnitude_sum)) * ff_v_ges_magnitude_sum) + (ff_r_ges_magnitude_sum))) /\ ((((exists ff_h_ges_magnitude_sum_successor. ff_h_ges_magnitude_sum_successor + S (ff_s_ges_magnitude_sum) = S ((S (S ff_i_ges_magnitude_sum)) * ff_v_ges_magnitude_sum)) /\ exists ff_q_ges_magnitude_sum_successor. ff_u_ges_magnitude_sum = ff_q_ges_magnitude_sum_successor * S ((S (S ff_i_ges_magnitude_sum)) * ff_v_ges_magnitude_sum) + (ff_s_ges_magnitude_sum))) /\ ff_s_ges_magnitude_sum = ff_r_ges_magnitude_sum + ff_a_ges_magnitude_sum)))))) -> (exists ff_u_ges_sign_sum ff_v_ges_sign_sum. ((((exists ff_h_ges_sign_sum_start. ff_h_ges_sign_sum_start + S (0) = S ((S (0)) * ff_v_ges_sign_sum)) /\ exists ff_q_ges_sign_sum_start. ff_u_ges_sign_sum = ff_q_ges_sign_sum_start * S ((S (0)) * ff_v_ges_sign_sum) + (0))) /\ ((((exists ff_h_ges_sign_sum_terminal. ff_h_ges_sign_sum_terminal + S (E) = S ((S (h)) * ff_v_ges_sign_sum)) /\ exists ff_q_ges_sign_sum_terminal. ff_u_ges_sign_sum = ff_q_ges_sign_sum_terminal * S ((S (h)) * ff_v_ges_sign_sum) + (E))) /\ forall ff_i_ges_sign_sum. (exists ff_lt_ges_sign_sum_bound. ff_lt_ges_sign_sum_bound + S ff_i_ges_sign_sum = h) -> exists ff_a_ges_sign_sum ff_r_ges_sign_sum ff_s_ges_sign_sum. ((((exists ff_h_ges_sign_sum_summand. ff_h_ges_sign_sum_summand + S (ff_a_ges_sign_sum) = S ((S (ff_i_ges_sign_sum)) * sc)) /\ exists ff_q_ges_sign_sum_summand. sb = ff_q_ges_sign_sum_summand * S ((S (ff_i_ges_sign_sum)) * sc) + (ff_a_ges_sign_sum))) /\ ((((exists ff_h_ges_sign_sum_partial. ff_h_ges_sign_sum_partial + S (ff_r_ges_sign_sum) = S ((S (ff_i_ges_sign_sum)) * ff_v_ges_sign_sum)) /\ exists ff_q_ges_sign_sum_partial. ff_u_ges_sign_sum = ff_q_ges_sign_sum_partial * S ((S (ff_i_ges_sign_sum)) * ff_v_ges_sign_sum) + (ff_r_ges_sign_sum))) /\ ((((exists ff_h_ges_sign_sum_successor. ff_h_ges_sign_sum_successor + S (ff_s_ges_sign_sum) = S ((S (S ff_i_ges_sign_sum)) * ff_v_ges_sign_sum)) /\ exists ff_q_ges_sign_sum_successor. ff_u_ges_sign_sum = ff_q_ges_sign_sum_successor * S ((S (S ff_i_ges_sign_sum)) * ff_v_ges_sign_sum) + (ff_s_ges_sign_sum))) /\ ff_s_ges_sign_sum = ff_r_ges_sign_sum + ff_a_ges_sign_sum)))))) -> (exists fspm_u_ges_canceled fspm_v_ges_canceled. (0) + 2 * fspm_u_ges_canceled = (Q + E) + 2 * fspm_v_ges_canceled)Structural proof guide
Generated structural guide
Cancel the exact Gauss magnitude Sum: 0 == quotient Sum + sign Sum modulo two.
Use the direct prerequisites gauss_eisenstein_terminal_sums_mod_two, gauss_signed_half_magnitude_sum_equals_half_sum, mod_two_cancel_middle as previously established PA formulas.
The proof proceeds by intermediate claims (2), equality transport (1).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA00CR gauss_eisenstein_terminal_sums_mod_two PA00D0 gauss_signed_half_magnitude_sum_equals_half_sum PA00D2 mod_two_cancel_middleDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v25 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
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 (3)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–20
03Fix variables and assumptionsL21–30
04Fix variables and assumptionsL31–31
Work with arbitrary variables or the premises of the current implication.
- L31
intro hsign_sum
05Establish hterminalL32–41
Establish this local claim before using it. It is not an additional assumption.
- L32
have hterminal : exists fspm_u_ges_terminal fspm_v_ges_terminal. (X) + 2 * fspm_u_ges_terminal = (Q + M + E) + 2 * fspm_v_ges_terminal - L33
specialize gauss_eisenstein_terminal_sums_mod_two p - L34
specialize gauss_eisenstein_terminal_sums_mod_two h - L35
specialize gauss_eisenstein_terminal_sums_mod_two a - L36
specialize gauss_eisenstein_terminal_sums_mod_two b - L37
specialize gauss_eisenstein_terminal_sums_mod_two c - L38
specialize gauss_eisenstein_terminal_sums_mod_two tb - L39
specialize gauss_eisenstein_terminal_sums_mod_two tc - L40
specialize gauss_eisenstein_terminal_sums_mod_two qb - L41
specialize gauss_eisenstein_terminal_sums_mod_two qc
06Use earlier factsL42–51
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L42
specialize gauss_eisenstein_terminal_sums_mod_two rb - L43
specialize gauss_eisenstein_terminal_sums_mod_two rc - L44
specialize gauss_eisenstein_terminal_sums_mod_two mb - L45
specialize gauss_eisenstein_terminal_sums_mod_two mc - L46
specialize gauss_eisenstein_terminal_sums_mod_two sb - L47
specialize gauss_eisenstein_terminal_sums_mod_two sc - L48
specialize gauss_eisenstein_terminal_sums_mod_two X - L49
specialize gauss_eisenstein_terminal_sums_mod_two Q - L50
specialize gauss_eisenstein_terminal_sums_mod_two M - L51
specialize gauss_eisenstein_terminal_sums_mod_two E
07Use earlier factsL52–61
08Use earlier factsL62–62
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L62
exact hsign_sum
09Establish hmagnitude_exactL63–72
Establish this local claim before using it. It is not an additional assumption.
- L63
have hmagnitude_exact : X = M - L64
specialize gauss_signed_half_magnitude_sum_equals_half_sum p - L65
specialize gauss_signed_half_magnitude_sum_equals_half_sum h - L66
specialize gauss_signed_half_magnitude_sum_equals_half_sum a - L67
specialize gauss_signed_half_magnitude_sum_equals_half_sum b - L68
specialize gauss_signed_half_magnitude_sum_equals_half_sum c - L69
specialize gauss_signed_half_magnitude_sum_equals_half_sum mb - L70
specialize gauss_signed_half_magnitude_sum_equals_half_sum mc - L71
specialize gauss_signed_half_magnitude_sum_equals_half_sum sb - L72
specialize gauss_signed_half_magnitude_sum_equals_half_sum sc
10Use earlier factsL73–82
Instantiate or apply named facts and discharge the corresponding proof obligations.
11Calculate and transport equalitiesL83–83
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L83
rewrite <- hmagnitude_exact at hterminal
Original exact command ledger · 88 lines
- 0001
intro p - 0002
intro h - 0003
intro a - 0004
intro b - 0005
intro c - 0006
intro tb - 0007
intro tc - 0008
intro qb - 0009
intro qc - 0010
intro rb - 0011
intro rc - 0012
intro mb - 0013
intro mc - 0014
intro sb - 0015
intro sc - 0016
intro X - 0017
intro Q - 0018
intro M - 0019
intro E - 0020
intro hprime - 0021
intro hnondiv - 0022
intro hp - 0023
intro ha - 0024
intro hhalf - 0025
intro hscaled - 0026
intro hdivision - 0027
intro hsigned - 0028
intro hhalf_sum - 0029
intro hquotient_sum - 0030
intro hmagnitude_sum - 0031
intro hsign_sum - 0032
have hterminal : exists fspm_u_ges_terminal fspm_v_ges_terminal. (X) + 2 * fspm_u_ges_terminal = (Q + M + E) + 2 * fspm_v_ges_terminal - 0033
specialize gauss_eisenstein_terminal_sums_mod_two p - 0034
specialize gauss_eisenstein_terminal_sums_mod_two h - 0035
specialize gauss_eisenstein_terminal_sums_mod_two a - 0036
specialize gauss_eisenstein_terminal_sums_mod_two b - 0037
specialize gauss_eisenstein_terminal_sums_mod_two c - 0038
specialize gauss_eisenstein_terminal_sums_mod_two tb - 0039
specialize gauss_eisenstein_terminal_sums_mod_two tc - 0040
specialize gauss_eisenstein_terminal_sums_mod_two qb - 0041
specialize gauss_eisenstein_terminal_sums_mod_two qc - 0042
specialize gauss_eisenstein_terminal_sums_mod_two rb - 0043
specialize gauss_eisenstein_terminal_sums_mod_two rc - 0044
specialize gauss_eisenstein_terminal_sums_mod_two mb - 0045
specialize gauss_eisenstein_terminal_sums_mod_two mc - 0046
specialize gauss_eisenstein_terminal_sums_mod_two sb - 0047
specialize gauss_eisenstein_terminal_sums_mod_two sc - 0048
specialize gauss_eisenstein_terminal_sums_mod_two X - 0049
specialize gauss_eisenstein_terminal_sums_mod_two Q - 0050
specialize gauss_eisenstein_terminal_sums_mod_two M - 0051
specialize gauss_eisenstein_terminal_sums_mod_two E - 0052
apply gauss_eisenstein_terminal_sums_mod_two - 0053
exact hp - 0054
exact ha - 0055
exact hhalf - 0056
exact hscaled - 0057
exact hdivision - 0058
exact hsigned - 0059
exact hhalf_sum - 0060
exact hquotient_sum - 0061
exact hmagnitude_sum - 0062
exact hsign_sum - 0063
have hmagnitude_exact : X = M - 0064
specialize gauss_signed_half_magnitude_sum_equals_half_sum p - 0065
specialize gauss_signed_half_magnitude_sum_equals_half_sum h - 0066
specialize gauss_signed_half_magnitude_sum_equals_half_sum a - 0067
specialize gauss_signed_half_magnitude_sum_equals_half_sum b - 0068
specialize gauss_signed_half_magnitude_sum_equals_half_sum c - 0069
specialize gauss_signed_half_magnitude_sum_equals_half_sum mb - 0070
specialize gauss_signed_half_magnitude_sum_equals_half_sum mc - 0071
specialize gauss_signed_half_magnitude_sum_equals_half_sum sb - 0072
specialize gauss_signed_half_magnitude_sum_equals_half_sum sc - 0073
specialize gauss_signed_half_magnitude_sum_equals_half_sum X - 0074
specialize gauss_signed_half_magnitude_sum_equals_half_sum M - 0075
apply gauss_signed_half_magnitude_sum_equals_half_sum - 0076
exact hp - 0077
exact hprime - 0078
exact hnondiv - 0079
exact hhalf - 0080
exact hsigned - 0081
exact hhalf_sum - 0082
exact hmagnitude_sum - 0083
rewrite <- hmagnitude_exact at hterminal - 0084
specialize mod_two_cancel_middle X - 0085
specialize mod_two_cancel_middle Q - 0086
specialize mod_two_cancel_middle E - 0087
apply mod_two_cancel_middle - 0088
exact hterminal