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 first-order arithmetic statement
forall d z D N. (exists gr_quotient_norm_bound_divisor. (exists ge_first_rp_norm_bound_divisorproduct ge_first_rn_norm_bound_divisorproduct ge_first_ip_norm_bound_divisorproduct ge_first_in_norm_bound_divisorproduct ge_second_rp_norm_bound_divisorproduct ge_second_rn_norm_bound_divisorproduct ge_second_ip_norm_bound_divisorproduct ge_second_in_norm_bound_divisorproduct. ((exists ge_representation_real_code_norm_bound_divisorproductfirst ge_representation_imaginary_code_norm_bound_divisorproductfirst. (((d) = ((ge_representation_real_code_norm_bound_divisorproductfirst) + (ge_representation_imaginary_code_norm_bound_divisorproductfirst)) * S ((ge_representation_real_code_norm_bound_divisorproductfirst) + (ge_representation_imaginary_code_norm_bound_divisorproductfirst)) + ((ge_representation_imaginary_code_norm_bound_divisorproductfirst) + (ge_representation_imaginary_code_norm_bound_divisorproductfirst))) /\ ((exists ge_balance_positive_norm_bound_divisorproductfirstreal ge_balance_negative_norm_bound_divisorproductfirstreal. (((((ge_representation_real_code_norm_bound_divisorproductfirst) = 2 * (ge_balance_positive_norm_bound_divisorproductfirstreal) /\ (ge_balance_negative_norm_bound_divisorproductfirstreal) = 0) \/ exists ge_signed_half_norm_bound_divisorproductfirstrealdecode. (((ge_representation_real_code_norm_bound_divisorproductfirst) = 2 * ge_signed_half_norm_bound_divisorproductfirstrealdecode + 1 /\ (ge_balance_positive_norm_bound_divisorproductfirstreal) = 0) /\ (ge_balance_negative_norm_bound_divisorproductfirstreal) = S ge_signed_half_norm_bound_divisorproductfirstrealdecode))) /\ ((ge_first_rp_norm_bound_divisorproduct) + ge_balance_negative_norm_bound_divisorproductfirstreal = (ge_first_rn_norm_bound_divisorproduct) + ge_balance_positive_norm_bound_divisorproductfirstreal))) /\ (exists ge_balance_positive_norm_bound_divisorproductfirstimaginary ge_balance_negative_norm_bound_divisorproductfirstimaginary. (((((ge_representation_imaginary_code_norm_bound_divisorproductfirst) = 2 * (ge_balance_positive_norm_bound_divisorproductfirstimaginary) /\ (ge_balance_negative_norm_bound_divisorproductfirstimaginary) = 0) \/ exists ge_signed_half_norm_bound_divisorproductfirstimaginarydecode. (((ge_representation_imaginary_code_norm_bound_divisorproductfirst) = 2 * ge_signed_half_norm_bound_divisorproductfirstimaginarydecode + 1 /\ (ge_balance_positive_norm_bound_divisorproductfirstimaginary) = 0) /\ (ge_balance_negative_norm_bound_divisorproductfirstimaginary) = S ge_signed_half_norm_bound_divisorproductfirstimaginarydecode))) /\ ((ge_first_ip_norm_bound_divisorproduct) + ge_balance_negative_norm_bound_divisorproductfirstimaginary = (ge_first_in_norm_bound_divisorproduct) + ge_balance_positive_norm_bound_divisorproductfirstimaginary)))))) /\ ((exists ge_representation_real_code_norm_bound_divisorproductsecond ge_representation_imaginary_code_norm_bound_divisorproductsecond. (((gr_quotient_norm_bound_divisor) = ((ge_representation_real_code_norm_bound_divisorproductsecond) + (ge_representation_imaginary_code_norm_bound_divisorproductsecond)) * S ((ge_representation_real_code_norm_bound_divisorproductsecond) + (ge_representation_imaginary_code_norm_bound_divisorproductsecond)) + ((ge_representation_imaginary_code_norm_bound_divisorproductsecond) + (ge_representation_imaginary_code_norm_bound_divisorproductsecond))) /\ ((exists ge_balance_positive_norm_bound_divisorproductsecondreal ge_balance_negative_norm_bound_divisorproductsecondreal. (((((ge_representation_real_code_norm_bound_divisorproductsecond) = 2 * (ge_balance_positive_norm_bound_divisorproductsecondreal) /\ (ge_balance_negative_norm_bound_divisorproductsecondreal) = 0) \/ exists ge_signed_half_norm_bound_divisorproductsecondrealdecode. (((ge_representation_real_code_norm_bound_divisorproductsecond) = 2 * ge_signed_half_norm_bound_divisorproductsecondrealdecode + 1 /\ (ge_balance_positive_norm_bound_divisorproductsecondreal) = 0) /\ (ge_balance_negative_norm_bound_divisorproductsecondreal) = S ge_signed_half_norm_bound_divisorproductsecondrealdecode))) /\ ((ge_second_rp_norm_bound_divisorproduct) + ge_balance_negative_norm_bound_divisorproductsecondreal = (ge_second_rn_norm_bound_divisorproduct) + ge_balance_positive_norm_bound_divisorproductsecondreal))) /\ (exists ge_balance_positive_norm_bound_divisorproductsecondimaginary ge_balance_negative_norm_bound_divisorproductsecondimaginary. (((((ge_representation_imaginary_code_norm_bound_divisorproductsecond) = 2 * (ge_balance_positive_norm_bound_divisorproductsecondimaginary) /\ (ge_balance_negative_norm_bound_divisorproductsecondimaginary) = 0) \/ exists ge_signed_half_norm_bound_divisorproductsecondimaginarydecode. (((ge_representation_imaginary_code_norm_bound_divisorproductsecond) = 2 * ge_signed_half_norm_bound_divisorproductsecondimaginarydecode + 1 /\ (ge_balance_positive_norm_bound_divisorproductsecondimaginary) = 0) /\ (ge_balance_negative_norm_bound_divisorproductsecondimaginary) = S ge_signed_half_norm_bound_divisorproductsecondimaginarydecode))) /\ ((ge_second_ip_norm_bound_divisorproduct) + ge_balance_negative_norm_bound_divisorproductsecondimaginary = (ge_second_in_norm_bound_divisorproduct) + ge_balance_positive_norm_bound_divisorproductsecondimaginary)))))) /\ (exists ge_representation_real_code_norm_bound_divisorproductoutput ge_representation_imaginary_code_norm_bound_divisorproductoutput. (((z) = ((ge_representation_real_code_norm_bound_divisorproductoutput) + (ge_representation_imaginary_code_norm_bound_divisorproductoutput)) * S ((ge_representation_real_code_norm_bound_divisorproductoutput) + (ge_representation_imaginary_code_norm_bound_divisorproductoutput)) + ((ge_representation_imaginary_code_norm_bound_divisorproductoutput) + (ge_representation_imaginary_code_norm_bound_divisorproductoutput))) /\ ((exists ge_balance_positive_norm_bound_divisorproductoutputreal ge_balance_negative_norm_bound_divisorproductoutputreal. (((((ge_representation_real_code_norm_bound_divisorproductoutput) = 2 * (ge_balance_positive_norm_bound_divisorproductoutputreal) /\ (ge_balance_negative_norm_bound_divisorproductoutputreal) = 0) \/ exists ge_signed_half_norm_bound_divisorproductoutputrealdecode. (((ge_representation_real_code_norm_bound_divisorproductoutput) = 2 * ge_signed_half_norm_bound_divisorproductoutputrealdecode + 1 /\ (ge_balance_positive_norm_bound_divisorproductoutputreal) = 0) /\ (ge_balance_negative_norm_bound_divisorproductoutputreal) = S ge_signed_half_norm_bound_divisorproductoutputrealdecode))) /\ ((((((((ge_first_rp_norm_bound_divisorproduct) * (ge_second_rp_norm_bound_divisorproduct))) + (((ge_first_rn_norm_bound_divisorproduct) * (ge_second_rn_norm_bound_divisorproduct))))) + (((((ge_first_ip_norm_bound_divisorproduct) * (ge_second_in_norm_bound_divisorproduct))) + (((ge_first_in_norm_bound_divisorproduct) * (ge_second_ip_norm_bound_divisorproduct))))))) + ge_balance_negative_norm_bound_divisorproductoutputreal = (((((((ge_first_rp_norm_bound_divisorproduct) * (ge_second_rn_norm_bound_divisorproduct))) + (((ge_first_rn_norm_bound_divisorproduct) * (ge_second_rp_norm_bound_divisorproduct))))) + (((((ge_first_ip_norm_bound_divisorproduct) * (ge_second_ip_norm_bound_divisorproduct))) + (((ge_first_in_norm_bound_divisorproduct) * (ge_second_in_norm_bound_divisorproduct))))))) + ge_balance_positive_norm_bound_divisorproductoutputreal))) /\ (exists ge_balance_positive_norm_bound_divisorproductoutputimaginary ge_balance_negative_norm_bound_divisorproductoutputimaginary. (((((ge_representation_imaginary_code_norm_bound_divisorproductoutput) = 2 * (ge_balance_positive_norm_bound_divisorproductoutputimaginary) /\ (ge_balance_negative_norm_bound_divisorproductoutputimaginary) = 0) \/ exists ge_signed_half_norm_bound_divisorproductoutputimaginarydecode. (((ge_representation_imaginary_code_norm_bound_divisorproductoutput) = 2 * ge_signed_half_norm_bound_divisorproductoutputimaginarydecode + 1 /\ (ge_balance_positive_norm_bound_divisorproductoutputimaginary) = 0) /\ (ge_balance_negative_norm_bound_divisorproductoutputimaginary) = S ge_signed_half_norm_bound_divisorproductoutputimaginarydecode))) /\ ((((((((ge_first_rp_norm_bound_divisorproduct) * (ge_second_ip_norm_bound_divisorproduct))) + (((ge_first_rn_norm_bound_divisorproduct) * (ge_second_in_norm_bound_divisorproduct))))) + (((((ge_first_ip_norm_bound_divisorproduct) * (ge_second_rp_norm_bound_divisorproduct))) + (((ge_first_in_norm_bound_divisorproduct) * (ge_second_rn_norm_bound_divisorproduct))))))) + ge_balance_negative_norm_bound_divisorproductoutputimaginary = (((((((ge_first_rp_norm_bound_divisorproduct) * (ge_second_in_norm_bound_divisorproduct))) + (((ge_first_rn_norm_bound_divisorproduct) * (ge_second_ip_norm_bound_divisorproduct))))) + (((((ge_first_ip_norm_bound_divisorproduct) * (ge_second_rn_norm_bound_divisorproduct))) + (((ge_first_in_norm_bound_divisorproduct) * (ge_second_rp_norm_bound_divisorproduct))))))) + ge_balance_positive_norm_bound_divisorproductoutputimaginary)))))))))) -> (exists ge_norm_rp_norm_bound_first ge_norm_rn_norm_bound_first ge_norm_ip_norm_bound_first ge_norm_in_norm_bound_first. ((exists ge_representation_real_code_norm_bound_firstrepresentation ge_representation_imaginary_code_norm_bound_firstrepresentation. (((d) = ((ge_representation_real_code_norm_bound_firstrepresentation) + (ge_representation_imaginary_code_norm_bound_firstrepresentation)) * S ((ge_representation_real_code_norm_bound_firstrepresentation) + (ge_representation_imaginary_code_norm_bound_firstrepresentation)) + ((ge_representation_imaginary_code_norm_bound_firstrepresentation) + (ge_representation_imaginary_code_norm_bound_firstrepresentation))) /\ ((exists ge_balance_positive_norm_bound_firstrepresentationreal ge_balance_negative_norm_bound_firstrepresentationreal. (((((ge_representation_real_code_norm_bound_firstrepresentation) = 2 * (ge_balance_positive_norm_bound_firstrepresentationreal) /\ (ge_balance_negative_norm_bound_firstrepresentationreal) = 0) \/ exists ge_signed_half_norm_bound_firstrepresentationrealdecode. (((ge_representation_real_code_norm_bound_firstrepresentation) = 2 * ge_signed_half_norm_bound_firstrepresentationrealdecode + 1 /\ (ge_balance_positive_norm_bound_firstrepresentationreal) = 0) /\ (ge_balance_negative_norm_bound_firstrepresentationreal) = S ge_signed_half_norm_bound_firstrepresentationrealdecode))) /\ ((ge_norm_rp_norm_bound_first) + ge_balance_negative_norm_bound_firstrepresentationreal = (ge_norm_rn_norm_bound_first) + ge_balance_positive_norm_bound_firstrepresentationreal))) /\ (exists ge_balance_positive_norm_bound_firstrepresentationimaginary ge_balance_negative_norm_bound_firstrepresentationimaginary. (((((ge_representation_imaginary_code_norm_bound_firstrepresentation) = 2 * (ge_balance_positive_norm_bound_firstrepresentationimaginary) /\ (ge_balance_negative_norm_bound_firstrepresentationimaginary) = 0) \/ exists ge_signed_half_norm_bound_firstrepresentationimaginarydecode. (((ge_representation_imaginary_code_norm_bound_firstrepresentation) = 2 * ge_signed_half_norm_bound_firstrepresentationimaginarydecode + 1 /\ (ge_balance_positive_norm_bound_firstrepresentationimaginary) = 0) /\ (ge_balance_negative_norm_bound_firstrepresentationimaginary) = S ge_signed_half_norm_bound_firstrepresentationimaginarydecode))) /\ ((ge_norm_ip_norm_bound_first) + ge_balance_negative_norm_bound_firstrepresentationimaginary = (ge_norm_in_norm_bound_first) + ge_balance_positive_norm_bound_firstrepresentationimaginary)))))) /\ (exists ge_real_square_norm_bound_firstsquare ge_imaginary_square_norm_bound_firstsquare. ((((((ge_norm_rp_norm_bound_first) * (ge_norm_rp_norm_bound_first))) + (((ge_norm_rn_norm_bound_first) * (ge_norm_rn_norm_bound_first)))) = ((ge_real_square_norm_bound_firstsquare) + (((((ge_norm_rp_norm_bound_first) * (ge_norm_rn_norm_bound_first))) + (((ge_norm_rn_norm_bound_first) * (ge_norm_rp_norm_bound_first))))))) /\ ((((((ge_norm_ip_norm_bound_first) * (ge_norm_ip_norm_bound_first))) + (((ge_norm_in_norm_bound_first) * (ge_norm_in_norm_bound_first)))) = ((ge_imaginary_square_norm_bound_firstsquare) + (((((ge_norm_ip_norm_bound_first) * (ge_norm_in_norm_bound_first))) + (((ge_norm_in_norm_bound_first) * (ge_norm_ip_norm_bound_first))))))) /\ ((D) = ge_real_square_norm_bound_firstsquare + ge_imaginary_square_norm_bound_firstsquare)))))) -> (exists ge_norm_rp_norm_bound_total ge_norm_rn_norm_bound_total ge_norm_ip_norm_bound_total ge_norm_in_norm_bound_total. ((exists ge_representation_real_code_norm_bound_totalrepresentation ge_representation_imaginary_code_norm_bound_totalrepresentation. (((z) = ((ge_representation_real_code_norm_bound_totalrepresentation) + (ge_representation_imaginary_code_norm_bound_totalrepresentation)) * S ((ge_representation_real_code_norm_bound_totalrepresentation) + (ge_representation_imaginary_code_norm_bound_totalrepresentation)) + ((ge_representation_imaginary_code_norm_bound_totalrepresentation) + (ge_representation_imaginary_code_norm_bound_totalrepresentation))) /\ ((exists ge_balance_positive_norm_bound_totalrepresentationreal ge_balance_negative_norm_bound_totalrepresentationreal. (((((ge_representation_real_code_norm_bound_totalrepresentation) = 2 * (ge_balance_positive_norm_bound_totalrepresentationreal) /\ (ge_balance_negative_norm_bound_totalrepresentationreal) = 0) \/ exists ge_signed_half_norm_bound_totalrepresentationrealdecode. (((ge_representation_real_code_norm_bound_totalrepresentation) = 2 * ge_signed_half_norm_bound_totalrepresentationrealdecode + 1 /\ (ge_balance_positive_norm_bound_totalrepresentationreal) = 0) /\ (ge_balance_negative_norm_bound_totalrepresentationreal) = S ge_signed_half_norm_bound_totalrepresentationrealdecode))) /\ ((ge_norm_rp_norm_bound_total) + ge_balance_negative_norm_bound_totalrepresentationreal = (ge_norm_rn_norm_bound_total) + ge_balance_positive_norm_bound_totalrepresentationreal))) /\ (exists ge_balance_positive_norm_bound_totalrepresentationimaginary ge_balance_negative_norm_bound_totalrepresentationimaginary. (((((ge_representation_imaginary_code_norm_bound_totalrepresentation) = 2 * (ge_balance_positive_norm_bound_totalrepresentationimaginary) /\ (ge_balance_negative_norm_bound_totalrepresentationimaginary) = 0) \/ exists ge_signed_half_norm_bound_totalrepresentationimaginarydecode. (((ge_representation_imaginary_code_norm_bound_totalrepresentation) = 2 * ge_signed_half_norm_bound_totalrepresentationimaginarydecode + 1 /\ (ge_balance_positive_norm_bound_totalrepresentationimaginary) = 0) /\ (ge_balance_negative_norm_bound_totalrepresentationimaginary) = S ge_signed_half_norm_bound_totalrepresentationimaginarydecode))) /\ ((ge_norm_ip_norm_bound_total) + ge_balance_negative_norm_bound_totalrepresentationimaginary = (ge_norm_in_norm_bound_total) + ge_balance_positive_norm_bound_totalrepresentationimaginary)))))) /\ (exists ge_real_square_norm_bound_totalsquare ge_imaginary_square_norm_bound_totalsquare. ((((((ge_norm_rp_norm_bound_total) * (ge_norm_rp_norm_bound_total))) + (((ge_norm_rn_norm_bound_total) * (ge_norm_rn_norm_bound_total)))) = ((ge_real_square_norm_bound_totalsquare) + (((((ge_norm_rp_norm_bound_total) * (ge_norm_rn_norm_bound_total))) + (((ge_norm_rn_norm_bound_total) * (ge_norm_rp_norm_bound_total))))))) /\ ((((((ge_norm_ip_norm_bound_total) * (ge_norm_ip_norm_bound_total))) + (((ge_norm_in_norm_bound_total) * (ge_norm_in_norm_bound_total)))) = ((ge_imaginary_square_norm_bound_totalsquare) + (((((ge_norm_ip_norm_bound_total) * (ge_norm_in_norm_bound_total))) + (((ge_norm_in_norm_bound_total) * (ge_norm_ip_norm_bound_total))))))) /\ ((N) = ge_real_square_norm_bound_totalsquare + ge_imaginary_square_norm_bound_totalsquare)))))) -> ~(z=0) -> (exists ge_gap_norm_bound. ge_gap_norm_bound + (D) = (N))Constructive proof overview
Generated structural guide
Every actual divisor of a nonzero Gaussian value has norm at most the value norm; the positive quotient-norm gap is constructed explicitly.
The unchanged tactic script uses 3 declared prerequisites and contains 41 exact native proof lines.
Alpha v34 checked-use · first admitted v30 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
GF005B gaussian_divisor_norm_factor GF0016 gaussian_norm_nonzero nonzero_is_succ Stable theorem; checked-use authorizedDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.
Read the argument
Proof checkpoints
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 (2)
01Fix variables and assumptionsL1–8
02Establish hfactorL9–17
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian divisor norm factor.
03Separate the logical casesL18–21
04Establish hpositiveL22–31
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian norm nonzero.
05Calculate and transport equalitiesL32–32
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L32
simp
06Establish hsuccL33–36
07Separate the logical casesL37–37
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L37
cases hsucc
08Construct an explicit witnessL38–38
Supply the displayed value, then prove that it has the required property.
- L38
exists (D*x2)
Original exact command ledger · 41 lines
- 0001
intro d - 0002
intro z - 0003
intro D - 0004
intro N - 0005
intro hdiv - 0006
intro hd - 0007
intro hz - 0008
intro hnz - 0009
have hfactor : exists q Q. ((exists ge_first_rp_norm_bound_product ge_first_rn_norm_bound_product ge_first_ip_norm_bound_product ge_first_in_norm_bound_product ge_second_rp_norm_bound_product ge_second_rn_norm_bound_product ge_second_ip_norm_bound_product ge_second_in_norm_bound_product. ((exists ge_representation_real_code_norm_bound_productfirst ge_representation_imaginary_code_norm_bound_productfirst. (((d) = ((ge_representation_real_code_norm_bound_productfirst) + (ge_representation_imaginary_code_norm_bound_productfirst)) * S ((ge_representation_real_code_norm_bound_productfirst) + (ge_representation_imaginary_code_norm_bound_productfirst)) + ((ge_representation_imaginary_code_norm_bound_productfirst) + (ge_representation_imaginary_code_norm_bound_productfirst))) /\ ((exists ge_balance_positive_norm_bound_productfirstreal ge_balance_negative_norm_bound_productfirstreal. (((((ge_representation_real_code_norm_bound_productfirst) = 2 * (ge_balance_positive_norm_bound_productfirstreal) /\ (ge_balance_negative_norm_bound_productfirstreal) = 0) \/ exists ge_signed_half_norm_bound_productfirstrealdecode. (((ge_representation_real_code_norm_bound_productfirst) = 2 * ge_signed_half_norm_bound_productfirstrealdecode + 1 /\ (ge_balance_positive_norm_bound_productfirstreal) = 0) /\ (ge_balance_negative_norm_bound_productfirstreal) = S ge_signed_half_norm_bound_productfirstrealdecode))) /\ ((ge_first_rp_norm_bound_product) + ge_balance_negative_norm_bound_productfirstreal = (ge_first_rn_norm_bound_product) + ge_balance_positive_norm_bound_productfirstreal))) /\ (exists ge_balance_positive_norm_bound_productfirstimaginary ge_balance_negative_norm_bound_productfirstimaginary. (((((ge_representation_imaginary_code_norm_bound_productfirst) = 2 * (ge_balance_positive_norm_bound_productfirstimaginary) /\ (ge_balance_negative_norm_bound_productfirstimaginary) = 0) \/ exists ge_signed_half_norm_bound_productfirstimaginarydecode. (((ge_representation_imaginary_code_norm_bound_productfirst) = 2 * ge_signed_half_norm_bound_productfirstimaginarydecode + 1 /\ (ge_balance_positive_norm_bound_productfirstimaginary) = 0) /\ (ge_balance_negative_norm_bound_productfirstimaginary) = S ge_signed_half_norm_bound_productfirstimaginarydecode))) /\ ((ge_first_ip_norm_bound_product) + ge_balance_negative_norm_bound_productfirstimaginary = (ge_first_in_norm_bound_product) + ge_balance_positive_norm_bound_productfirstimaginary)))))) /\ ((exists ge_representation_real_code_norm_bound_productsecond ge_representation_imaginary_code_norm_bound_productsecond. (((q) = ((ge_representation_real_code_norm_bound_productsecond) + (ge_representation_imaginary_code_norm_bound_productsecond)) * S ((ge_representation_real_code_norm_bound_productsecond) + (ge_representation_imaginary_code_norm_bound_productsecond)) + ((ge_representation_imaginary_code_norm_bound_productsecond) + (ge_representation_imaginary_code_norm_bound_productsecond))) /\ ((exists ge_balance_positive_norm_bound_productsecondreal ge_balance_negative_norm_bound_productsecondreal. (((((ge_representation_real_code_norm_bound_productsecond) = 2 * (ge_balance_positive_norm_bound_productsecondreal) /\ (ge_balance_negative_norm_bound_productsecondreal) = 0) \/ exists ge_signed_half_norm_bound_productsecondrealdecode. (((ge_representation_real_code_norm_bound_productsecond) = 2 * ge_signed_half_norm_bound_productsecondrealdecode + 1 /\ (ge_balance_positive_norm_bound_productsecondreal) = 0) /\ (ge_balance_negative_norm_bound_productsecondreal) = S ge_signed_half_norm_bound_productsecondrealdecode))) /\ ((ge_second_rp_norm_bound_product) + ge_balance_negative_norm_bound_productsecondreal = (ge_second_rn_norm_bound_product) + ge_balance_positive_norm_bound_productsecondreal))) /\ (exists ge_balance_positive_norm_bound_productsecondimaginary ge_balance_negative_norm_bound_productsecondimaginary. (((((ge_representation_imaginary_code_norm_bound_productsecond) = 2 * (ge_balance_positive_norm_bound_productsecondimaginary) /\ (ge_balance_negative_norm_bound_productsecondimaginary) = 0) \/ exists ge_signed_half_norm_bound_productsecondimaginarydecode. (((ge_representation_imaginary_code_norm_bound_productsecond) = 2 * ge_signed_half_norm_bound_productsecondimaginarydecode + 1 /\ (ge_balance_positive_norm_bound_productsecondimaginary) = 0) /\ (ge_balance_negative_norm_bound_productsecondimaginary) = S ge_signed_half_norm_bound_productsecondimaginarydecode))) /\ ((ge_second_ip_norm_bound_product) + ge_balance_negative_norm_bound_productsecondimaginary = (ge_second_in_norm_bound_product) + ge_balance_positive_norm_bound_productsecondimaginary)))))) /\ (exists ge_representation_real_code_norm_bound_productoutput ge_representation_imaginary_code_norm_bound_productoutput. (((z) = ((ge_representation_real_code_norm_bound_productoutput) + (ge_representation_imaginary_code_norm_bound_productoutput)) * S ((ge_representation_real_code_norm_bound_productoutput) + (ge_representation_imaginary_code_norm_bound_productoutput)) + ((ge_representation_imaginary_code_norm_bound_productoutput) + (ge_representation_imaginary_code_norm_bound_productoutput))) /\ ((exists ge_balance_positive_norm_bound_productoutputreal ge_balance_negative_norm_bound_productoutputreal. (((((ge_representation_real_code_norm_bound_productoutput) = 2 * (ge_balance_positive_norm_bound_productoutputreal) /\ (ge_balance_negative_norm_bound_productoutputreal) = 0) \/ exists ge_signed_half_norm_bound_productoutputrealdecode. (((ge_representation_real_code_norm_bound_productoutput) = 2 * ge_signed_half_norm_bound_productoutputrealdecode + 1 /\ (ge_balance_positive_norm_bound_productoutputreal) = 0) /\ (ge_balance_negative_norm_bound_productoutputreal) = S ge_signed_half_norm_bound_productoutputrealdecode))) /\ ((((((((ge_first_rp_norm_bound_product) * (ge_second_rp_norm_bound_product))) + (((ge_first_rn_norm_bound_product) * (ge_second_rn_norm_bound_product))))) + (((((ge_first_ip_norm_bound_product) * (ge_second_in_norm_bound_product))) + (((ge_first_in_norm_bound_product) * (ge_second_ip_norm_bound_product))))))) + ge_balance_negative_norm_bound_productoutputreal = (((((((ge_first_rp_norm_bound_product) * (ge_second_rn_norm_bound_product))) + (((ge_first_rn_norm_bound_product) * (ge_second_rp_norm_bound_product))))) + (((((ge_first_ip_norm_bound_product) * (ge_second_ip_norm_bound_product))) + (((ge_first_in_norm_bound_product) * (ge_second_in_norm_bound_product))))))) + ge_balance_positive_norm_bound_productoutputreal))) /\ (exists ge_balance_positive_norm_bound_productoutputimaginary ge_balance_negative_norm_bound_productoutputimaginary. (((((ge_representation_imaginary_code_norm_bound_productoutput) = 2 * (ge_balance_positive_norm_bound_productoutputimaginary) /\ (ge_balance_negative_norm_bound_productoutputimaginary) = 0) \/ exists ge_signed_half_norm_bound_productoutputimaginarydecode. (((ge_representation_imaginary_code_norm_bound_productoutput) = 2 * ge_signed_half_norm_bound_productoutputimaginarydecode + 1 /\ (ge_balance_positive_norm_bound_productoutputimaginary) = 0) /\ (ge_balance_negative_norm_bound_productoutputimaginary) = S ge_signed_half_norm_bound_productoutputimaginarydecode))) /\ ((((((((ge_first_rp_norm_bound_product) * (ge_second_ip_norm_bound_product))) + (((ge_first_rn_norm_bound_product) * (ge_second_in_norm_bound_product))))) + (((((ge_first_ip_norm_bound_product) * (ge_second_rp_norm_bound_product))) + (((ge_first_in_norm_bound_product) * (ge_second_rn_norm_bound_product))))))) + ge_balance_negative_norm_bound_productoutputimaginary = (((((((ge_first_rp_norm_bound_product) * (ge_second_in_norm_bound_product))) + (((ge_first_rn_norm_bound_product) * (ge_second_ip_norm_bound_product))))) + (((((ge_first_ip_norm_bound_product) * (ge_second_rn_norm_bound_product))) + (((ge_first_in_norm_bound_product) * (ge_second_rp_norm_bound_product))))))) + ge_balance_positive_norm_bound_productoutputimaginary))))))))) /\ ((exists ge_norm_rp_norm_bound_quotient ge_norm_rn_norm_bound_quotient ge_norm_ip_norm_bound_quotient ge_norm_in_norm_bound_quotient. ((exists ge_representation_real_code_norm_bound_quotientrepresentation ge_representation_imaginary_code_norm_bound_quotientrepresentation. (((q) = ((ge_representation_real_code_norm_bound_quotientrepresentation) + (ge_representation_imaginary_code_norm_bound_quotientrepresentation)) * S ((ge_representation_real_code_norm_bound_quotientrepresentation) + (ge_representation_imaginary_code_norm_bound_quotientrepresentation)) + ((ge_representation_imaginary_code_norm_bound_quotientrepresentation) + (ge_representation_imaginary_code_norm_bound_quotientrepresentation))) /\ ((exists ge_balance_positive_norm_bound_quotientrepresentationreal ge_balance_negative_norm_bound_quotientrepresentationreal. (((((ge_representation_real_code_norm_bound_quotientrepresentation) = 2 * (ge_balance_positive_norm_bound_quotientrepresentationreal) /\ (ge_balance_negative_norm_bound_quotientrepresentationreal) = 0) \/ exists ge_signed_half_norm_bound_quotientrepresentationrealdecode. (((ge_representation_real_code_norm_bound_quotientrepresentation) = 2 * ge_signed_half_norm_bound_quotientrepresentationrealdecode + 1 /\ (ge_balance_positive_norm_bound_quotientrepresentationreal) = 0) /\ (ge_balance_negative_norm_bound_quotientrepresentationreal) = S ge_signed_half_norm_bound_quotientrepresentationrealdecode))) /\ ((ge_norm_rp_norm_bound_quotient) + ge_balance_negative_norm_bound_quotientrepresentationreal = (ge_norm_rn_norm_bound_quotient) + ge_balance_positive_norm_bound_quotientrepresentationreal))) /\ (exists ge_balance_positive_norm_bound_quotientrepresentationimaginary ge_balance_negative_norm_bound_quotientrepresentationimaginary. (((((ge_representation_imaginary_code_norm_bound_quotientrepresentation) = 2 * (ge_balance_positive_norm_bound_quotientrepresentationimaginary) /\ (ge_balance_negative_norm_bound_quotientrepresentationimaginary) = 0) \/ exists ge_signed_half_norm_bound_quotientrepresentationimaginarydecode. (((ge_representation_imaginary_code_norm_bound_quotientrepresentation) = 2 * ge_signed_half_norm_bound_quotientrepresentationimaginarydecode + 1 /\ (ge_balance_positive_norm_bound_quotientrepresentationimaginary) = 0) /\ (ge_balance_negative_norm_bound_quotientrepresentationimaginary) = S ge_signed_half_norm_bound_quotientrepresentationimaginarydecode))) /\ ((ge_norm_ip_norm_bound_quotient) + ge_balance_negative_norm_bound_quotientrepresentationimaginary = (ge_norm_in_norm_bound_quotient) + ge_balance_positive_norm_bound_quotientrepresentationimaginary)))))) /\ (exists ge_real_square_norm_bound_quotientsquare ge_imaginary_square_norm_bound_quotientsquare. ((((((ge_norm_rp_norm_bound_quotient) * (ge_norm_rp_norm_bound_quotient))) + (((ge_norm_rn_norm_bound_quotient) * (ge_norm_rn_norm_bound_quotient)))) = ((ge_real_square_norm_bound_quotientsquare) + (((((ge_norm_rp_norm_bound_quotient) * (ge_norm_rn_norm_bound_quotient))) + (((ge_norm_rn_norm_bound_quotient) * (ge_norm_rp_norm_bound_quotient))))))) /\ ((((((ge_norm_ip_norm_bound_quotient) * (ge_norm_ip_norm_bound_quotient))) + (((ge_norm_in_norm_bound_quotient) * (ge_norm_in_norm_bound_quotient)))) = ((ge_imaginary_square_norm_bound_quotientsquare) + (((((ge_norm_ip_norm_bound_quotient) * (ge_norm_in_norm_bound_quotient))) + (((ge_norm_in_norm_bound_quotient) * (ge_norm_ip_norm_bound_quotient))))))) /\ ((Q) = ge_real_square_norm_bound_quotientsquare + ge_imaginary_square_norm_bound_quotientsquare)))))) /\ (N=D*Q))) - 0010
specialize gaussian_divisor_norm_factor (d) - 0011
specialize gaussian_divisor_norm_factor (z) - 0012
specialize gaussian_divisor_norm_factor (D) - 0013
specialize gaussian_divisor_norm_factor (N) - 0014
apply gaussian_divisor_norm_factor - 0015
exact hdiv - 0016
exact hd - 0017
exact hz - 0018
cases hfactor - 0019
cases hfactor_witness - 0020
cases hfactor_witness_witness - 0021
cases hfactor_witness_witness_right - 0022
have hpositive : ~(x1=0) - 0023
intro hzero - 0024
specialize gaussian_norm_nonzero (z) - 0025
specialize gaussian_norm_nonzero (N) - 0026
apply gaussian_norm_nonzero - 0027
exact hz - 0028
exact hnz - 0029
rewrite hzero at hfactor_witness_witness_right_right - 0030
trans D*0 - 0031
exact hfactor_witness_witness_right_right - 0032
simp - 0033
have hsucc : exists h. x1=S h - 0034
specialize nonzero_is_succ (x1) - 0035
apply nonzero_is_succ - 0036
exact hpositive - 0037
cases hsucc - 0038
exists (D*x2) - 0039
rewrite hsucc_witness at hfactor_witness_witness_right_right - 0040
rewrite hfactor_witness_witness_right_right - 0041
simp