PA00D3

gauss_eisenstein_terminal_cancel_magnitude_mod_two

Alpha v34 checked-use theorem · independently closed; not Stable

Cancel the exact Gauss magnitude Sum: 0 == quotient Sum + sign Sum modulo two.

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

Direct 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

88 script commands · 12 reading checkpoints · 2 local claims

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

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro p
  2. L2
    intro h
  3. L3
    intro a
  4. L4
    intro b
  5. L5
    intro c
  6. L6
    intro tb
  7. L7
    intro tc
  8. L8
    intro qb
  9. L9
    intro qc
  10. L10
    intro rb
02Fix variables and assumptionsL11–20

Work with arbitrary variables or the premises of the current implication.

  1. L11
    intro rc
  2. L12
    intro mb
  3. L13
    intro mc
  4. L14
    intro sb
  5. L15
    intro sc
  6. L16
    intro X
  7. L17
    intro Q
  8. L18
    intro M
  9. L19
    intro E
  10. L20
    intro hprime
03Fix variables and assumptionsL21–30

Work with arbitrary variables or the premises of the current implication.

  1. L21
    intro hnondiv
  2. L22
    intro hp
  3. L23
    intro ha
  4. L24
    intro hhalf
  5. L25
    intro hscaled
  6. L26
    intro hdivision
  7. L27
    intro hsigned
  8. L28
    intro hhalf_sum
  9. L29
    intro hquotient_sum
  10. L30
    intro hmagnitude_sum
04Fix variables and assumptionsL31–31

Work with arbitrary variables or the premises of the current implication.

  1. L31
    intro hsign_sum
05Establish hterminalL32–41

Establish this local claim before using it. It is not an additional assumption.

  1. 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
  2. L33
    specialize gauss_eisenstein_terminal_sums_mod_two p
  3. L34
    specialize gauss_eisenstein_terminal_sums_mod_two h
  4. L35
    specialize gauss_eisenstein_terminal_sums_mod_two a
  5. L36
    specialize gauss_eisenstein_terminal_sums_mod_two b
  6. L37
    specialize gauss_eisenstein_terminal_sums_mod_two c
  7. L38
    specialize gauss_eisenstein_terminal_sums_mod_two tb
  8. L39
    specialize gauss_eisenstein_terminal_sums_mod_two tc
  9. L40
    specialize gauss_eisenstein_terminal_sums_mod_two qb
  10. L41
    specialize gauss_eisenstein_terminal_sums_mod_two qc
06Use earlier factsL42–51

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L42
    specialize gauss_eisenstein_terminal_sums_mod_two rb
  2. L43
    specialize gauss_eisenstein_terminal_sums_mod_two rc
  3. L44
    specialize gauss_eisenstein_terminal_sums_mod_two mb
  4. L45
    specialize gauss_eisenstein_terminal_sums_mod_two mc
  5. L46
    specialize gauss_eisenstein_terminal_sums_mod_two sb
  6. L47
    specialize gauss_eisenstein_terminal_sums_mod_two sc
  7. L48
    specialize gauss_eisenstein_terminal_sums_mod_two X
  8. L49
    specialize gauss_eisenstein_terminal_sums_mod_two Q
  9. L50
    specialize gauss_eisenstein_terminal_sums_mod_two M
  10. L51
    specialize gauss_eisenstein_terminal_sums_mod_two E
07Use earlier factsL52–61

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L52
    apply gauss_eisenstein_terminal_sums_mod_two
  2. L53
    exact hp
  3. L54
    exact ha
  4. L55
    exact hhalf
  5. L56
    exact hscaled
  6. L57
    exact hdivision
  7. L58
    exact hsigned
  8. L59
    exact hhalf_sum
  9. L60
    exact hquotient_sum
  10. L61
    exact hmagnitude_sum
08Use earlier factsL62–62

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L62
    exact hsign_sum
09Establish hmagnitude_exactL63–72

Establish this local claim before using it. It is not an additional assumption.

  1. L63
    have hmagnitude_exact : X = M
  2. L64
    specialize gauss_signed_half_magnitude_sum_equals_half_sum p
  3. L65
    specialize gauss_signed_half_magnitude_sum_equals_half_sum h
  4. L66
    specialize gauss_signed_half_magnitude_sum_equals_half_sum a
  5. L67
    specialize gauss_signed_half_magnitude_sum_equals_half_sum b
  6. L68
    specialize gauss_signed_half_magnitude_sum_equals_half_sum c
  7. L69
    specialize gauss_signed_half_magnitude_sum_equals_half_sum mb
  8. L70
    specialize gauss_signed_half_magnitude_sum_equals_half_sum mc
  9. L71
    specialize gauss_signed_half_magnitude_sum_equals_half_sum sb
  10. 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.

  1. L73
    specialize gauss_signed_half_magnitude_sum_equals_half_sum X
  2. L74
    specialize gauss_signed_half_magnitude_sum_equals_half_sum M
  3. L75
    apply gauss_signed_half_magnitude_sum_equals_half_sum
  4. L76
    exact hp
  5. L77
    exact hprime
  6. L78
    exact hnondiv
  7. L79
    exact hhalf
  8. L80
    exact hsigned
  9. L81
    exact hhalf_sum
  10. L82
    exact hmagnitude_sum
11Calculate and transport equalitiesL83–83

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L83
    rewrite <- hmagnitude_exact at hterminal
12Use earlier factsL84–88

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L84
    specialize mod_two_cancel_middle X
  2. L85
    specialize mod_two_cancel_middle Q
  3. L86
    specialize mod_two_cancel_middle E
  4. L87
    apply mod_two_cancel_middle
  5. L88
    exact hterminal

Library-wide reading audit

Original exact command ledger · 88 lines
  1. 0001intro p
  2. 0002intro h
  3. 0003intro a
  4. 0004intro b
  5. 0005intro c
  6. 0006intro tb
  7. 0007intro tc
  8. 0008intro qb
  9. 0009intro qc
  10. 0010intro rb
  11. 0011intro rc
  12. 0012intro mb
  13. 0013intro mc
  14. 0014intro sb
  15. 0015intro sc
  16. 0016intro X
  17. 0017intro Q
  18. 0018intro M
  19. 0019intro E
  20. 0020intro hprime
  21. 0021intro hnondiv
  22. 0022intro hp
  23. 0023intro ha
  24. 0024intro hhalf
  25. 0025intro hscaled
  26. 0026intro hdivision
  27. 0027intro hsigned
  28. 0028intro hhalf_sum
  29. 0029intro hquotient_sum
  30. 0030intro hmagnitude_sum
  31. 0031intro hsign_sum
  32. 0032have hterminal : exists fspm_u_ges_terminal fspm_v_ges_terminal. (X) + 2 * fspm_u_ges_terminal = (Q + M + E) + 2 * fspm_v_ges_terminal
  33. 0033specialize gauss_eisenstein_terminal_sums_mod_two p
  34. 0034specialize gauss_eisenstein_terminal_sums_mod_two h
  35. 0035specialize gauss_eisenstein_terminal_sums_mod_two a
  36. 0036specialize gauss_eisenstein_terminal_sums_mod_two b
  37. 0037specialize gauss_eisenstein_terminal_sums_mod_two c
  38. 0038specialize gauss_eisenstein_terminal_sums_mod_two tb
  39. 0039specialize gauss_eisenstein_terminal_sums_mod_two tc
  40. 0040specialize gauss_eisenstein_terminal_sums_mod_two qb
  41. 0041specialize gauss_eisenstein_terminal_sums_mod_two qc
  42. 0042specialize gauss_eisenstein_terminal_sums_mod_two rb
  43. 0043specialize gauss_eisenstein_terminal_sums_mod_two rc
  44. 0044specialize gauss_eisenstein_terminal_sums_mod_two mb
  45. 0045specialize gauss_eisenstein_terminal_sums_mod_two mc
  46. 0046specialize gauss_eisenstein_terminal_sums_mod_two sb
  47. 0047specialize gauss_eisenstein_terminal_sums_mod_two sc
  48. 0048specialize gauss_eisenstein_terminal_sums_mod_two X
  49. 0049specialize gauss_eisenstein_terminal_sums_mod_two Q
  50. 0050specialize gauss_eisenstein_terminal_sums_mod_two M
  51. 0051specialize gauss_eisenstein_terminal_sums_mod_two E
  52. 0052apply gauss_eisenstein_terminal_sums_mod_two
  53. 0053exact hp
  54. 0054exact ha
  55. 0055exact hhalf
  56. 0056exact hscaled
  57. 0057exact hdivision
  58. 0058exact hsigned
  59. 0059exact hhalf_sum
  60. 0060exact hquotient_sum
  61. 0061exact hmagnitude_sum
  62. 0062exact hsign_sum
  63. 0063have hmagnitude_exact : X = M
  64. 0064specialize gauss_signed_half_magnitude_sum_equals_half_sum p
  65. 0065specialize gauss_signed_half_magnitude_sum_equals_half_sum h
  66. 0066specialize gauss_signed_half_magnitude_sum_equals_half_sum a
  67. 0067specialize gauss_signed_half_magnitude_sum_equals_half_sum b
  68. 0068specialize gauss_signed_half_magnitude_sum_equals_half_sum c
  69. 0069specialize gauss_signed_half_magnitude_sum_equals_half_sum mb
  70. 0070specialize gauss_signed_half_magnitude_sum_equals_half_sum mc
  71. 0071specialize gauss_signed_half_magnitude_sum_equals_half_sum sb
  72. 0072specialize gauss_signed_half_magnitude_sum_equals_half_sum sc
  73. 0073specialize gauss_signed_half_magnitude_sum_equals_half_sum X
  74. 0074specialize gauss_signed_half_magnitude_sum_equals_half_sum M
  75. 0075apply gauss_signed_half_magnitude_sum_equals_half_sum
  76. 0076exact hp
  77. 0077exact hprime
  78. 0078exact hnondiv
  79. 0079exact hhalf
  80. 0080exact hsigned
  81. 0081exact hhalf_sum
  82. 0082exact hmagnitude_sum
  83. 0083rewrite <- hmagnitude_exact at hterminal
  84. 0084specialize mod_two_cancel_middle X
  85. 0085specialize mod_two_cancel_middle Q
  86. 0086specialize mod_two_cancel_middle E
  87. 0087apply mod_two_cancel_middle
  88. 0088exact hterminal