GF0086

gaussian_product_empty_exists

Every empty Gaussian factor prefix has a genuine constant product trace with canonical value six, not natural one.

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

∀ b. ∀ c. GProduct(b,c,0,6)

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

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall b c. (exists gr_product_trace_empty_product gr_product_scale_empty_product. ((((exists ff_h_gprod_empty_productstart. ff_h_gprod_empty_productstart + S (6) = S ((S (0)) * gr_product_scale_empty_product)) /\ exists ff_q_gprod_empty_productstart. gr_product_trace_empty_product = ff_q_gprod_empty_productstart * S ((S (0)) * gr_product_scale_empty_product) + (6))) /\ ((((exists ff_h_gprod_empty_productend. ff_h_gprod_empty_productend + S (6) = S ((S (0)) * gr_product_scale_empty_product)) /\ exists ff_q_gprod_empty_productend. gr_product_trace_empty_product = ff_q_gprod_empty_productend * S ((S (0)) * gr_product_scale_empty_product) + (6))) /\ (forall gr_product_index_empty_productsteps. (exists ge_gap_empty_productstepsindex_bound. ge_gap_empty_productstepsindex_bound + S (gr_product_index_empty_productsteps) = (0)) -> exists gr_product_factor_empty_productsteps gr_product_before_empty_productsteps gr_product_after_empty_productsteps. ((((exists ff_h_gprod_empty_productstepsfactor. ff_h_gprod_empty_productstepsfactor + S (gr_product_factor_empty_productsteps) = S ((S (gr_product_index_empty_productsteps)) * c)) /\ exists ff_q_gprod_empty_productstepsfactor. b = ff_q_gprod_empty_productstepsfactor * S ((S (gr_product_index_empty_productsteps)) * c) + (gr_product_factor_empty_productsteps))) /\ ((((exists ff_h_gprod_empty_productstepsbefore. ff_h_gprod_empty_productstepsbefore + S (gr_product_before_empty_productsteps) = S ((S (gr_product_index_empty_productsteps)) * gr_product_scale_empty_product)) /\ exists ff_q_gprod_empty_productstepsbefore. gr_product_trace_empty_product = ff_q_gprod_empty_productstepsbefore * S ((S (gr_product_index_empty_productsteps)) * gr_product_scale_empty_product) + (gr_product_before_empty_productsteps))) /\ ((((exists ff_h_gprod_empty_productstepsafter. ff_h_gprod_empty_productstepsafter + S (gr_product_after_empty_productsteps) = S ((S (S (gr_product_index_empty_productsteps))) * gr_product_scale_empty_product)) /\ exists ff_q_gprod_empty_productstepsafter. gr_product_trace_empty_product = ff_q_gprod_empty_productstepsafter * S ((S (S (gr_product_index_empty_productsteps))) * gr_product_scale_empty_product) + (gr_product_after_empty_productsteps))) /\ (exists ge_first_rp_empty_productstepsmultiply ge_first_rn_empty_productstepsmultiply ge_first_ip_empty_productstepsmultiply ge_first_in_empty_productstepsmultiply ge_second_rp_empty_productstepsmultiply ge_second_rn_empty_productstepsmultiply ge_second_ip_empty_productstepsmultiply ge_second_in_empty_productstepsmultiply. ((exists ge_representation_real_code_empty_productstepsmultiplyfirst ge_representation_imaginary_code_empty_productstepsmultiplyfirst. (((gr_product_before_empty_productsteps) = ((ge_representation_real_code_empty_productstepsmultiplyfirst) + (ge_representation_imaginary_code_empty_productstepsmultiplyfirst)) * S ((ge_representation_real_code_empty_productstepsmultiplyfirst) + (ge_representation_imaginary_code_empty_productstepsmultiplyfirst)) + ((ge_representation_imaginary_code_empty_productstepsmultiplyfirst) + (ge_representation_imaginary_code_empty_productstepsmultiplyfirst))) /\ ((exists ge_balance_positive_empty_productstepsmultiplyfirstreal ge_balance_negative_empty_productstepsmultiplyfirstreal. (((((ge_representation_real_code_empty_productstepsmultiplyfirst) = 2 * (ge_balance_positive_empty_productstepsmultiplyfirstreal) /\ (ge_balance_negative_empty_productstepsmultiplyfirstreal) = 0) \/ exists ge_signed_half_empty_productstepsmultiplyfirstrealdecode. (((ge_representation_real_code_empty_productstepsmultiplyfirst) = 2 * ge_signed_half_empty_productstepsmultiplyfirstrealdecode + 1 /\ (ge_balance_positive_empty_productstepsmultiplyfirstreal) = 0) /\ (ge_balance_negative_empty_productstepsmultiplyfirstreal) = S ge_signed_half_empty_productstepsmultiplyfirstrealdecode))) /\ ((ge_first_rp_empty_productstepsmultiply) + ge_balance_negative_empty_productstepsmultiplyfirstreal = (ge_first_rn_empty_productstepsmultiply) + ge_balance_positive_empty_productstepsmultiplyfirstreal))) /\ (exists ge_balance_positive_empty_productstepsmultiplyfirstimaginary ge_balance_negative_empty_productstepsmultiplyfirstimaginary. (((((ge_representation_imaginary_code_empty_productstepsmultiplyfirst) = 2 * (ge_balance_positive_empty_productstepsmultiplyfirstimaginary) /\ (ge_balance_negative_empty_productstepsmultiplyfirstimaginary) = 0) \/ exists ge_signed_half_empty_productstepsmultiplyfirstimaginarydecode. (((ge_representation_imaginary_code_empty_productstepsmultiplyfirst) = 2 * ge_signed_half_empty_productstepsmultiplyfirstimaginarydecode + 1 /\ (ge_balance_positive_empty_productstepsmultiplyfirstimaginary) = 0) /\ (ge_balance_negative_empty_productstepsmultiplyfirstimaginary) = S ge_signed_half_empty_productstepsmultiplyfirstimaginarydecode))) /\ ((ge_first_ip_empty_productstepsmultiply) + ge_balance_negative_empty_productstepsmultiplyfirstimaginary = (ge_first_in_empty_productstepsmultiply) + ge_balance_positive_empty_productstepsmultiplyfirstimaginary)))))) /\ ((exists ge_representation_real_code_empty_productstepsmultiplysecond ge_representation_imaginary_code_empty_productstepsmultiplysecond. (((gr_product_factor_empty_productsteps) = ((ge_representation_real_code_empty_productstepsmultiplysecond) + (ge_representation_imaginary_code_empty_productstepsmultiplysecond)) * S ((ge_representation_real_code_empty_productstepsmultiplysecond) + (ge_representation_imaginary_code_empty_productstepsmultiplysecond)) + ((ge_representation_imaginary_code_empty_productstepsmultiplysecond) + (ge_representation_imaginary_code_empty_productstepsmultiplysecond))) /\ ((exists ge_balance_positive_empty_productstepsmultiplysecondreal ge_balance_negative_empty_productstepsmultiplysecondreal. (((((ge_representation_real_code_empty_productstepsmultiplysecond) = 2 * (ge_balance_positive_empty_productstepsmultiplysecondreal) /\ (ge_balance_negative_empty_productstepsmultiplysecondreal) = 0) \/ exists ge_signed_half_empty_productstepsmultiplysecondrealdecode. (((ge_representation_real_code_empty_productstepsmultiplysecond) = 2 * ge_signed_half_empty_productstepsmultiplysecondrealdecode + 1 /\ (ge_balance_positive_empty_productstepsmultiplysecondreal) = 0) /\ (ge_balance_negative_empty_productstepsmultiplysecondreal) = S ge_signed_half_empty_productstepsmultiplysecondrealdecode))) /\ ((ge_second_rp_empty_productstepsmultiply) + ge_balance_negative_empty_productstepsmultiplysecondreal = (ge_second_rn_empty_productstepsmultiply) + ge_balance_positive_empty_productstepsmultiplysecondreal))) /\ (exists ge_balance_positive_empty_productstepsmultiplysecondimaginary ge_balance_negative_empty_productstepsmultiplysecondimaginary. (((((ge_representation_imaginary_code_empty_productstepsmultiplysecond) = 2 * (ge_balance_positive_empty_productstepsmultiplysecondimaginary) /\ (ge_balance_negative_empty_productstepsmultiplysecondimaginary) = 0) \/ exists ge_signed_half_empty_productstepsmultiplysecondimaginarydecode. (((ge_representation_imaginary_code_empty_productstepsmultiplysecond) = 2 * ge_signed_half_empty_productstepsmultiplysecondimaginarydecode + 1 /\ (ge_balance_positive_empty_productstepsmultiplysecondimaginary) = 0) /\ (ge_balance_negative_empty_productstepsmultiplysecondimaginary) = S ge_signed_half_empty_productstepsmultiplysecondimaginarydecode))) /\ ((ge_second_ip_empty_productstepsmultiply) + ge_balance_negative_empty_productstepsmultiplysecondimaginary = (ge_second_in_empty_productstepsmultiply) + ge_balance_positive_empty_productstepsmultiplysecondimaginary)))))) /\ (exists ge_representation_real_code_empty_productstepsmultiplyoutput ge_representation_imaginary_code_empty_productstepsmultiplyoutput. (((gr_product_after_empty_productsteps) = ((ge_representation_real_code_empty_productstepsmultiplyoutput) + (ge_representation_imaginary_code_empty_productstepsmultiplyoutput)) * S ((ge_representation_real_code_empty_productstepsmultiplyoutput) + (ge_representation_imaginary_code_empty_productstepsmultiplyoutput)) + ((ge_representation_imaginary_code_empty_productstepsmultiplyoutput) + (ge_representation_imaginary_code_empty_productstepsmultiplyoutput))) /\ ((exists ge_balance_positive_empty_productstepsmultiplyoutputreal ge_balance_negative_empty_productstepsmultiplyoutputreal. (((((ge_representation_real_code_empty_productstepsmultiplyoutput) = 2 * (ge_balance_positive_empty_productstepsmultiplyoutputreal) /\ (ge_balance_negative_empty_productstepsmultiplyoutputreal) = 0) \/ exists ge_signed_half_empty_productstepsmultiplyoutputrealdecode. (((ge_representation_real_code_empty_productstepsmultiplyoutput) = 2 * ge_signed_half_empty_productstepsmultiplyoutputrealdecode + 1 /\ (ge_balance_positive_empty_productstepsmultiplyoutputreal) = 0) /\ (ge_balance_negative_empty_productstepsmultiplyoutputreal) = S ge_signed_half_empty_productstepsmultiplyoutputrealdecode))) /\ ((((((((ge_first_rp_empty_productstepsmultiply) * (ge_second_rp_empty_productstepsmultiply))) + (((ge_first_rn_empty_productstepsmultiply) * (ge_second_rn_empty_productstepsmultiply))))) + (((((ge_first_ip_empty_productstepsmultiply) * (ge_second_in_empty_productstepsmultiply))) + (((ge_first_in_empty_productstepsmultiply) * (ge_second_ip_empty_productstepsmultiply))))))) + ge_balance_negative_empty_productstepsmultiplyoutputreal = (((((((ge_first_rp_empty_productstepsmultiply) * (ge_second_rn_empty_productstepsmultiply))) + (((ge_first_rn_empty_productstepsmultiply) * (ge_second_rp_empty_productstepsmultiply))))) + (((((ge_first_ip_empty_productstepsmultiply) * (ge_second_ip_empty_productstepsmultiply))) + (((ge_first_in_empty_productstepsmultiply) * (ge_second_in_empty_productstepsmultiply))))))) + ge_balance_positive_empty_productstepsmultiplyoutputreal))) /\ (exists ge_balance_positive_empty_productstepsmultiplyoutputimaginary ge_balance_negative_empty_productstepsmultiplyoutputimaginary. (((((ge_representation_imaginary_code_empty_productstepsmultiplyoutput) = 2 * (ge_balance_positive_empty_productstepsmultiplyoutputimaginary) /\ (ge_balance_negative_empty_productstepsmultiplyoutputimaginary) = 0) \/ exists ge_signed_half_empty_productstepsmultiplyoutputimaginarydecode. (((ge_representation_imaginary_code_empty_productstepsmultiplyoutput) = 2 * ge_signed_half_empty_productstepsmultiplyoutputimaginarydecode + 1 /\ (ge_balance_positive_empty_productstepsmultiplyoutputimaginary) = 0) /\ (ge_balance_negative_empty_productstepsmultiplyoutputimaginary) = S ge_signed_half_empty_productstepsmultiplyoutputimaginarydecode))) /\ ((((((((ge_first_rp_empty_productstepsmultiply) * (ge_second_ip_empty_productstepsmultiply))) + (((ge_first_rn_empty_productstepsmultiply) * (ge_second_in_empty_productstepsmultiply))))) + (((((ge_first_ip_empty_productstepsmultiply) * (ge_second_rp_empty_productstepsmultiply))) + (((ge_first_in_empty_productstepsmultiply) * (ge_second_rn_empty_productstepsmultiply))))))) + ge_balance_negative_empty_productstepsmultiplyoutputimaginary = (((((((ge_first_rp_empty_productstepsmultiply) * (ge_second_in_empty_productstepsmultiply))) + (((ge_first_rn_empty_productstepsmultiply) * (ge_second_ip_empty_productstepsmultiply))))) + (((((ge_first_ip_empty_productstepsmultiply) * (ge_second_rn_empty_productstepsmultiply))) + (((ge_first_in_empty_productstepsmultiply) * (ge_second_rp_empty_productstepsmultiply))))))) + ge_balance_positive_empty_productstepsmultiplyoutputimaginary))))))))))))))))

Complete tactic proof in conservative notation

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

22 script commands · 15 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–2

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

  1. L1
    intro b
  2. L2
    intro c
02Construct an explicit witnessL3–4

Supply the displayed value, then prove that it has the required property.

  1. L3
    exists (6)
  2. L4
    exists (6)
03Separate the logical casesL5–6

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

  1. L5
    split
  2. L6
    split
04Construct an explicit witnessL7–7

Supply the displayed value, then prove that it has the required property.

  1. L7
    exists 0
05Calculate and transport equalitiesL8–8

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

  1. L8
    norm_num
06Construct an explicit witnessL9–9

Supply the displayed value, then prove that it has the required property.

  1. L9
    exists 0
07Calculate and transport equalitiesL10–10

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

  1. L10
    norm_num
08Separate the logical casesL11–12

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

  1. L11
    split
  2. L12
    split
09Construct an explicit witnessL13–13

Supply the displayed value, then prove that it has the required property.

  1. L13
    exists 0
10Calculate and transport equalitiesL14–14

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

  1. L14
    norm_num
11Construct an explicit witnessL15–15

Supply the displayed value, then prove that it has the required property.

  1. L15
    exists 0
12Calculate and transport equalitiesL16–16

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

  1. L16
    norm_num
13Fix variables and assumptionsL17–18

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

  1. L17
    intro i
  2. L18
    intro hi
14Separate the logical casesL19–19

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

  1. L19
    exfalso
15Use earlier factsL20–22

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

  1. L20
    specialize gaussian_search_no_index_below_zero (i)
  2. L21
    apply gaussian_search_no_index_below_zero
  3. L22
    exact hi

Library-wide reading audit

Original defined command ledger · 22 lines
  1. 0001intro b
  2. 0002intro c
  3. 0003exists (6)
  4. 0004exists (6)
  5. 0005split
  6. 0006split
  7. 0007exists 0
  8. 0008norm_num
  9. 0009exists 0
  10. 0010norm_num
  11. 0011split
  12. 0012split
  13. 0013exists 0
  14. 0014norm_num
  15. 0015exists 0
  16. 0016norm_num
  17. 0017intro i
  18. 0018intro hi
  19. 0019exfalso
  20. 0020specialize gaussian_search_no_index_below_zero (i)
  21. 0021apply gaussian_search_no_index_below_zero
  22. 0022exact hi