GF004A

gaussian_divides_product_right

An actual divisor of the second factor also divides the actual Gaussian product.

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

∀ d. ∀ a. ∀ b. ∀ c. GDvd(d,b)GMul(a,b,c)GDvd(d,c)

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

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall d a b c. (exists gr_quotient_product_right_divisor. (exists ge_first_rp_product_right_divisorproduct ge_first_rn_product_right_divisorproduct ge_first_ip_product_right_divisorproduct ge_first_in_product_right_divisorproduct ge_second_rp_product_right_divisorproduct ge_second_rn_product_right_divisorproduct ge_second_ip_product_right_divisorproduct ge_second_in_product_right_divisorproduct. ((exists ge_representation_real_code_product_right_divisorproductfirst ge_representation_imaginary_code_product_right_divisorproductfirst. (((d) = ((ge_representation_real_code_product_right_divisorproductfirst) + (ge_representation_imaginary_code_product_right_divisorproductfirst)) * S ((ge_representation_real_code_product_right_divisorproductfirst) + (ge_representation_imaginary_code_product_right_divisorproductfirst)) + ((ge_representation_imaginary_code_product_right_divisorproductfirst) + (ge_representation_imaginary_code_product_right_divisorproductfirst))) /\ ((exists ge_balance_positive_product_right_divisorproductfirstreal ge_balance_negative_product_right_divisorproductfirstreal. (((((ge_representation_real_code_product_right_divisorproductfirst) = 2 * (ge_balance_positive_product_right_divisorproductfirstreal) /\ (ge_balance_negative_product_right_divisorproductfirstreal) = 0) \/ exists ge_signed_half_product_right_divisorproductfirstrealdecode. (((ge_representation_real_code_product_right_divisorproductfirst) = 2 * ge_signed_half_product_right_divisorproductfirstrealdecode + 1 /\ (ge_balance_positive_product_right_divisorproductfirstreal) = 0) /\ (ge_balance_negative_product_right_divisorproductfirstreal) = S ge_signed_half_product_right_divisorproductfirstrealdecode))) /\ ((ge_first_rp_product_right_divisorproduct) + ge_balance_negative_product_right_divisorproductfirstreal = (ge_first_rn_product_right_divisorproduct) + ge_balance_positive_product_right_divisorproductfirstreal))) /\ (exists ge_balance_positive_product_right_divisorproductfirstimaginary ge_balance_negative_product_right_divisorproductfirstimaginary. (((((ge_representation_imaginary_code_product_right_divisorproductfirst) = 2 * (ge_balance_positive_product_right_divisorproductfirstimaginary) /\ (ge_balance_negative_product_right_divisorproductfirstimaginary) = 0) \/ exists ge_signed_half_product_right_divisorproductfirstimaginarydecode. (((ge_representation_imaginary_code_product_right_divisorproductfirst) = 2 * ge_signed_half_product_right_divisorproductfirstimaginarydecode + 1 /\ (ge_balance_positive_product_right_divisorproductfirstimaginary) = 0) /\ (ge_balance_negative_product_right_divisorproductfirstimaginary) = S ge_signed_half_product_right_divisorproductfirstimaginarydecode))) /\ ((ge_first_ip_product_right_divisorproduct) + ge_balance_negative_product_right_divisorproductfirstimaginary = (ge_first_in_product_right_divisorproduct) + ge_balance_positive_product_right_divisorproductfirstimaginary)))))) /\ ((exists ge_representation_real_code_product_right_divisorproductsecond ge_representation_imaginary_code_product_right_divisorproductsecond. (((gr_quotient_product_right_divisor) = ((ge_representation_real_code_product_right_divisorproductsecond) + (ge_representation_imaginary_code_product_right_divisorproductsecond)) * S ((ge_representation_real_code_product_right_divisorproductsecond) + (ge_representation_imaginary_code_product_right_divisorproductsecond)) + ((ge_representation_imaginary_code_product_right_divisorproductsecond) + (ge_representation_imaginary_code_product_right_divisorproductsecond))) /\ ((exists ge_balance_positive_product_right_divisorproductsecondreal ge_balance_negative_product_right_divisorproductsecondreal. (((((ge_representation_real_code_product_right_divisorproductsecond) = 2 * (ge_balance_positive_product_right_divisorproductsecondreal) /\ (ge_balance_negative_product_right_divisorproductsecondreal) = 0) \/ exists ge_signed_half_product_right_divisorproductsecondrealdecode. (((ge_representation_real_code_product_right_divisorproductsecond) = 2 * ge_signed_half_product_right_divisorproductsecondrealdecode + 1 /\ (ge_balance_positive_product_right_divisorproductsecondreal) = 0) /\ (ge_balance_negative_product_right_divisorproductsecondreal) = S ge_signed_half_product_right_divisorproductsecondrealdecode))) /\ ((ge_second_rp_product_right_divisorproduct) + ge_balance_negative_product_right_divisorproductsecondreal = (ge_second_rn_product_right_divisorproduct) + ge_balance_positive_product_right_divisorproductsecondreal))) /\ (exists ge_balance_positive_product_right_divisorproductsecondimaginary ge_balance_negative_product_right_divisorproductsecondimaginary. (((((ge_representation_imaginary_code_product_right_divisorproductsecond) = 2 * (ge_balance_positive_product_right_divisorproductsecondimaginary) /\ (ge_balance_negative_product_right_divisorproductsecondimaginary) = 0) \/ exists ge_signed_half_product_right_divisorproductsecondimaginarydecode. (((ge_representation_imaginary_code_product_right_divisorproductsecond) = 2 * ge_signed_half_product_right_divisorproductsecondimaginarydecode + 1 /\ (ge_balance_positive_product_right_divisorproductsecondimaginary) = 0) /\ (ge_balance_negative_product_right_divisorproductsecondimaginary) = S ge_signed_half_product_right_divisorproductsecondimaginarydecode))) /\ ((ge_second_ip_product_right_divisorproduct) + ge_balance_negative_product_right_divisorproductsecondimaginary = (ge_second_in_product_right_divisorproduct) + ge_balance_positive_product_right_divisorproductsecondimaginary)))))) /\ (exists ge_representation_real_code_product_right_divisorproductoutput ge_representation_imaginary_code_product_right_divisorproductoutput. (((b) = ((ge_representation_real_code_product_right_divisorproductoutput) + (ge_representation_imaginary_code_product_right_divisorproductoutput)) * S ((ge_representation_real_code_product_right_divisorproductoutput) + (ge_representation_imaginary_code_product_right_divisorproductoutput)) + ((ge_representation_imaginary_code_product_right_divisorproductoutput) + (ge_representation_imaginary_code_product_right_divisorproductoutput))) /\ ((exists ge_balance_positive_product_right_divisorproductoutputreal ge_balance_negative_product_right_divisorproductoutputreal. (((((ge_representation_real_code_product_right_divisorproductoutput) = 2 * (ge_balance_positive_product_right_divisorproductoutputreal) /\ (ge_balance_negative_product_right_divisorproductoutputreal) = 0) \/ exists ge_signed_half_product_right_divisorproductoutputrealdecode. (((ge_representation_real_code_product_right_divisorproductoutput) = 2 * ge_signed_half_product_right_divisorproductoutputrealdecode + 1 /\ (ge_balance_positive_product_right_divisorproductoutputreal) = 0) /\ (ge_balance_negative_product_right_divisorproductoutputreal) = S ge_signed_half_product_right_divisorproductoutputrealdecode))) /\ ((((((((ge_first_rp_product_right_divisorproduct) * (ge_second_rp_product_right_divisorproduct))) + (((ge_first_rn_product_right_divisorproduct) * (ge_second_rn_product_right_divisorproduct))))) + (((((ge_first_ip_product_right_divisorproduct) * (ge_second_in_product_right_divisorproduct))) + (((ge_first_in_product_right_divisorproduct) * (ge_second_ip_product_right_divisorproduct))))))) + ge_balance_negative_product_right_divisorproductoutputreal = (((((((ge_first_rp_product_right_divisorproduct) * (ge_second_rn_product_right_divisorproduct))) + (((ge_first_rn_product_right_divisorproduct) * (ge_second_rp_product_right_divisorproduct))))) + (((((ge_first_ip_product_right_divisorproduct) * (ge_second_ip_product_right_divisorproduct))) + (((ge_first_in_product_right_divisorproduct) * (ge_second_in_product_right_divisorproduct))))))) + ge_balance_positive_product_right_divisorproductoutputreal))) /\ (exists ge_balance_positive_product_right_divisorproductoutputimaginary ge_balance_negative_product_right_divisorproductoutputimaginary. (((((ge_representation_imaginary_code_product_right_divisorproductoutput) = 2 * (ge_balance_positive_product_right_divisorproductoutputimaginary) /\ (ge_balance_negative_product_right_divisorproductoutputimaginary) = 0) \/ exists ge_signed_half_product_right_divisorproductoutputimaginarydecode. (((ge_representation_imaginary_code_product_right_divisorproductoutput) = 2 * ge_signed_half_product_right_divisorproductoutputimaginarydecode + 1 /\ (ge_balance_positive_product_right_divisorproductoutputimaginary) = 0) /\ (ge_balance_negative_product_right_divisorproductoutputimaginary) = S ge_signed_half_product_right_divisorproductoutputimaginarydecode))) /\ ((((((((ge_first_rp_product_right_divisorproduct) * (ge_second_ip_product_right_divisorproduct))) + (((ge_first_rn_product_right_divisorproduct) * (ge_second_in_product_right_divisorproduct))))) + (((((ge_first_ip_product_right_divisorproduct) * (ge_second_rp_product_right_divisorproduct))) + (((ge_first_in_product_right_divisorproduct) * (ge_second_rn_product_right_divisorproduct))))))) + ge_balance_negative_product_right_divisorproductoutputimaginary = (((((((ge_first_rp_product_right_divisorproduct) * (ge_second_in_product_right_divisorproduct))) + (((ge_first_rn_product_right_divisorproduct) * (ge_second_ip_product_right_divisorproduct))))) + (((((ge_first_ip_product_right_divisorproduct) * (ge_second_rn_product_right_divisorproduct))) + (((ge_first_in_product_right_divisorproduct) * (ge_second_rp_product_right_divisorproduct))))))) + ge_balance_positive_product_right_divisorproductoutputimaginary)))))))))) -> (exists ge_first_rp_product_right_multiple ge_first_rn_product_right_multiple ge_first_ip_product_right_multiple ge_first_in_product_right_multiple ge_second_rp_product_right_multiple ge_second_rn_product_right_multiple ge_second_ip_product_right_multiple ge_second_in_product_right_multiple. ((exists ge_representation_real_code_product_right_multiplefirst ge_representation_imaginary_code_product_right_multiplefirst. (((a) = ((ge_representation_real_code_product_right_multiplefirst) + (ge_representation_imaginary_code_product_right_multiplefirst)) * S ((ge_representation_real_code_product_right_multiplefirst) + (ge_representation_imaginary_code_product_right_multiplefirst)) + ((ge_representation_imaginary_code_product_right_multiplefirst) + (ge_representation_imaginary_code_product_right_multiplefirst))) /\ ((exists ge_balance_positive_product_right_multiplefirstreal ge_balance_negative_product_right_multiplefirstreal. (((((ge_representation_real_code_product_right_multiplefirst) = 2 * (ge_balance_positive_product_right_multiplefirstreal) /\ (ge_balance_negative_product_right_multiplefirstreal) = 0) \/ exists ge_signed_half_product_right_multiplefirstrealdecode. (((ge_representation_real_code_product_right_multiplefirst) = 2 * ge_signed_half_product_right_multiplefirstrealdecode + 1 /\ (ge_balance_positive_product_right_multiplefirstreal) = 0) /\ (ge_balance_negative_product_right_multiplefirstreal) = S ge_signed_half_product_right_multiplefirstrealdecode))) /\ ((ge_first_rp_product_right_multiple) + ge_balance_negative_product_right_multiplefirstreal = (ge_first_rn_product_right_multiple) + ge_balance_positive_product_right_multiplefirstreal))) /\ (exists ge_balance_positive_product_right_multiplefirstimaginary ge_balance_negative_product_right_multiplefirstimaginary. (((((ge_representation_imaginary_code_product_right_multiplefirst) = 2 * (ge_balance_positive_product_right_multiplefirstimaginary) /\ (ge_balance_negative_product_right_multiplefirstimaginary) = 0) \/ exists ge_signed_half_product_right_multiplefirstimaginarydecode. (((ge_representation_imaginary_code_product_right_multiplefirst) = 2 * ge_signed_half_product_right_multiplefirstimaginarydecode + 1 /\ (ge_balance_positive_product_right_multiplefirstimaginary) = 0) /\ (ge_balance_negative_product_right_multiplefirstimaginary) = S ge_signed_half_product_right_multiplefirstimaginarydecode))) /\ ((ge_first_ip_product_right_multiple) + ge_balance_negative_product_right_multiplefirstimaginary = (ge_first_in_product_right_multiple) + ge_balance_positive_product_right_multiplefirstimaginary)))))) /\ ((exists ge_representation_real_code_product_right_multiplesecond ge_representation_imaginary_code_product_right_multiplesecond. (((b) = ((ge_representation_real_code_product_right_multiplesecond) + (ge_representation_imaginary_code_product_right_multiplesecond)) * S ((ge_representation_real_code_product_right_multiplesecond) + (ge_representation_imaginary_code_product_right_multiplesecond)) + ((ge_representation_imaginary_code_product_right_multiplesecond) + (ge_representation_imaginary_code_product_right_multiplesecond))) /\ ((exists ge_balance_positive_product_right_multiplesecondreal ge_balance_negative_product_right_multiplesecondreal. (((((ge_representation_real_code_product_right_multiplesecond) = 2 * (ge_balance_positive_product_right_multiplesecondreal) /\ (ge_balance_negative_product_right_multiplesecondreal) = 0) \/ exists ge_signed_half_product_right_multiplesecondrealdecode. (((ge_representation_real_code_product_right_multiplesecond) = 2 * ge_signed_half_product_right_multiplesecondrealdecode + 1 /\ (ge_balance_positive_product_right_multiplesecondreal) = 0) /\ (ge_balance_negative_product_right_multiplesecondreal) = S ge_signed_half_product_right_multiplesecondrealdecode))) /\ ((ge_second_rp_product_right_multiple) + ge_balance_negative_product_right_multiplesecondreal = (ge_second_rn_product_right_multiple) + ge_balance_positive_product_right_multiplesecondreal))) /\ (exists ge_balance_positive_product_right_multiplesecondimaginary ge_balance_negative_product_right_multiplesecondimaginary. (((((ge_representation_imaginary_code_product_right_multiplesecond) = 2 * (ge_balance_positive_product_right_multiplesecondimaginary) /\ (ge_balance_negative_product_right_multiplesecondimaginary) = 0) \/ exists ge_signed_half_product_right_multiplesecondimaginarydecode. (((ge_representation_imaginary_code_product_right_multiplesecond) = 2 * ge_signed_half_product_right_multiplesecondimaginarydecode + 1 /\ (ge_balance_positive_product_right_multiplesecondimaginary) = 0) /\ (ge_balance_negative_product_right_multiplesecondimaginary) = S ge_signed_half_product_right_multiplesecondimaginarydecode))) /\ ((ge_second_ip_product_right_multiple) + ge_balance_negative_product_right_multiplesecondimaginary = (ge_second_in_product_right_multiple) + ge_balance_positive_product_right_multiplesecondimaginary)))))) /\ (exists ge_representation_real_code_product_right_multipleoutput ge_representation_imaginary_code_product_right_multipleoutput. (((c) = ((ge_representation_real_code_product_right_multipleoutput) + (ge_representation_imaginary_code_product_right_multipleoutput)) * S ((ge_representation_real_code_product_right_multipleoutput) + (ge_representation_imaginary_code_product_right_multipleoutput)) + ((ge_representation_imaginary_code_product_right_multipleoutput) + (ge_representation_imaginary_code_product_right_multipleoutput))) /\ ((exists ge_balance_positive_product_right_multipleoutputreal ge_balance_negative_product_right_multipleoutputreal. (((((ge_representation_real_code_product_right_multipleoutput) = 2 * (ge_balance_positive_product_right_multipleoutputreal) /\ (ge_balance_negative_product_right_multipleoutputreal) = 0) \/ exists ge_signed_half_product_right_multipleoutputrealdecode. (((ge_representation_real_code_product_right_multipleoutput) = 2 * ge_signed_half_product_right_multipleoutputrealdecode + 1 /\ (ge_balance_positive_product_right_multipleoutputreal) = 0) /\ (ge_balance_negative_product_right_multipleoutputreal) = S ge_signed_half_product_right_multipleoutputrealdecode))) /\ ((((((((ge_first_rp_product_right_multiple) * (ge_second_rp_product_right_multiple))) + (((ge_first_rn_product_right_multiple) * (ge_second_rn_product_right_multiple))))) + (((((ge_first_ip_product_right_multiple) * (ge_second_in_product_right_multiple))) + (((ge_first_in_product_right_multiple) * (ge_second_ip_product_right_multiple))))))) + ge_balance_negative_product_right_multipleoutputreal = (((((((ge_first_rp_product_right_multiple) * (ge_second_rn_product_right_multiple))) + (((ge_first_rn_product_right_multiple) * (ge_second_rp_product_right_multiple))))) + (((((ge_first_ip_product_right_multiple) * (ge_second_ip_product_right_multiple))) + (((ge_first_in_product_right_multiple) * (ge_second_in_product_right_multiple))))))) + ge_balance_positive_product_right_multipleoutputreal))) /\ (exists ge_balance_positive_product_right_multipleoutputimaginary ge_balance_negative_product_right_multipleoutputimaginary. (((((ge_representation_imaginary_code_product_right_multipleoutput) = 2 * (ge_balance_positive_product_right_multipleoutputimaginary) /\ (ge_balance_negative_product_right_multipleoutputimaginary) = 0) \/ exists ge_signed_half_product_right_multipleoutputimaginarydecode. (((ge_representation_imaginary_code_product_right_multipleoutput) = 2 * ge_signed_half_product_right_multipleoutputimaginarydecode + 1 /\ (ge_balance_positive_product_right_multipleoutputimaginary) = 0) /\ (ge_balance_negative_product_right_multipleoutputimaginary) = S ge_signed_half_product_right_multipleoutputimaginarydecode))) /\ ((((((((ge_first_rp_product_right_multiple) * (ge_second_ip_product_right_multiple))) + (((ge_first_rn_product_right_multiple) * (ge_second_in_product_right_multiple))))) + (((((ge_first_ip_product_right_multiple) * (ge_second_rp_product_right_multiple))) + (((ge_first_in_product_right_multiple) * (ge_second_rn_product_right_multiple))))))) + ge_balance_negative_product_right_multipleoutputimaginary = (((((((ge_first_rp_product_right_multiple) * (ge_second_in_product_right_multiple))) + (((ge_first_rn_product_right_multiple) * (ge_second_ip_product_right_multiple))))) + (((((ge_first_ip_product_right_multiple) * (ge_second_rn_product_right_multiple))) + (((ge_first_in_product_right_multiple) * (ge_second_rp_product_right_multiple))))))) + ge_balance_positive_product_right_multipleoutputimaginary))))))))) -> (exists gr_quotient_product_right_divides. (exists ge_first_rp_product_right_dividesproduct ge_first_rn_product_right_dividesproduct ge_first_ip_product_right_dividesproduct ge_first_in_product_right_dividesproduct ge_second_rp_product_right_dividesproduct ge_second_rn_product_right_dividesproduct ge_second_ip_product_right_dividesproduct ge_second_in_product_right_dividesproduct. ((exists ge_representation_real_code_product_right_dividesproductfirst ge_representation_imaginary_code_product_right_dividesproductfirst. (((d) = ((ge_representation_real_code_product_right_dividesproductfirst) + (ge_representation_imaginary_code_product_right_dividesproductfirst)) * S ((ge_representation_real_code_product_right_dividesproductfirst) + (ge_representation_imaginary_code_product_right_dividesproductfirst)) + ((ge_representation_imaginary_code_product_right_dividesproductfirst) + (ge_representation_imaginary_code_product_right_dividesproductfirst))) /\ ((exists ge_balance_positive_product_right_dividesproductfirstreal ge_balance_negative_product_right_dividesproductfirstreal. (((((ge_representation_real_code_product_right_dividesproductfirst) = 2 * (ge_balance_positive_product_right_dividesproductfirstreal) /\ (ge_balance_negative_product_right_dividesproductfirstreal) = 0) \/ exists ge_signed_half_product_right_dividesproductfirstrealdecode. (((ge_representation_real_code_product_right_dividesproductfirst) = 2 * ge_signed_half_product_right_dividesproductfirstrealdecode + 1 /\ (ge_balance_positive_product_right_dividesproductfirstreal) = 0) /\ (ge_balance_negative_product_right_dividesproductfirstreal) = S ge_signed_half_product_right_dividesproductfirstrealdecode))) /\ ((ge_first_rp_product_right_dividesproduct) + ge_balance_negative_product_right_dividesproductfirstreal = (ge_first_rn_product_right_dividesproduct) + ge_balance_positive_product_right_dividesproductfirstreal))) /\ (exists ge_balance_positive_product_right_dividesproductfirstimaginary ge_balance_negative_product_right_dividesproductfirstimaginary. (((((ge_representation_imaginary_code_product_right_dividesproductfirst) = 2 * (ge_balance_positive_product_right_dividesproductfirstimaginary) /\ (ge_balance_negative_product_right_dividesproductfirstimaginary) = 0) \/ exists ge_signed_half_product_right_dividesproductfirstimaginarydecode. (((ge_representation_imaginary_code_product_right_dividesproductfirst) = 2 * ge_signed_half_product_right_dividesproductfirstimaginarydecode + 1 /\ (ge_balance_positive_product_right_dividesproductfirstimaginary) = 0) /\ (ge_balance_negative_product_right_dividesproductfirstimaginary) = S ge_signed_half_product_right_dividesproductfirstimaginarydecode))) /\ ((ge_first_ip_product_right_dividesproduct) + ge_balance_negative_product_right_dividesproductfirstimaginary = (ge_first_in_product_right_dividesproduct) + ge_balance_positive_product_right_dividesproductfirstimaginary)))))) /\ ((exists ge_representation_real_code_product_right_dividesproductsecond ge_representation_imaginary_code_product_right_dividesproductsecond. (((gr_quotient_product_right_divides) = ((ge_representation_real_code_product_right_dividesproductsecond) + (ge_representation_imaginary_code_product_right_dividesproductsecond)) * S ((ge_representation_real_code_product_right_dividesproductsecond) + (ge_representation_imaginary_code_product_right_dividesproductsecond)) + ((ge_representation_imaginary_code_product_right_dividesproductsecond) + (ge_representation_imaginary_code_product_right_dividesproductsecond))) /\ ((exists ge_balance_positive_product_right_dividesproductsecondreal ge_balance_negative_product_right_dividesproductsecondreal. (((((ge_representation_real_code_product_right_dividesproductsecond) = 2 * (ge_balance_positive_product_right_dividesproductsecondreal) /\ (ge_balance_negative_product_right_dividesproductsecondreal) = 0) \/ exists ge_signed_half_product_right_dividesproductsecondrealdecode. (((ge_representation_real_code_product_right_dividesproductsecond) = 2 * ge_signed_half_product_right_dividesproductsecondrealdecode + 1 /\ (ge_balance_positive_product_right_dividesproductsecondreal) = 0) /\ (ge_balance_negative_product_right_dividesproductsecondreal) = S ge_signed_half_product_right_dividesproductsecondrealdecode))) /\ ((ge_second_rp_product_right_dividesproduct) + ge_balance_negative_product_right_dividesproductsecondreal = (ge_second_rn_product_right_dividesproduct) + ge_balance_positive_product_right_dividesproductsecondreal))) /\ (exists ge_balance_positive_product_right_dividesproductsecondimaginary ge_balance_negative_product_right_dividesproductsecondimaginary. (((((ge_representation_imaginary_code_product_right_dividesproductsecond) = 2 * (ge_balance_positive_product_right_dividesproductsecondimaginary) /\ (ge_balance_negative_product_right_dividesproductsecondimaginary) = 0) \/ exists ge_signed_half_product_right_dividesproductsecondimaginarydecode. (((ge_representation_imaginary_code_product_right_dividesproductsecond) = 2 * ge_signed_half_product_right_dividesproductsecondimaginarydecode + 1 /\ (ge_balance_positive_product_right_dividesproductsecondimaginary) = 0) /\ (ge_balance_negative_product_right_dividesproductsecondimaginary) = S ge_signed_half_product_right_dividesproductsecondimaginarydecode))) /\ ((ge_second_ip_product_right_dividesproduct) + ge_balance_negative_product_right_dividesproductsecondimaginary = (ge_second_in_product_right_dividesproduct) + ge_balance_positive_product_right_dividesproductsecondimaginary)))))) /\ (exists ge_representation_real_code_product_right_dividesproductoutput ge_representation_imaginary_code_product_right_dividesproductoutput. (((c) = ((ge_representation_real_code_product_right_dividesproductoutput) + (ge_representation_imaginary_code_product_right_dividesproductoutput)) * S ((ge_representation_real_code_product_right_dividesproductoutput) + (ge_representation_imaginary_code_product_right_dividesproductoutput)) + ((ge_representation_imaginary_code_product_right_dividesproductoutput) + (ge_representation_imaginary_code_product_right_dividesproductoutput))) /\ ((exists ge_balance_positive_product_right_dividesproductoutputreal ge_balance_negative_product_right_dividesproductoutputreal. (((((ge_representation_real_code_product_right_dividesproductoutput) = 2 * (ge_balance_positive_product_right_dividesproductoutputreal) /\ (ge_balance_negative_product_right_dividesproductoutputreal) = 0) \/ exists ge_signed_half_product_right_dividesproductoutputrealdecode. (((ge_representation_real_code_product_right_dividesproductoutput) = 2 * ge_signed_half_product_right_dividesproductoutputrealdecode + 1 /\ (ge_balance_positive_product_right_dividesproductoutputreal) = 0) /\ (ge_balance_negative_product_right_dividesproductoutputreal) = S ge_signed_half_product_right_dividesproductoutputrealdecode))) /\ ((((((((ge_first_rp_product_right_dividesproduct) * (ge_second_rp_product_right_dividesproduct))) + (((ge_first_rn_product_right_dividesproduct) * (ge_second_rn_product_right_dividesproduct))))) + (((((ge_first_ip_product_right_dividesproduct) * (ge_second_in_product_right_dividesproduct))) + (((ge_first_in_product_right_dividesproduct) * (ge_second_ip_product_right_dividesproduct))))))) + ge_balance_negative_product_right_dividesproductoutputreal = (((((((ge_first_rp_product_right_dividesproduct) * (ge_second_rn_product_right_dividesproduct))) + (((ge_first_rn_product_right_dividesproduct) * (ge_second_rp_product_right_dividesproduct))))) + (((((ge_first_ip_product_right_dividesproduct) * (ge_second_ip_product_right_dividesproduct))) + (((ge_first_in_product_right_dividesproduct) * (ge_second_in_product_right_dividesproduct))))))) + ge_balance_positive_product_right_dividesproductoutputreal))) /\ (exists ge_balance_positive_product_right_dividesproductoutputimaginary ge_balance_negative_product_right_dividesproductoutputimaginary. (((((ge_representation_imaginary_code_product_right_dividesproductoutput) = 2 * (ge_balance_positive_product_right_dividesproductoutputimaginary) /\ (ge_balance_negative_product_right_dividesproductoutputimaginary) = 0) \/ exists ge_signed_half_product_right_dividesproductoutputimaginarydecode. (((ge_representation_imaginary_code_product_right_dividesproductoutput) = 2 * ge_signed_half_product_right_dividesproductoutputimaginarydecode + 1 /\ (ge_balance_positive_product_right_dividesproductoutputimaginary) = 0) /\ (ge_balance_negative_product_right_dividesproductoutputimaginary) = S ge_signed_half_product_right_dividesproductoutputimaginarydecode))) /\ ((((((((ge_first_rp_product_right_dividesproduct) * (ge_second_ip_product_right_dividesproduct))) + (((ge_first_rn_product_right_dividesproduct) * (ge_second_in_product_right_dividesproduct))))) + (((((ge_first_ip_product_right_dividesproduct) * (ge_second_rp_product_right_dividesproduct))) + (((ge_first_in_product_right_dividesproduct) * (ge_second_rn_product_right_dividesproduct))))))) + ge_balance_negative_product_right_dividesproductoutputimaginary = (((((((ge_first_rp_product_right_dividesproduct) * (ge_second_in_product_right_dividesproduct))) + (((ge_first_rn_product_right_dividesproduct) * (ge_second_ip_product_right_dividesproduct))))) + (((((ge_first_ip_product_right_dividesproduct) * (ge_second_rn_product_right_dividesproduct))) + (((ge_first_in_product_right_dividesproduct) * (ge_second_rp_product_right_dividesproduct))))))) + ge_balance_positive_product_right_dividesproductoutputimaginary))))))))))

Complete tactic proof in conservative notation

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

17 script commands · 3 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 (2)
01Fix variables and assumptionsL1–6

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

  1. L1
    intro d
  2. L2
    intro a
  3. L3
    intro b
  4. L4
    intro c
  5. L5
    intro hd
  6. L6
    intro hprod
02Use earlier factsL7–16

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

  1. L7
    specialize gaussian_divides_product_left (d)
  2. L8
    specialize gaussian_divides_product_left (b)
  3. L9
    specialize gaussian_divides_product_left (a)
  4. L10
    specialize gaussian_divides_product_left (c)
  5. L11
    apply gaussian_divides_product_left
  6. L12
    exact hd
  7. L13
    specialize gaussian_multiply_commutative (a)
  8. L14
    specialize gaussian_multiply_commutative (b)
  9. L15
    specialize gaussian_multiply_commutative (c)
  10. L16
    apply gaussian_multiply_commutative
03Use earlier factsL17–17

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

  1. L17
    exact hprod

Library-wide reading audit

Original defined command ledger · 17 lines
  1. 0001intro d
  2. 0002intro a
  3. 0003intro b
  4. 0004intro c
  5. 0005intro hd
  6. 0006intro hprod
  7. 0007specialize gaussian_divides_product_left (d)
  8. 0008specialize gaussian_divides_product_left (b)
  9. 0009specialize gaussian_divides_product_left (a)
  10. 0010specialize gaussian_divides_product_left (c)
  11. 0011apply gaussian_divides_product_left
  12. 0012exact hd
  13. 0013specialize gaussian_multiply_commutative (a)
  14. 0014specialize gaussian_multiply_commutative (b)
  15. 0015specialize gaussian_multiply_commutative (c)
  16. 0016apply gaussian_multiply_commutative
  17. 0017exact hprod