GF0012

gaussian_add_commutative

The actual canonical Gaussian add graph is commutative; output code equality is not assumed.

Alpha v34 checked-use · first admitted v30 · independently kernel and Lean verified; not Stable

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.

Inputs are genuine canonical signed-pair codes, not arbitrary naturals. Products start at the actual Gaussian identity, whose code is six. The factor list uses the proved prime-divisor property; irreducibility alone is not silently renamed primality. Uniqueness supplies equal lengths, a bounded bijection, and an actual unit at each match, including repeated factors. Units have empty factorizations and zero is excluded. Sorted primary representatives, Gaussian prime classification, and Eisenstein factorization are separate targets.

Exact theorem in conservative defined notation

∀ a. ∀ b. ∀ c. ZPairAdd(a,b,c)ZPairAdd(b,a,c)

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall a b c. (exists ge_first_rp_commutative_given_add ge_first_rn_commutative_given_add ge_first_ip_commutative_given_add ge_first_in_commutative_given_add ge_second_rp_commutative_given_add ge_second_rn_commutative_given_add ge_second_ip_commutative_given_add ge_second_in_commutative_given_add. ((exists ge_representation_real_code_commutative_given_addfirst ge_representation_imaginary_code_commutative_given_addfirst. (((a) = ((ge_representation_real_code_commutative_given_addfirst) + (ge_representation_imaginary_code_commutative_given_addfirst)) * S ((ge_representation_real_code_commutative_given_addfirst) + (ge_representation_imaginary_code_commutative_given_addfirst)) + ((ge_representation_imaginary_code_commutative_given_addfirst) + (ge_representation_imaginary_code_commutative_given_addfirst))) /\ ((exists ge_balance_positive_commutative_given_addfirstreal ge_balance_negative_commutative_given_addfirstreal. (((((ge_representation_real_code_commutative_given_addfirst) = 2 * (ge_balance_positive_commutative_given_addfirstreal) /\ (ge_balance_negative_commutative_given_addfirstreal) = 0) \/ exists ge_signed_half_commutative_given_addfirstrealdecode. (((ge_representation_real_code_commutative_given_addfirst) = 2 * ge_signed_half_commutative_given_addfirstrealdecode + 1 /\ (ge_balance_positive_commutative_given_addfirstreal) = 0) /\ (ge_balance_negative_commutative_given_addfirstreal) = S ge_signed_half_commutative_given_addfirstrealdecode))) /\ ((ge_first_rp_commutative_given_add) + ge_balance_negative_commutative_given_addfirstreal = (ge_first_rn_commutative_given_add) + ge_balance_positive_commutative_given_addfirstreal))) /\ (exists ge_balance_positive_commutative_given_addfirstimaginary ge_balance_negative_commutative_given_addfirstimaginary. (((((ge_representation_imaginary_code_commutative_given_addfirst) = 2 * (ge_balance_positive_commutative_given_addfirstimaginary) /\ (ge_balance_negative_commutative_given_addfirstimaginary) = 0) \/ exists ge_signed_half_commutative_given_addfirstimaginarydecode. (((ge_representation_imaginary_code_commutative_given_addfirst) = 2 * ge_signed_half_commutative_given_addfirstimaginarydecode + 1 /\ (ge_balance_positive_commutative_given_addfirstimaginary) = 0) /\ (ge_balance_negative_commutative_given_addfirstimaginary) = S ge_signed_half_commutative_given_addfirstimaginarydecode))) /\ ((ge_first_ip_commutative_given_add) + ge_balance_negative_commutative_given_addfirstimaginary = (ge_first_in_commutative_given_add) + ge_balance_positive_commutative_given_addfirstimaginary)))))) /\ ((exists ge_representation_real_code_commutative_given_addsecond ge_representation_imaginary_code_commutative_given_addsecond. (((b) = ((ge_representation_real_code_commutative_given_addsecond) + (ge_representation_imaginary_code_commutative_given_addsecond)) * S ((ge_representation_real_code_commutative_given_addsecond) + (ge_representation_imaginary_code_commutative_given_addsecond)) + ((ge_representation_imaginary_code_commutative_given_addsecond) + (ge_representation_imaginary_code_commutative_given_addsecond))) /\ ((exists ge_balance_positive_commutative_given_addsecondreal ge_balance_negative_commutative_given_addsecondreal. (((((ge_representation_real_code_commutative_given_addsecond) = 2 * (ge_balance_positive_commutative_given_addsecondreal) /\ (ge_balance_negative_commutative_given_addsecondreal) = 0) \/ exists ge_signed_half_commutative_given_addsecondrealdecode. (((ge_representation_real_code_commutative_given_addsecond) = 2 * ge_signed_half_commutative_given_addsecondrealdecode + 1 /\ (ge_balance_positive_commutative_given_addsecondreal) = 0) /\ (ge_balance_negative_commutative_given_addsecondreal) = S ge_signed_half_commutative_given_addsecondrealdecode))) /\ ((ge_second_rp_commutative_given_add) + ge_balance_negative_commutative_given_addsecondreal = (ge_second_rn_commutative_given_add) + ge_balance_positive_commutative_given_addsecondreal))) /\ (exists ge_balance_positive_commutative_given_addsecondimaginary ge_balance_negative_commutative_given_addsecondimaginary. (((((ge_representation_imaginary_code_commutative_given_addsecond) = 2 * (ge_balance_positive_commutative_given_addsecondimaginary) /\ (ge_balance_negative_commutative_given_addsecondimaginary) = 0) \/ exists ge_signed_half_commutative_given_addsecondimaginarydecode. (((ge_representation_imaginary_code_commutative_given_addsecond) = 2 * ge_signed_half_commutative_given_addsecondimaginarydecode + 1 /\ (ge_balance_positive_commutative_given_addsecondimaginary) = 0) /\ (ge_balance_negative_commutative_given_addsecondimaginary) = S ge_signed_half_commutative_given_addsecondimaginarydecode))) /\ ((ge_second_ip_commutative_given_add) + ge_balance_negative_commutative_given_addsecondimaginary = (ge_second_in_commutative_given_add) + ge_balance_positive_commutative_given_addsecondimaginary)))))) /\ (exists ge_representation_real_code_commutative_given_addoutput ge_representation_imaginary_code_commutative_given_addoutput. (((c) = ((ge_representation_real_code_commutative_given_addoutput) + (ge_representation_imaginary_code_commutative_given_addoutput)) * S ((ge_representation_real_code_commutative_given_addoutput) + (ge_representation_imaginary_code_commutative_given_addoutput)) + ((ge_representation_imaginary_code_commutative_given_addoutput) + (ge_representation_imaginary_code_commutative_given_addoutput))) /\ ((exists ge_balance_positive_commutative_given_addoutputreal ge_balance_negative_commutative_given_addoutputreal. (((((ge_representation_real_code_commutative_given_addoutput) = 2 * (ge_balance_positive_commutative_given_addoutputreal) /\ (ge_balance_negative_commutative_given_addoutputreal) = 0) \/ exists ge_signed_half_commutative_given_addoutputrealdecode. (((ge_representation_real_code_commutative_given_addoutput) = 2 * ge_signed_half_commutative_given_addoutputrealdecode + 1 /\ (ge_balance_positive_commutative_given_addoutputreal) = 0) /\ (ge_balance_negative_commutative_given_addoutputreal) = S ge_signed_half_commutative_given_addoutputrealdecode))) /\ ((((ge_first_rp_commutative_given_add) + (ge_second_rp_commutative_given_add))) + ge_balance_negative_commutative_given_addoutputreal = (((ge_first_rn_commutative_given_add) + (ge_second_rn_commutative_given_add))) + ge_balance_positive_commutative_given_addoutputreal))) /\ (exists ge_balance_positive_commutative_given_addoutputimaginary ge_balance_negative_commutative_given_addoutputimaginary. (((((ge_representation_imaginary_code_commutative_given_addoutput) = 2 * (ge_balance_positive_commutative_given_addoutputimaginary) /\ (ge_balance_negative_commutative_given_addoutputimaginary) = 0) \/ exists ge_signed_half_commutative_given_addoutputimaginarydecode. (((ge_representation_imaginary_code_commutative_given_addoutput) = 2 * ge_signed_half_commutative_given_addoutputimaginarydecode + 1 /\ (ge_balance_positive_commutative_given_addoutputimaginary) = 0) /\ (ge_balance_negative_commutative_given_addoutputimaginary) = S ge_signed_half_commutative_given_addoutputimaginarydecode))) /\ ((((ge_first_ip_commutative_given_add) + (ge_second_ip_commutative_given_add))) + ge_balance_negative_commutative_given_addoutputimaginary = (((ge_first_in_commutative_given_add) + (ge_second_in_commutative_given_add))) + ge_balance_positive_commutative_given_addoutputimaginary))))))))) -> (exists ge_first_rp_commutative_result_add ge_first_rn_commutative_result_add ge_first_ip_commutative_result_add ge_first_in_commutative_result_add ge_second_rp_commutative_result_add ge_second_rn_commutative_result_add ge_second_ip_commutative_result_add ge_second_in_commutative_result_add. ((exists ge_representation_real_code_commutative_result_addfirst ge_representation_imaginary_code_commutative_result_addfirst. (((b) = ((ge_representation_real_code_commutative_result_addfirst) + (ge_representation_imaginary_code_commutative_result_addfirst)) * S ((ge_representation_real_code_commutative_result_addfirst) + (ge_representation_imaginary_code_commutative_result_addfirst)) + ((ge_representation_imaginary_code_commutative_result_addfirst) + (ge_representation_imaginary_code_commutative_result_addfirst))) /\ ((exists ge_balance_positive_commutative_result_addfirstreal ge_balance_negative_commutative_result_addfirstreal. (((((ge_representation_real_code_commutative_result_addfirst) = 2 * (ge_balance_positive_commutative_result_addfirstreal) /\ (ge_balance_negative_commutative_result_addfirstreal) = 0) \/ exists ge_signed_half_commutative_result_addfirstrealdecode. (((ge_representation_real_code_commutative_result_addfirst) = 2 * ge_signed_half_commutative_result_addfirstrealdecode + 1 /\ (ge_balance_positive_commutative_result_addfirstreal) = 0) /\ (ge_balance_negative_commutative_result_addfirstreal) = S ge_signed_half_commutative_result_addfirstrealdecode))) /\ ((ge_first_rp_commutative_result_add) + ge_balance_negative_commutative_result_addfirstreal = (ge_first_rn_commutative_result_add) + ge_balance_positive_commutative_result_addfirstreal))) /\ (exists ge_balance_positive_commutative_result_addfirstimaginary ge_balance_negative_commutative_result_addfirstimaginary. (((((ge_representation_imaginary_code_commutative_result_addfirst) = 2 * (ge_balance_positive_commutative_result_addfirstimaginary) /\ (ge_balance_negative_commutative_result_addfirstimaginary) = 0) \/ exists ge_signed_half_commutative_result_addfirstimaginarydecode. (((ge_representation_imaginary_code_commutative_result_addfirst) = 2 * ge_signed_half_commutative_result_addfirstimaginarydecode + 1 /\ (ge_balance_positive_commutative_result_addfirstimaginary) = 0) /\ (ge_balance_negative_commutative_result_addfirstimaginary) = S ge_signed_half_commutative_result_addfirstimaginarydecode))) /\ ((ge_first_ip_commutative_result_add) + ge_balance_negative_commutative_result_addfirstimaginary = (ge_first_in_commutative_result_add) + ge_balance_positive_commutative_result_addfirstimaginary)))))) /\ ((exists ge_representation_real_code_commutative_result_addsecond ge_representation_imaginary_code_commutative_result_addsecond. (((a) = ((ge_representation_real_code_commutative_result_addsecond) + (ge_representation_imaginary_code_commutative_result_addsecond)) * S ((ge_representation_real_code_commutative_result_addsecond) + (ge_representation_imaginary_code_commutative_result_addsecond)) + ((ge_representation_imaginary_code_commutative_result_addsecond) + (ge_representation_imaginary_code_commutative_result_addsecond))) /\ ((exists ge_balance_positive_commutative_result_addsecondreal ge_balance_negative_commutative_result_addsecondreal. (((((ge_representation_real_code_commutative_result_addsecond) = 2 * (ge_balance_positive_commutative_result_addsecondreal) /\ (ge_balance_negative_commutative_result_addsecondreal) = 0) \/ exists ge_signed_half_commutative_result_addsecondrealdecode. (((ge_representation_real_code_commutative_result_addsecond) = 2 * ge_signed_half_commutative_result_addsecondrealdecode + 1 /\ (ge_balance_positive_commutative_result_addsecondreal) = 0) /\ (ge_balance_negative_commutative_result_addsecondreal) = S ge_signed_half_commutative_result_addsecondrealdecode))) /\ ((ge_second_rp_commutative_result_add) + ge_balance_negative_commutative_result_addsecondreal = (ge_second_rn_commutative_result_add) + ge_balance_positive_commutative_result_addsecondreal))) /\ (exists ge_balance_positive_commutative_result_addsecondimaginary ge_balance_negative_commutative_result_addsecondimaginary. (((((ge_representation_imaginary_code_commutative_result_addsecond) = 2 * (ge_balance_positive_commutative_result_addsecondimaginary) /\ (ge_balance_negative_commutative_result_addsecondimaginary) = 0) \/ exists ge_signed_half_commutative_result_addsecondimaginarydecode. (((ge_representation_imaginary_code_commutative_result_addsecond) = 2 * ge_signed_half_commutative_result_addsecondimaginarydecode + 1 /\ (ge_balance_positive_commutative_result_addsecondimaginary) = 0) /\ (ge_balance_negative_commutative_result_addsecondimaginary) = S ge_signed_half_commutative_result_addsecondimaginarydecode))) /\ ((ge_second_ip_commutative_result_add) + ge_balance_negative_commutative_result_addsecondimaginary = (ge_second_in_commutative_result_add) + ge_balance_positive_commutative_result_addsecondimaginary)))))) /\ (exists ge_representation_real_code_commutative_result_addoutput ge_representation_imaginary_code_commutative_result_addoutput. (((c) = ((ge_representation_real_code_commutative_result_addoutput) + (ge_representation_imaginary_code_commutative_result_addoutput)) * S ((ge_representation_real_code_commutative_result_addoutput) + (ge_representation_imaginary_code_commutative_result_addoutput)) + ((ge_representation_imaginary_code_commutative_result_addoutput) + (ge_representation_imaginary_code_commutative_result_addoutput))) /\ ((exists ge_balance_positive_commutative_result_addoutputreal ge_balance_negative_commutative_result_addoutputreal. (((((ge_representation_real_code_commutative_result_addoutput) = 2 * (ge_balance_positive_commutative_result_addoutputreal) /\ (ge_balance_negative_commutative_result_addoutputreal) = 0) \/ exists ge_signed_half_commutative_result_addoutputrealdecode. (((ge_representation_real_code_commutative_result_addoutput) = 2 * ge_signed_half_commutative_result_addoutputrealdecode + 1 /\ (ge_balance_positive_commutative_result_addoutputreal) = 0) /\ (ge_balance_negative_commutative_result_addoutputreal) = S ge_signed_half_commutative_result_addoutputrealdecode))) /\ ((((ge_first_rp_commutative_result_add) + (ge_second_rp_commutative_result_add))) + ge_balance_negative_commutative_result_addoutputreal = (((ge_first_rn_commutative_result_add) + (ge_second_rn_commutative_result_add))) + ge_balance_positive_commutative_result_addoutputreal))) /\ (exists ge_balance_positive_commutative_result_addoutputimaginary ge_balance_negative_commutative_result_addoutputimaginary. (((((ge_representation_imaginary_code_commutative_result_addoutput) = 2 * (ge_balance_positive_commutative_result_addoutputimaginary) /\ (ge_balance_negative_commutative_result_addoutputimaginary) = 0) \/ exists ge_signed_half_commutative_result_addoutputimaginarydecode. (((ge_representation_imaginary_code_commutative_result_addoutput) = 2 * ge_signed_half_commutative_result_addoutputimaginarydecode + 1 /\ (ge_balance_positive_commutative_result_addoutputimaginary) = 0) /\ (ge_balance_negative_commutative_result_addoutputimaginary) = S ge_signed_half_commutative_result_addoutputimaginarydecode))) /\ ((((ge_first_ip_commutative_result_add) + (ge_second_ip_commutative_result_add))) + ge_balance_negative_commutative_result_addoutputimaginary = (((ge_first_in_commutative_result_add) + (ge_second_in_commutative_result_add))) + ge_balance_positive_commutative_result_addoutputimaginary)))))))))

Complete tactic proof in conservative notation

All 48 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.

Read the argument

Proof checkpoints

48 script commands · 6 reading checkpoints · 0 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 (1)
01Fix variables and assumptionsL1–4

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

  1. L1
    intro a
  2. L2
    intro b
  3. L3
    intro c
  4. L4
    intro h
02Separate the logical casesL5–14

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

  1. L5
    cases h
  2. L6
    cases h_witness
  3. L7
    cases h_witness_witness
  4. L8
    cases h_witness_witness_witness
  5. L9
    cases h_witness_witness_witness_witness
  6. L10
    cases h_witness_witness_witness_witness_witness
  7. L11
    cases h_witness_witness_witness_witness_witness_witness
  8. L12
    cases h_witness_witness_witness_witness_witness_witness_witness
  9. L13
    cases h_witness_witness_witness_witness_witness_witness_witness_witness
  10. L14
    cases h_witness_witness_witness_witness_witness_witness_witness_witness_right
03Use earlier factsL15–24

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

  1. L15
    specialize gaussian_add_of_representations (b)
  2. L16
    specialize gaussian_add_of_representations (a)
  3. L17
    specialize gaussian_add_of_representations (c)
  4. L18
    specialize gaussian_add_of_representations (x4)
  5. L19
    specialize gaussian_add_of_representations (x5)
  6. L20
    specialize gaussian_add_of_representations (x6)
  7. L21
    specialize gaussian_add_of_representations (x7)
  8. L22
    specialize gaussian_add_of_representations (x)
  9. L23
    specialize gaussian_add_of_representations (x1)
  10. L24
    specialize gaussian_add_of_representations (x2)
04Use earlier factsL25–34

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

  1. L25
    specialize gaussian_add_of_representations (x3)
  2. L26
    apply gaussian_add_of_representations
  3. L27
    exact h_witness_witness_witness_witness_witness_witness_witness_witness_right_left
  4. L28
    exact h_witness_witness_witness_witness_witness_witness_witness_witness_left
  5. L29
    specialize gaussian_representation_integer_transport (c)
  6. L30
    specialize gaussian_representation_integer_transport (((x) + (x4)))
  7. L31
    specialize gaussian_representation_integer_transport (((x1) + (x5)))
  8. L32
    specialize gaussian_representation_integer_transport (((x2) + (x6)))
  9. L33
    specialize gaussian_representation_integer_transport (((x3) + (x7)))
  10. L34
    specialize gaussian_representation_integer_transport (((x4) + (x)))
05Use earlier factsL35–44

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

  1. L35
    specialize gaussian_representation_integer_transport (((x5) + (x1)))
  2. L36
    specialize gaussian_representation_integer_transport (((x6) + (x2)))
  3. L37
    specialize gaussian_representation_integer_transport (((x7) + (x3)))
  4. L38
    apply gaussian_representation_integer_transport
  5. L39
    specialize gaussian_ring_raw_add_commutative (x)
  6. L40
    specialize gaussian_ring_raw_add_commutative (x1)
  7. L41
    specialize gaussian_ring_raw_add_commutative (x2)
  8. L42
    specialize gaussian_ring_raw_add_commutative (x3)
  9. L43
    specialize gaussian_ring_raw_add_commutative (x4)
  10. L44
    specialize gaussian_ring_raw_add_commutative (x5)
06Use earlier factsL45–48

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

  1. L45
    specialize gaussian_ring_raw_add_commutative (x6)
  2. L46
    specialize gaussian_ring_raw_add_commutative (x7)
  3. L47
    apply gaussian_ring_raw_add_commutative
  4. L48
    exact h_witness_witness_witness_witness_witness_witness_witness_witness_right_right

Library-wide reading audit

Original defined command ledger · 48 lines
  1. 0001intro a
  2. 0002intro b
  3. 0003intro c
  4. 0004intro h
  5. 0005cases h
  6. 0006cases h_witness
  7. 0007cases h_witness_witness
  8. 0008cases h_witness_witness_witness
  9. 0009cases h_witness_witness_witness_witness
  10. 0010cases h_witness_witness_witness_witness_witness
  11. 0011cases h_witness_witness_witness_witness_witness_witness
  12. 0012cases h_witness_witness_witness_witness_witness_witness_witness
  13. 0013cases h_witness_witness_witness_witness_witness_witness_witness_witness
  14. 0014cases h_witness_witness_witness_witness_witness_witness_witness_witness_right
  15. 0015specialize gaussian_add_of_representations (b)
  16. 0016specialize gaussian_add_of_representations (a)
  17. 0017specialize gaussian_add_of_representations (c)
  18. 0018specialize gaussian_add_of_representations (x4)
  19. 0019specialize gaussian_add_of_representations (x5)
  20. 0020specialize gaussian_add_of_representations (x6)
  21. 0021specialize gaussian_add_of_representations (x7)
  22. 0022specialize gaussian_add_of_representations (x)
  23. 0023specialize gaussian_add_of_representations (x1)
  24. 0024specialize gaussian_add_of_representations (x2)
  25. 0025specialize gaussian_add_of_representations (x3)
  26. 0026apply gaussian_add_of_representations
  27. 0027exact h_witness_witness_witness_witness_witness_witness_witness_witness_right_left
  28. 0028exact h_witness_witness_witness_witness_witness_witness_witness_witness_left
  29. 0029specialize gaussian_representation_integer_transport (c)
  30. 0030specialize gaussian_representation_integer_transport (((x) + (x4)))
  31. 0031specialize gaussian_representation_integer_transport (((x1) + (x5)))
  32. 0032specialize gaussian_representation_integer_transport (((x2) + (x6)))
  33. 0033specialize gaussian_representation_integer_transport (((x3) + (x7)))
  34. 0034specialize gaussian_representation_integer_transport (((x4) + (x)))
  35. 0035specialize gaussian_representation_integer_transport (((x5) + (x1)))
  36. 0036specialize gaussian_representation_integer_transport (((x6) + (x2)))
  37. 0037specialize gaussian_representation_integer_transport (((x7) + (x3)))
  38. 0038apply gaussian_representation_integer_transport
  39. 0039specialize gaussian_ring_raw_add_commutative (x)
  40. 0040specialize gaussian_ring_raw_add_commutative (x1)
  41. 0041specialize gaussian_ring_raw_add_commutative (x2)
  42. 0042specialize gaussian_ring_raw_add_commutative (x3)
  43. 0043specialize gaussian_ring_raw_add_commutative (x4)
  44. 0044specialize gaussian_ring_raw_add_commutative (x5)
  45. 0045specialize gaussian_ring_raw_add_commutative (x6)
  46. 0046specialize gaussian_ring_raw_add_commutative (x7)
  47. 0047apply gaussian_ring_raw_add_commutative
  48. 0048exact h_witness_witness_witness_witness_witness_witness_witness_witness_right_right