PA00D6 · theorem

gauss_eisenstein_sign_count_mod_quotient_sum

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

The Gauss sign BitCount is congruent modulo two to its orientation's quotient Sum.

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

∀ p. ∀ h. ∀ a. ∀ b. ∀ c. ∀ tb. ∀ tc. ∀ qb. ∀ qc. ∀ rb. ∀ rc. ∀ mb. ∀ mc. ∀ sb. ∀ sc. ∀ Q. ∀ E. p = 2 · h + 1 → Odd(a)Prime(p) → ¬Dvd(p,a)Range(b,c,1,h) → (∀ x. ∀ y. Lt(x,h)BetaAt(tb,tc,x,y) → y = a · (1 + x)) → DivisionPrefix(p,tb,tc,qb,qc,rb,rc,h) → (∀ x. Lt(x,h) → ∃ y. ∃ z. ∃ n. BetaAt(b,c,x,y) ∧ (BetaAt(mb,mc,x,z) ∧ (BetaAt(sb,sc,x,n) ∧ (Lt(0,z) ∧ (Le(z,h) ∧ ((n = 0 ∨ n = 1) ∧ (n = 0 ∧ ModEq(p,a · y,z) ∨ n = 1 ∧ ModEq(p,a · y,2 · h · z)))))))) → BitCount(sb,sc,h,E)Sum(qb,qc,h,Q)ModEq(2,Q,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

18 occurrences

In local proof propositions

3 occurrences

Exact expanded native-PA statement
forall p h a b c tb tc qb qc rb rc mb mc sb sc Q E. p = 2 * h + 1 -> (exists sdp_odd_ges_scale. a = 2 * sdp_odd_ges_scale + 1) -> ((~(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)) -> (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_sign_count_sum ff_v_ges_sign_count_sum. ((((exists ff_h_ges_sign_count_sum_start. ff_h_ges_sign_count_sum_start + S (0) = S ((S (0)) * ff_v_ges_sign_count_sum)) /\ exists ff_q_ges_sign_count_sum_start. ff_u_ges_sign_count_sum = ff_q_ges_sign_count_sum_start * S ((S (0)) * ff_v_ges_sign_count_sum) + (0))) /\ ((((exists ff_h_ges_sign_count_sum_terminal. ff_h_ges_sign_count_sum_terminal + S (E) = S ((S (h)) * ff_v_ges_sign_count_sum)) /\ exists ff_q_ges_sign_count_sum_terminal. ff_u_ges_sign_count_sum = ff_q_ges_sign_count_sum_terminal * S ((S (h)) * ff_v_ges_sign_count_sum) + (E))) /\ forall ff_i_ges_sign_count_sum. (exists ff_lt_ges_sign_count_sum_bound. ff_lt_ges_sign_count_sum_bound + S ff_i_ges_sign_count_sum = h) -> exists ff_a_ges_sign_count_sum ff_r_ges_sign_count_sum ff_s_ges_sign_count_sum. ((((exists ff_h_ges_sign_count_sum_summand. ff_h_ges_sign_count_sum_summand + S (ff_a_ges_sign_count_sum) = S ((S (ff_i_ges_sign_count_sum)) * sc)) /\ exists ff_q_ges_sign_count_sum_summand. sb = ff_q_ges_sign_count_sum_summand * S ((S (ff_i_ges_sign_count_sum)) * sc) + (ff_a_ges_sign_count_sum))) /\ ((((exists ff_h_ges_sign_count_sum_partial. ff_h_ges_sign_count_sum_partial + S (ff_r_ges_sign_count_sum) = S ((S (ff_i_ges_sign_count_sum)) * ff_v_ges_sign_count_sum)) /\ exists ff_q_ges_sign_count_sum_partial. ff_u_ges_sign_count_sum = ff_q_ges_sign_count_sum_partial * S ((S (ff_i_ges_sign_count_sum)) * ff_v_ges_sign_count_sum) + (ff_r_ges_sign_count_sum))) /\ ((((exists ff_h_ges_sign_count_sum_successor. ff_h_ges_sign_count_sum_successor + S (ff_s_ges_sign_count_sum) = S ((S (S ff_i_ges_sign_count_sum)) * ff_v_ges_sign_count_sum)) /\ exists ff_q_ges_sign_count_sum_successor. ff_u_ges_sign_count_sum = ff_q_ges_sign_count_sum_successor * S ((S (S ff_i_ges_sign_count_sum)) * ff_v_ges_sign_count_sum) + (ff_s_ges_sign_count_sum))) /\ ff_s_ges_sign_count_sum = ff_r_ges_sign_count_sum + ff_a_ges_sign_count_sum)))))) /\ (forall ff_i_ges_sign_count_bits. (exists ff_lt_ges_sign_count_bits_bound. ff_lt_ges_sign_count_bits_bound + S ff_i_ges_sign_count_bits = h) -> exists ff_bit_ges_sign_count_bits. ((((exists ff_h_ges_sign_count_bits_decoded. ff_h_ges_sign_count_bits_decoded + S (ff_bit_ges_sign_count_bits) = S ((S (ff_i_ges_sign_count_bits)) * sc)) /\ exists ff_q_ges_sign_count_bits_decoded. sb = ff_q_ges_sign_count_bits_decoded * S ((S (ff_i_ges_sign_count_bits)) * sc) + (ff_bit_ges_sign_count_bits))) /\ (ff_bit_ges_sign_count_bits = 0 \/ ff_bit_ges_sign_count_bits = 1))))) -> (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 fspm_u_ges_quotient_sign fspm_v_ges_quotient_sign. (Q) + 2 * fspm_u_ges_quotient_sign = (E) + 2 * fspm_v_ges_quotient_sign)

Proof neighborhood

Direct theorem prerequisites

Direct 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

77 script commands · 12 reading checkpoints · 3 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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

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 Q
  7. L17
    intro E
  8. L18
    intro hp
  9. L19
    intro ha
  10. L20
    intro hprime
03Fix variables and assumptionsL21–27

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

  1. L21
    intro hnondiv
  2. L22
    intro hhalf
  3. L23
    intro hscaled
  4. L24
    intro hdivision
  5. L25
    intro hsigned
  6. L26
    intro hsign_count
  7. L27
    intro hquotient_sum
04Separate the logical casesL28–28

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L28
    cases hsign_count
05Establish hhalf_sum_existsL29–33

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

  1. L29
    have hhalf_sum_exists : ∃ X. Sum(b,c,h,X)Definitions: Sum(b,c,h,X)Original native command in the exact edition
  2. L30
    specialize beta_sum_exists b
  3. L31
    specialize beta_sum_exists c
  4. L32
    specialize beta_sum_exists h
  5. L33
    exact beta_sum_exists
06Separate the logical casesL34–34

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L34
    cases hhalf_sum_exists
07Establish hmagnitude_sum_existsL35–39

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

  1. L35
    have hmagnitude_sum_exists : ∃ M. Sum(mb,mc,h,M)Definitions: Sum(mb,mc,h,M)Original native command in the exact edition
  2. L36
    specialize beta_sum_exists mb
  3. L37
    specialize beta_sum_exists mc
  4. L38
    specialize beta_sum_exists h
  5. L39
    exact beta_sum_exists
08Separate the logical casesL40–40

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L40
    cases hmagnitude_sum_exists
09Establish hcanceledL41–50

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

  1. L41
    have hcanceled : ModEq(2,0,Q + E)Definitions: ModEq(2,0,Q + E)Original native command in the exact edition
  2. L42
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two p
  3. L43
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two h
  4. L44
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two a
  5. L45
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two b
  6. L46
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two c
  7. L47
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two tb
  8. L48
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two tc
  9. L49
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two qb
  10. L50
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two qc
10Use earlier factsL51–60

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

  1. L51
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two rb
  2. L52
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two rc
  3. L53
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two mb
  4. L54
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two mc
  5. L55
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two sb
  6. L56
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two sc
  7. L57
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two x
  8. L58
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two Q
  9. L59
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two x1
  10. L60
    specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two E
11Use earlier factsL61–70

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

  1. L61
    apply gauss_eisenstein_terminal_cancel_magnitude_mod_two
  2. L62
    exact hprime
  3. L63
    exact hnondiv
  4. L64
    exact hp
  5. L65
    exact ha
  6. L66
    exact hhalf
  7. L67
    exact hscaled
  8. L68
    exact hdivision
  9. L69
    exact hsigned
  10. L70
    exact hhalf_sum_exists_witness
12Use earlier factsL71–77

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

  1. L71
    exact hquotient_sum
  2. L72
    exact hmagnitude_sum_exists_witness
  3. L73
    exact hsign_count_left
  4. L74
    specialize mod_two_zero_sum_to_congruent Q
  5. L75
    specialize mod_two_zero_sum_to_congruent E
  6. L76
    apply mod_two_zero_sum_to_congruent
  7. L77
    exact hcanceled

Library-wide reading audit

Original defined command ledger · 77 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 Q
  17. 0017intro E
  18. 0018intro hp
  19. 0019intro ha
  20. 0020intro hprime
  21. 0021intro hnondiv
  22. 0022intro hhalf
  23. 0023intro hscaled
  24. 0024intro hdivision
  25. 0025intro hsigned
  26. 0026intro hsign_count
  27. 0027intro hquotient_sum
  28. 0028cases hsign_count
  29. 0029have hhalf_sum_exists : ∃ X. Sum(b,c,h,X)
    Exact native replay linehave hhalf_sum_exists : exists X. (exists ff_u_ges_orientation_half_sum ff_v_ges_orientation_half_sum. ((((exists ff_h_ges_orientation_half_sum_start. ff_h_ges_orientation_half_sum_start + S (0) = S ((S (0)) * ff_v_ges_orientation_half_sum)) /\ exists ff_q_ges_orientation_half_sum_start. ff_u_ges_orientation_half_sum = ff_q_ges_orientation_half_sum_start * S ((S (0)) * ff_v_ges_orientation_half_sum) + (0))) /\ ((((exists ff_h_ges_orientation_half_sum_terminal. ff_h_ges_orientation_half_sum_terminal + S (X) = S ((S (h)) * ff_v_ges_orientation_half_sum)) /\ exists ff_q_ges_orientation_half_sum_terminal. ff_u_ges_orientation_half_sum = ff_q_ges_orientation_half_sum_terminal * S ((S (h)) * ff_v_ges_orientation_half_sum) + (X))) /\ forall ff_i_ges_orientation_half_sum. (exists ff_lt_ges_orientation_half_sum_bound. ff_lt_ges_orientation_half_sum_bound + S ff_i_ges_orientation_half_sum = h) -> exists ff_a_ges_orientation_half_sum ff_r_ges_orientation_half_sum ff_s_ges_orientation_half_sum. ((((exists ff_h_ges_orientation_half_sum_summand. ff_h_ges_orientation_half_sum_summand + S (ff_a_ges_orientation_half_sum) = S ((S (ff_i_ges_orientation_half_sum)) * c)) /\ exists ff_q_ges_orientation_half_sum_summand. b = ff_q_ges_orientation_half_sum_summand * S ((S (ff_i_ges_orientation_half_sum)) * c) + (ff_a_ges_orientation_half_sum))) /\ ((((exists ff_h_ges_orientation_half_sum_partial. ff_h_ges_orientation_half_sum_partial + S (ff_r_ges_orientation_half_sum) = S ((S (ff_i_ges_orientation_half_sum)) * ff_v_ges_orientation_half_sum)) /\ exists ff_q_ges_orientation_half_sum_partial. ff_u_ges_orientation_half_sum = ff_q_ges_orientation_half_sum_partial * S ((S (ff_i_ges_orientation_half_sum)) * ff_v_ges_orientation_half_sum) + (ff_r_ges_orientation_half_sum))) /\ ((((exists ff_h_ges_orientation_half_sum_successor. ff_h_ges_orientation_half_sum_successor + S (ff_s_ges_orientation_half_sum) = S ((S (S ff_i_ges_orientation_half_sum)) * ff_v_ges_orientation_half_sum)) /\ exists ff_q_ges_orientation_half_sum_successor. ff_u_ges_orientation_half_sum = ff_q_ges_orientation_half_sum_successor * S ((S (S ff_i_ges_orientation_half_sum)) * ff_v_ges_orientation_half_sum) + (ff_s_ges_orientation_half_sum))) /\ ff_s_ges_orientation_half_sum = ff_r_ges_orientation_half_sum + ff_a_ges_orientation_half_sum))))))
  30. 0030specialize beta_sum_exists b
  31. 0031specialize beta_sum_exists c
  32. 0032specialize beta_sum_exists h
  33. 0033exact beta_sum_exists
  34. 0034cases hhalf_sum_exists
  35. 0035have hmagnitude_sum_exists : ∃ M. Sum(mb,mc,h,M)
    Exact native replay linehave hmagnitude_sum_exists : exists M. (exists ff_u_ges_orientation_magnitude_sum ff_v_ges_orientation_magnitude_sum. ((((exists ff_h_ges_orientation_magnitude_sum_start. ff_h_ges_orientation_magnitude_sum_start + S (0) = S ((S (0)) * ff_v_ges_orientation_magnitude_sum)) /\ exists ff_q_ges_orientation_magnitude_sum_start. ff_u_ges_orientation_magnitude_sum = ff_q_ges_orientation_magnitude_sum_start * S ((S (0)) * ff_v_ges_orientation_magnitude_sum) + (0))) /\ ((((exists ff_h_ges_orientation_magnitude_sum_terminal. ff_h_ges_orientation_magnitude_sum_terminal + S (M) = S ((S (h)) * ff_v_ges_orientation_magnitude_sum)) /\ exists ff_q_ges_orientation_magnitude_sum_terminal. ff_u_ges_orientation_magnitude_sum = ff_q_ges_orientation_magnitude_sum_terminal * S ((S (h)) * ff_v_ges_orientation_magnitude_sum) + (M))) /\ forall ff_i_ges_orientation_magnitude_sum. (exists ff_lt_ges_orientation_magnitude_sum_bound. ff_lt_ges_orientation_magnitude_sum_bound + S ff_i_ges_orientation_magnitude_sum = h) -> exists ff_a_ges_orientation_magnitude_sum ff_r_ges_orientation_magnitude_sum ff_s_ges_orientation_magnitude_sum. ((((exists ff_h_ges_orientation_magnitude_sum_summand. ff_h_ges_orientation_magnitude_sum_summand + S (ff_a_ges_orientation_magnitude_sum) = S ((S (ff_i_ges_orientation_magnitude_sum)) * mc)) /\ exists ff_q_ges_orientation_magnitude_sum_summand. mb = ff_q_ges_orientation_magnitude_sum_summand * S ((S (ff_i_ges_orientation_magnitude_sum)) * mc) + (ff_a_ges_orientation_magnitude_sum))) /\ ((((exists ff_h_ges_orientation_magnitude_sum_partial. ff_h_ges_orientation_magnitude_sum_partial + S (ff_r_ges_orientation_magnitude_sum) = S ((S (ff_i_ges_orientation_magnitude_sum)) * ff_v_ges_orientation_magnitude_sum)) /\ exists ff_q_ges_orientation_magnitude_sum_partial. ff_u_ges_orientation_magnitude_sum = ff_q_ges_orientation_magnitude_sum_partial * S ((S (ff_i_ges_orientation_magnitude_sum)) * ff_v_ges_orientation_magnitude_sum) + (ff_r_ges_orientation_magnitude_sum))) /\ ((((exists ff_h_ges_orientation_magnitude_sum_successor. ff_h_ges_orientation_magnitude_sum_successor + S (ff_s_ges_orientation_magnitude_sum) = S ((S (S ff_i_ges_orientation_magnitude_sum)) * ff_v_ges_orientation_magnitude_sum)) /\ exists ff_q_ges_orientation_magnitude_sum_successor. ff_u_ges_orientation_magnitude_sum = ff_q_ges_orientation_magnitude_sum_successor * S ((S (S ff_i_ges_orientation_magnitude_sum)) * ff_v_ges_orientation_magnitude_sum) + (ff_s_ges_orientation_magnitude_sum))) /\ ff_s_ges_orientation_magnitude_sum = ff_r_ges_orientation_magnitude_sum + ff_a_ges_orientation_magnitude_sum))))))
  36. 0036specialize beta_sum_exists mb
  37. 0037specialize beta_sum_exists mc
  38. 0038specialize beta_sum_exists h
  39. 0039exact beta_sum_exists
  40. 0040cases hmagnitude_sum_exists
  41. 0041have hcanceled : ModEq(2,0,Q + E)
    Exact native replay linehave hcanceled : exists fspm_u_ges_orientation_canceled fspm_v_ges_orientation_canceled. (0) + 2 * fspm_u_ges_orientation_canceled = (Q + E) + 2 * fspm_v_ges_orientation_canceled
  42. 0042specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two p
  43. 0043specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two h
  44. 0044specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two a
  45. 0045specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two b
  46. 0046specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two c
  47. 0047specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two tb
  48. 0048specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two tc
  49. 0049specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two qb
  50. 0050specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two qc
  51. 0051specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two rb
  52. 0052specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two rc
  53. 0053specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two mb
  54. 0054specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two mc
  55. 0055specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two sb
  56. 0056specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two sc
  57. 0057specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two x
  58. 0058specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two Q
  59. 0059specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two x1
  60. 0060specialize gauss_eisenstein_terminal_cancel_magnitude_mod_two E
  61. 0061apply gauss_eisenstein_terminal_cancel_magnitude_mod_two
  62. 0062exact hprime
  63. 0063exact hnondiv
  64. 0064exact hp
  65. 0065exact ha
  66. 0066exact hhalf
  67. 0067exact hscaled
  68. 0068exact hdivision
  69. 0069exact hsigned
  70. 0070exact hhalf_sum_exists_witness
  71. 0071exact hquotient_sum
  72. 0072exact hmagnitude_sum_exists_witness
  73. 0073exact hsign_count_left
  74. 0074specialize mod_two_zero_sum_to_congruent Q
  75. 0075specialize mod_two_zero_sum_to_congruent E
  76. 0076apply mod_two_zero_sum_to_congruent
  77. 0077exact hcanceled