GF0016

gaussian_norm_nonzero

A nonzero actual Gaussian integer has nonzero squared norm.

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

∀ z. ∀ N. GNorm(z,N) → ¬z = 0 → ¬N = 0

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

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall z N. (exists ge_norm_rp_norm_positive ge_norm_rn_norm_positive ge_norm_ip_norm_positive ge_norm_in_norm_positive. ((exists ge_representation_real_code_norm_positiverepresentation ge_representation_imaginary_code_norm_positiverepresentation. (((z) = ((ge_representation_real_code_norm_positiverepresentation) + (ge_representation_imaginary_code_norm_positiverepresentation)) * S ((ge_representation_real_code_norm_positiverepresentation) + (ge_representation_imaginary_code_norm_positiverepresentation)) + ((ge_representation_imaginary_code_norm_positiverepresentation) + (ge_representation_imaginary_code_norm_positiverepresentation))) /\ ((exists ge_balance_positive_norm_positiverepresentationreal ge_balance_negative_norm_positiverepresentationreal. (((((ge_representation_real_code_norm_positiverepresentation) = 2 * (ge_balance_positive_norm_positiverepresentationreal) /\ (ge_balance_negative_norm_positiverepresentationreal) = 0) \/ exists ge_signed_half_norm_positiverepresentationrealdecode. (((ge_representation_real_code_norm_positiverepresentation) = 2 * ge_signed_half_norm_positiverepresentationrealdecode + 1 /\ (ge_balance_positive_norm_positiverepresentationreal) = 0) /\ (ge_balance_negative_norm_positiverepresentationreal) = S ge_signed_half_norm_positiverepresentationrealdecode))) /\ ((ge_norm_rp_norm_positive) + ge_balance_negative_norm_positiverepresentationreal = (ge_norm_rn_norm_positive) + ge_balance_positive_norm_positiverepresentationreal))) /\ (exists ge_balance_positive_norm_positiverepresentationimaginary ge_balance_negative_norm_positiverepresentationimaginary. (((((ge_representation_imaginary_code_norm_positiverepresentation) = 2 * (ge_balance_positive_norm_positiverepresentationimaginary) /\ (ge_balance_negative_norm_positiverepresentationimaginary) = 0) \/ exists ge_signed_half_norm_positiverepresentationimaginarydecode. (((ge_representation_imaginary_code_norm_positiverepresentation) = 2 * ge_signed_half_norm_positiverepresentationimaginarydecode + 1 /\ (ge_balance_positive_norm_positiverepresentationimaginary) = 0) /\ (ge_balance_negative_norm_positiverepresentationimaginary) = S ge_signed_half_norm_positiverepresentationimaginarydecode))) /\ ((ge_norm_ip_norm_positive) + ge_balance_negative_norm_positiverepresentationimaginary = (ge_norm_in_norm_positive) + ge_balance_positive_norm_positiverepresentationimaginary)))))) /\ (exists ge_real_square_norm_positivesquare ge_imaginary_square_norm_positivesquare. ((((((ge_norm_rp_norm_positive) * (ge_norm_rp_norm_positive))) + (((ge_norm_rn_norm_positive) * (ge_norm_rn_norm_positive)))) = ((ge_real_square_norm_positivesquare) + (((((ge_norm_rp_norm_positive) * (ge_norm_rn_norm_positive))) + (((ge_norm_rn_norm_positive) * (ge_norm_rp_norm_positive))))))) /\ ((((((ge_norm_ip_norm_positive) * (ge_norm_ip_norm_positive))) + (((ge_norm_in_norm_positive) * (ge_norm_in_norm_positive)))) = ((ge_imaginary_square_norm_positivesquare) + (((((ge_norm_ip_norm_positive) * (ge_norm_in_norm_positive))) + (((ge_norm_in_norm_positive) * (ge_norm_ip_norm_positive))))))) /\ ((N) = ge_real_square_norm_positivesquare + ge_imaginary_square_norm_positivesquare)))))) -> ~(z=0) -> ~(N=0)

Complete tactic proof in conservative notation

All 31 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

31 script commands · 7 reading checkpoints · 1 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.

01Fix variables and assumptionsL1–5

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

  1. L1
    intro z
  2. L2
    intro N
  3. L3
    intro hnorm
  4. L4
    intro hz
  5. L5
    intro hN
02Separate the logical casesL6–10

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

  1. L6
    cases hnorm
  2. L7
    cases hnorm_witness
  3. L8
    cases hnorm_witness_witness
  4. L9
    cases hnorm_witness_witness_witness
  5. L10
    cases hnorm_witness_witness_witness_witness
03Establish hzeroL11–18

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian representation zero iff.

  1. L11
    have hzero : (z=0 -> (x=x1 /\ x2=x3)) /\ ((x=x1 /\ x2=x3) -> z=0)
  2. L12
    specialize gaussian_representation_zero_iff (z)
  3. L13
    specialize gaussian_representation_zero_iff (x)
  4. L14
    specialize gaussian_representation_zero_iff (x1)
  5. L15
    specialize gaussian_representation_zero_iff (x2)
  6. L16
    specialize gaussian_representation_zero_iff (x3)
  7. L17
    apply gaussian_representation_zero_iff
  8. L18
    exact hnorm_witness_witness_witness_witness_left
04Separate the logical casesL19–19

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

  1. L19
    cases hzero
05Use earlier factsL20–26

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

  1. L20
    specialize gaussian_signed_norm_nonzero (x)
  2. L21
    specialize gaussian_signed_norm_nonzero (x1)
  3. L22
    specialize gaussian_signed_norm_nonzero (x2)
  4. L23
    specialize gaussian_signed_norm_nonzero (x3)
  5. L24
    specialize gaussian_signed_norm_nonzero (N)
  6. L25
    apply gaussian_signed_norm_nonzero
  7. L26
    exact hnorm_witness_witness_witness_witness_right
06Fix variables and assumptionsL27–27

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

  1. L27
    intro hvanish
07Use earlier factsL28–31

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

  1. L28
    apply hz
  2. L29
    apply hzero_right
  3. L30
    exact hvanish
  4. L31
    exact hN

Library-wide reading audit

Original defined command ledger · 31 lines
  1. 0001intro z
  2. 0002intro N
  3. 0003intro hnorm
  4. 0004intro hz
  5. 0005intro hN
  6. 0006cases hnorm
  7. 0007cases hnorm_witness
  8. 0008cases hnorm_witness_witness
  9. 0009cases hnorm_witness_witness_witness
  10. 0010cases hnorm_witness_witness_witness_witness
  11. 0011have hzero : (z=0 -> (x=x1 /\ x2=x3)) /\ ((x=x1 /\ x2=x3) -> z=0)
  12. 0012specialize gaussian_representation_zero_iff (z)
  13. 0013specialize gaussian_representation_zero_iff (x)
  14. 0014specialize gaussian_representation_zero_iff (x1)
  15. 0015specialize gaussian_representation_zero_iff (x2)
  16. 0016specialize gaussian_representation_zero_iff (x3)
  17. 0017apply gaussian_representation_zero_iff
  18. 0018exact hnorm_witness_witness_witness_witness_left
  19. 0019cases hzero
  20. 0020specialize gaussian_signed_norm_nonzero (x)
  21. 0021specialize gaussian_signed_norm_nonzero (x1)
  22. 0022specialize gaussian_signed_norm_nonzero (x2)
  23. 0023specialize gaussian_signed_norm_nonzero (x3)
  24. 0024specialize gaussian_signed_norm_nonzero (N)
  25. 0025apply gaussian_signed_norm_nonzero
  26. 0026exact hnorm_witness_witness_witness_witness_right
  27. 0027intro hvanish
  28. 0028apply hz
  29. 0029apply hzero_right
  30. 0030exact hvanish
  31. 0031exact hN