GF0068

gaussian_nonzero_product_divisor_unit_cofactor

If a nonzero actual Gaussian product divides one factor, its other factor has a constructed inverse; no abstract domain axiom is 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

∀ p. ∀ a. ∀ b. ¬p = 0 → GMul(a,b,p)GDvd(p,a)GUnit(b)

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

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall p a b. ~(p=0) -> (exists ge_first_rp_cofactor_product ge_first_rn_cofactor_product ge_first_ip_cofactor_product ge_first_in_cofactor_product ge_second_rp_cofactor_product ge_second_rn_cofactor_product ge_second_ip_cofactor_product ge_second_in_cofactor_product. ((exists ge_representation_real_code_cofactor_productfirst ge_representation_imaginary_code_cofactor_productfirst. (((a) = ((ge_representation_real_code_cofactor_productfirst) + (ge_representation_imaginary_code_cofactor_productfirst)) * S ((ge_representation_real_code_cofactor_productfirst) + (ge_representation_imaginary_code_cofactor_productfirst)) + ((ge_representation_imaginary_code_cofactor_productfirst) + (ge_representation_imaginary_code_cofactor_productfirst))) /\ ((exists ge_balance_positive_cofactor_productfirstreal ge_balance_negative_cofactor_productfirstreal. (((((ge_representation_real_code_cofactor_productfirst) = 2 * (ge_balance_positive_cofactor_productfirstreal) /\ (ge_balance_negative_cofactor_productfirstreal) = 0) \/ exists ge_signed_half_cofactor_productfirstrealdecode. (((ge_representation_real_code_cofactor_productfirst) = 2 * ge_signed_half_cofactor_productfirstrealdecode + 1 /\ (ge_balance_positive_cofactor_productfirstreal) = 0) /\ (ge_balance_negative_cofactor_productfirstreal) = S ge_signed_half_cofactor_productfirstrealdecode))) /\ ((ge_first_rp_cofactor_product) + ge_balance_negative_cofactor_productfirstreal = (ge_first_rn_cofactor_product) + ge_balance_positive_cofactor_productfirstreal))) /\ (exists ge_balance_positive_cofactor_productfirstimaginary ge_balance_negative_cofactor_productfirstimaginary. (((((ge_representation_imaginary_code_cofactor_productfirst) = 2 * (ge_balance_positive_cofactor_productfirstimaginary) /\ (ge_balance_negative_cofactor_productfirstimaginary) = 0) \/ exists ge_signed_half_cofactor_productfirstimaginarydecode. (((ge_representation_imaginary_code_cofactor_productfirst) = 2 * ge_signed_half_cofactor_productfirstimaginarydecode + 1 /\ (ge_balance_positive_cofactor_productfirstimaginary) = 0) /\ (ge_balance_negative_cofactor_productfirstimaginary) = S ge_signed_half_cofactor_productfirstimaginarydecode))) /\ ((ge_first_ip_cofactor_product) + ge_balance_negative_cofactor_productfirstimaginary = (ge_first_in_cofactor_product) + ge_balance_positive_cofactor_productfirstimaginary)))))) /\ ((exists ge_representation_real_code_cofactor_productsecond ge_representation_imaginary_code_cofactor_productsecond. (((b) = ((ge_representation_real_code_cofactor_productsecond) + (ge_representation_imaginary_code_cofactor_productsecond)) * S ((ge_representation_real_code_cofactor_productsecond) + (ge_representation_imaginary_code_cofactor_productsecond)) + ((ge_representation_imaginary_code_cofactor_productsecond) + (ge_representation_imaginary_code_cofactor_productsecond))) /\ ((exists ge_balance_positive_cofactor_productsecondreal ge_balance_negative_cofactor_productsecondreal. (((((ge_representation_real_code_cofactor_productsecond) = 2 * (ge_balance_positive_cofactor_productsecondreal) /\ (ge_balance_negative_cofactor_productsecondreal) = 0) \/ exists ge_signed_half_cofactor_productsecondrealdecode. (((ge_representation_real_code_cofactor_productsecond) = 2 * ge_signed_half_cofactor_productsecondrealdecode + 1 /\ (ge_balance_positive_cofactor_productsecondreal) = 0) /\ (ge_balance_negative_cofactor_productsecondreal) = S ge_signed_half_cofactor_productsecondrealdecode))) /\ ((ge_second_rp_cofactor_product) + ge_balance_negative_cofactor_productsecondreal = (ge_second_rn_cofactor_product) + ge_balance_positive_cofactor_productsecondreal))) /\ (exists ge_balance_positive_cofactor_productsecondimaginary ge_balance_negative_cofactor_productsecondimaginary. (((((ge_representation_imaginary_code_cofactor_productsecond) = 2 * (ge_balance_positive_cofactor_productsecondimaginary) /\ (ge_balance_negative_cofactor_productsecondimaginary) = 0) \/ exists ge_signed_half_cofactor_productsecondimaginarydecode. (((ge_representation_imaginary_code_cofactor_productsecond) = 2 * ge_signed_half_cofactor_productsecondimaginarydecode + 1 /\ (ge_balance_positive_cofactor_productsecondimaginary) = 0) /\ (ge_balance_negative_cofactor_productsecondimaginary) = S ge_signed_half_cofactor_productsecondimaginarydecode))) /\ ((ge_second_ip_cofactor_product) + ge_balance_negative_cofactor_productsecondimaginary = (ge_second_in_cofactor_product) + ge_balance_positive_cofactor_productsecondimaginary)))))) /\ (exists ge_representation_real_code_cofactor_productoutput ge_representation_imaginary_code_cofactor_productoutput. (((p) = ((ge_representation_real_code_cofactor_productoutput) + (ge_representation_imaginary_code_cofactor_productoutput)) * S ((ge_representation_real_code_cofactor_productoutput) + (ge_representation_imaginary_code_cofactor_productoutput)) + ((ge_representation_imaginary_code_cofactor_productoutput) + (ge_representation_imaginary_code_cofactor_productoutput))) /\ ((exists ge_balance_positive_cofactor_productoutputreal ge_balance_negative_cofactor_productoutputreal. (((((ge_representation_real_code_cofactor_productoutput) = 2 * (ge_balance_positive_cofactor_productoutputreal) /\ (ge_balance_negative_cofactor_productoutputreal) = 0) \/ exists ge_signed_half_cofactor_productoutputrealdecode. (((ge_representation_real_code_cofactor_productoutput) = 2 * ge_signed_half_cofactor_productoutputrealdecode + 1 /\ (ge_balance_positive_cofactor_productoutputreal) = 0) /\ (ge_balance_negative_cofactor_productoutputreal) = S ge_signed_half_cofactor_productoutputrealdecode))) /\ ((((((((ge_first_rp_cofactor_product) * (ge_second_rp_cofactor_product))) + (((ge_first_rn_cofactor_product) * (ge_second_rn_cofactor_product))))) + (((((ge_first_ip_cofactor_product) * (ge_second_in_cofactor_product))) + (((ge_first_in_cofactor_product) * (ge_second_ip_cofactor_product))))))) + ge_balance_negative_cofactor_productoutputreal = (((((((ge_first_rp_cofactor_product) * (ge_second_rn_cofactor_product))) + (((ge_first_rn_cofactor_product) * (ge_second_rp_cofactor_product))))) + (((((ge_first_ip_cofactor_product) * (ge_second_ip_cofactor_product))) + (((ge_first_in_cofactor_product) * (ge_second_in_cofactor_product))))))) + ge_balance_positive_cofactor_productoutputreal))) /\ (exists ge_balance_positive_cofactor_productoutputimaginary ge_balance_negative_cofactor_productoutputimaginary. (((((ge_representation_imaginary_code_cofactor_productoutput) = 2 * (ge_balance_positive_cofactor_productoutputimaginary) /\ (ge_balance_negative_cofactor_productoutputimaginary) = 0) \/ exists ge_signed_half_cofactor_productoutputimaginarydecode. (((ge_representation_imaginary_code_cofactor_productoutput) = 2 * ge_signed_half_cofactor_productoutputimaginarydecode + 1 /\ (ge_balance_positive_cofactor_productoutputimaginary) = 0) /\ (ge_balance_negative_cofactor_productoutputimaginary) = S ge_signed_half_cofactor_productoutputimaginarydecode))) /\ ((((((((ge_first_rp_cofactor_product) * (ge_second_ip_cofactor_product))) + (((ge_first_rn_cofactor_product) * (ge_second_in_cofactor_product))))) + (((((ge_first_ip_cofactor_product) * (ge_second_rp_cofactor_product))) + (((ge_first_in_cofactor_product) * (ge_second_rn_cofactor_product))))))) + ge_balance_negative_cofactor_productoutputimaginary = (((((((ge_first_rp_cofactor_product) * (ge_second_in_cofactor_product))) + (((ge_first_rn_cofactor_product) * (ge_second_ip_cofactor_product))))) + (((((ge_first_ip_cofactor_product) * (ge_second_rn_cofactor_product))) + (((ge_first_in_cofactor_product) * (ge_second_rp_cofactor_product))))))) + ge_balance_positive_cofactor_productoutputimaginary))))))))) -> (exists gr_quotient_cofactor_reverse_divisor. (exists ge_first_rp_cofactor_reverse_divisorproduct ge_first_rn_cofactor_reverse_divisorproduct ge_first_ip_cofactor_reverse_divisorproduct ge_first_in_cofactor_reverse_divisorproduct ge_second_rp_cofactor_reverse_divisorproduct ge_second_rn_cofactor_reverse_divisorproduct ge_second_ip_cofactor_reverse_divisorproduct ge_second_in_cofactor_reverse_divisorproduct. ((exists ge_representation_real_code_cofactor_reverse_divisorproductfirst ge_representation_imaginary_code_cofactor_reverse_divisorproductfirst. (((p) = ((ge_representation_real_code_cofactor_reverse_divisorproductfirst) + (ge_representation_imaginary_code_cofactor_reverse_divisorproductfirst)) * S ((ge_representation_real_code_cofactor_reverse_divisorproductfirst) + (ge_representation_imaginary_code_cofactor_reverse_divisorproductfirst)) + ((ge_representation_imaginary_code_cofactor_reverse_divisorproductfirst) + (ge_representation_imaginary_code_cofactor_reverse_divisorproductfirst))) /\ ((exists ge_balance_positive_cofactor_reverse_divisorproductfirstreal ge_balance_negative_cofactor_reverse_divisorproductfirstreal. (((((ge_representation_real_code_cofactor_reverse_divisorproductfirst) = 2 * (ge_balance_positive_cofactor_reverse_divisorproductfirstreal) /\ (ge_balance_negative_cofactor_reverse_divisorproductfirstreal) = 0) \/ exists ge_signed_half_cofactor_reverse_divisorproductfirstrealdecode. (((ge_representation_real_code_cofactor_reverse_divisorproductfirst) = 2 * ge_signed_half_cofactor_reverse_divisorproductfirstrealdecode + 1 /\ (ge_balance_positive_cofactor_reverse_divisorproductfirstreal) = 0) /\ (ge_balance_negative_cofactor_reverse_divisorproductfirstreal) = S ge_signed_half_cofactor_reverse_divisorproductfirstrealdecode))) /\ ((ge_first_rp_cofactor_reverse_divisorproduct) + ge_balance_negative_cofactor_reverse_divisorproductfirstreal = (ge_first_rn_cofactor_reverse_divisorproduct) + ge_balance_positive_cofactor_reverse_divisorproductfirstreal))) /\ (exists ge_balance_positive_cofactor_reverse_divisorproductfirstimaginary ge_balance_negative_cofactor_reverse_divisorproductfirstimaginary. (((((ge_representation_imaginary_code_cofactor_reverse_divisorproductfirst) = 2 * (ge_balance_positive_cofactor_reverse_divisorproductfirstimaginary) /\ (ge_balance_negative_cofactor_reverse_divisorproductfirstimaginary) = 0) \/ exists ge_signed_half_cofactor_reverse_divisorproductfirstimaginarydecode. (((ge_representation_imaginary_code_cofactor_reverse_divisorproductfirst) = 2 * ge_signed_half_cofactor_reverse_divisorproductfirstimaginarydecode + 1 /\ (ge_balance_positive_cofactor_reverse_divisorproductfirstimaginary) = 0) /\ (ge_balance_negative_cofactor_reverse_divisorproductfirstimaginary) = S ge_signed_half_cofactor_reverse_divisorproductfirstimaginarydecode))) /\ ((ge_first_ip_cofactor_reverse_divisorproduct) + ge_balance_negative_cofactor_reverse_divisorproductfirstimaginary = (ge_first_in_cofactor_reverse_divisorproduct) + ge_balance_positive_cofactor_reverse_divisorproductfirstimaginary)))))) /\ ((exists ge_representation_real_code_cofactor_reverse_divisorproductsecond ge_representation_imaginary_code_cofactor_reverse_divisorproductsecond. (((gr_quotient_cofactor_reverse_divisor) = ((ge_representation_real_code_cofactor_reverse_divisorproductsecond) + (ge_representation_imaginary_code_cofactor_reverse_divisorproductsecond)) * S ((ge_representation_real_code_cofactor_reverse_divisorproductsecond) + (ge_representation_imaginary_code_cofactor_reverse_divisorproductsecond)) + ((ge_representation_imaginary_code_cofactor_reverse_divisorproductsecond) + (ge_representation_imaginary_code_cofactor_reverse_divisorproductsecond))) /\ ((exists ge_balance_positive_cofactor_reverse_divisorproductsecondreal ge_balance_negative_cofactor_reverse_divisorproductsecondreal. (((((ge_representation_real_code_cofactor_reverse_divisorproductsecond) = 2 * (ge_balance_positive_cofactor_reverse_divisorproductsecondreal) /\ (ge_balance_negative_cofactor_reverse_divisorproductsecondreal) = 0) \/ exists ge_signed_half_cofactor_reverse_divisorproductsecondrealdecode. (((ge_representation_real_code_cofactor_reverse_divisorproductsecond) = 2 * ge_signed_half_cofactor_reverse_divisorproductsecondrealdecode + 1 /\ (ge_balance_positive_cofactor_reverse_divisorproductsecondreal) = 0) /\ (ge_balance_negative_cofactor_reverse_divisorproductsecondreal) = S ge_signed_half_cofactor_reverse_divisorproductsecondrealdecode))) /\ ((ge_second_rp_cofactor_reverse_divisorproduct) + ge_balance_negative_cofactor_reverse_divisorproductsecondreal = (ge_second_rn_cofactor_reverse_divisorproduct) + ge_balance_positive_cofactor_reverse_divisorproductsecondreal))) /\ (exists ge_balance_positive_cofactor_reverse_divisorproductsecondimaginary ge_balance_negative_cofactor_reverse_divisorproductsecondimaginary. (((((ge_representation_imaginary_code_cofactor_reverse_divisorproductsecond) = 2 * (ge_balance_positive_cofactor_reverse_divisorproductsecondimaginary) /\ (ge_balance_negative_cofactor_reverse_divisorproductsecondimaginary) = 0) \/ exists ge_signed_half_cofactor_reverse_divisorproductsecondimaginarydecode. (((ge_representation_imaginary_code_cofactor_reverse_divisorproductsecond) = 2 * ge_signed_half_cofactor_reverse_divisorproductsecondimaginarydecode + 1 /\ (ge_balance_positive_cofactor_reverse_divisorproductsecondimaginary) = 0) /\ (ge_balance_negative_cofactor_reverse_divisorproductsecondimaginary) = S ge_signed_half_cofactor_reverse_divisorproductsecondimaginarydecode))) /\ ((ge_second_ip_cofactor_reverse_divisorproduct) + ge_balance_negative_cofactor_reverse_divisorproductsecondimaginary = (ge_second_in_cofactor_reverse_divisorproduct) + ge_balance_positive_cofactor_reverse_divisorproductsecondimaginary)))))) /\ (exists ge_representation_real_code_cofactor_reverse_divisorproductoutput ge_representation_imaginary_code_cofactor_reverse_divisorproductoutput. (((a) = ((ge_representation_real_code_cofactor_reverse_divisorproductoutput) + (ge_representation_imaginary_code_cofactor_reverse_divisorproductoutput)) * S ((ge_representation_real_code_cofactor_reverse_divisorproductoutput) + (ge_representation_imaginary_code_cofactor_reverse_divisorproductoutput)) + ((ge_representation_imaginary_code_cofactor_reverse_divisorproductoutput) + (ge_representation_imaginary_code_cofactor_reverse_divisorproductoutput))) /\ ((exists ge_balance_positive_cofactor_reverse_divisorproductoutputreal ge_balance_negative_cofactor_reverse_divisorproductoutputreal. (((((ge_representation_real_code_cofactor_reverse_divisorproductoutput) = 2 * (ge_balance_positive_cofactor_reverse_divisorproductoutputreal) /\ (ge_balance_negative_cofactor_reverse_divisorproductoutputreal) = 0) \/ exists ge_signed_half_cofactor_reverse_divisorproductoutputrealdecode. (((ge_representation_real_code_cofactor_reverse_divisorproductoutput) = 2 * ge_signed_half_cofactor_reverse_divisorproductoutputrealdecode + 1 /\ (ge_balance_positive_cofactor_reverse_divisorproductoutputreal) = 0) /\ (ge_balance_negative_cofactor_reverse_divisorproductoutputreal) = S ge_signed_half_cofactor_reverse_divisorproductoutputrealdecode))) /\ ((((((((ge_first_rp_cofactor_reverse_divisorproduct) * (ge_second_rp_cofactor_reverse_divisorproduct))) + (((ge_first_rn_cofactor_reverse_divisorproduct) * (ge_second_rn_cofactor_reverse_divisorproduct))))) + (((((ge_first_ip_cofactor_reverse_divisorproduct) * (ge_second_in_cofactor_reverse_divisorproduct))) + (((ge_first_in_cofactor_reverse_divisorproduct) * (ge_second_ip_cofactor_reverse_divisorproduct))))))) + ge_balance_negative_cofactor_reverse_divisorproductoutputreal = (((((((ge_first_rp_cofactor_reverse_divisorproduct) * (ge_second_rn_cofactor_reverse_divisorproduct))) + (((ge_first_rn_cofactor_reverse_divisorproduct) * (ge_second_rp_cofactor_reverse_divisorproduct))))) + (((((ge_first_ip_cofactor_reverse_divisorproduct) * (ge_second_ip_cofactor_reverse_divisorproduct))) + (((ge_first_in_cofactor_reverse_divisorproduct) * (ge_second_in_cofactor_reverse_divisorproduct))))))) + ge_balance_positive_cofactor_reverse_divisorproductoutputreal))) /\ (exists ge_balance_positive_cofactor_reverse_divisorproductoutputimaginary ge_balance_negative_cofactor_reverse_divisorproductoutputimaginary. (((((ge_representation_imaginary_code_cofactor_reverse_divisorproductoutput) = 2 * (ge_balance_positive_cofactor_reverse_divisorproductoutputimaginary) /\ (ge_balance_negative_cofactor_reverse_divisorproductoutputimaginary) = 0) \/ exists ge_signed_half_cofactor_reverse_divisorproductoutputimaginarydecode. (((ge_representation_imaginary_code_cofactor_reverse_divisorproductoutput) = 2 * ge_signed_half_cofactor_reverse_divisorproductoutputimaginarydecode + 1 /\ (ge_balance_positive_cofactor_reverse_divisorproductoutputimaginary) = 0) /\ (ge_balance_negative_cofactor_reverse_divisorproductoutputimaginary) = S ge_signed_half_cofactor_reverse_divisorproductoutputimaginarydecode))) /\ ((((((((ge_first_rp_cofactor_reverse_divisorproduct) * (ge_second_ip_cofactor_reverse_divisorproduct))) + (((ge_first_rn_cofactor_reverse_divisorproduct) * (ge_second_in_cofactor_reverse_divisorproduct))))) + (((((ge_first_ip_cofactor_reverse_divisorproduct) * (ge_second_rp_cofactor_reverse_divisorproduct))) + (((ge_first_in_cofactor_reverse_divisorproduct) * (ge_second_rn_cofactor_reverse_divisorproduct))))))) + ge_balance_negative_cofactor_reverse_divisorproductoutputimaginary = (((((((ge_first_rp_cofactor_reverse_divisorproduct) * (ge_second_in_cofactor_reverse_divisorproduct))) + (((ge_first_rn_cofactor_reverse_divisorproduct) * (ge_second_ip_cofactor_reverse_divisorproduct))))) + (((((ge_first_ip_cofactor_reverse_divisorproduct) * (ge_second_rn_cofactor_reverse_divisorproduct))) + (((ge_first_in_cofactor_reverse_divisorproduct) * (ge_second_rp_cofactor_reverse_divisorproduct))))))) + ge_balance_positive_cofactor_reverse_divisorproductoutputimaginary)))))))))) -> (exists gr_inverse_cofactor_unit. (exists ge_first_rp_cofactor_unitidentity ge_first_rn_cofactor_unitidentity ge_first_ip_cofactor_unitidentity ge_first_in_cofactor_unitidentity ge_second_rp_cofactor_unitidentity ge_second_rn_cofactor_unitidentity ge_second_ip_cofactor_unitidentity ge_second_in_cofactor_unitidentity. ((exists ge_representation_real_code_cofactor_unitidentityfirst ge_representation_imaginary_code_cofactor_unitidentityfirst. (((b) = ((ge_representation_real_code_cofactor_unitidentityfirst) + (ge_representation_imaginary_code_cofactor_unitidentityfirst)) * S ((ge_representation_real_code_cofactor_unitidentityfirst) + (ge_representation_imaginary_code_cofactor_unitidentityfirst)) + ((ge_representation_imaginary_code_cofactor_unitidentityfirst) + (ge_representation_imaginary_code_cofactor_unitidentityfirst))) /\ ((exists ge_balance_positive_cofactor_unitidentityfirstreal ge_balance_negative_cofactor_unitidentityfirstreal. (((((ge_representation_real_code_cofactor_unitidentityfirst) = 2 * (ge_balance_positive_cofactor_unitidentityfirstreal) /\ (ge_balance_negative_cofactor_unitidentityfirstreal) = 0) \/ exists ge_signed_half_cofactor_unitidentityfirstrealdecode. (((ge_representation_real_code_cofactor_unitidentityfirst) = 2 * ge_signed_half_cofactor_unitidentityfirstrealdecode + 1 /\ (ge_balance_positive_cofactor_unitidentityfirstreal) = 0) /\ (ge_balance_negative_cofactor_unitidentityfirstreal) = S ge_signed_half_cofactor_unitidentityfirstrealdecode))) /\ ((ge_first_rp_cofactor_unitidentity) + ge_balance_negative_cofactor_unitidentityfirstreal = (ge_first_rn_cofactor_unitidentity) + ge_balance_positive_cofactor_unitidentityfirstreal))) /\ (exists ge_balance_positive_cofactor_unitidentityfirstimaginary ge_balance_negative_cofactor_unitidentityfirstimaginary. (((((ge_representation_imaginary_code_cofactor_unitidentityfirst) = 2 * (ge_balance_positive_cofactor_unitidentityfirstimaginary) /\ (ge_balance_negative_cofactor_unitidentityfirstimaginary) = 0) \/ exists ge_signed_half_cofactor_unitidentityfirstimaginarydecode. (((ge_representation_imaginary_code_cofactor_unitidentityfirst) = 2 * ge_signed_half_cofactor_unitidentityfirstimaginarydecode + 1 /\ (ge_balance_positive_cofactor_unitidentityfirstimaginary) = 0) /\ (ge_balance_negative_cofactor_unitidentityfirstimaginary) = S ge_signed_half_cofactor_unitidentityfirstimaginarydecode))) /\ ((ge_first_ip_cofactor_unitidentity) + ge_balance_negative_cofactor_unitidentityfirstimaginary = (ge_first_in_cofactor_unitidentity) + ge_balance_positive_cofactor_unitidentityfirstimaginary)))))) /\ ((exists ge_representation_real_code_cofactor_unitidentitysecond ge_representation_imaginary_code_cofactor_unitidentitysecond. (((gr_inverse_cofactor_unit) = ((ge_representation_real_code_cofactor_unitidentitysecond) + (ge_representation_imaginary_code_cofactor_unitidentitysecond)) * S ((ge_representation_real_code_cofactor_unitidentitysecond) + (ge_representation_imaginary_code_cofactor_unitidentitysecond)) + ((ge_representation_imaginary_code_cofactor_unitidentitysecond) + (ge_representation_imaginary_code_cofactor_unitidentitysecond))) /\ ((exists ge_balance_positive_cofactor_unitidentitysecondreal ge_balance_negative_cofactor_unitidentitysecondreal. (((((ge_representation_real_code_cofactor_unitidentitysecond) = 2 * (ge_balance_positive_cofactor_unitidentitysecondreal) /\ (ge_balance_negative_cofactor_unitidentitysecondreal) = 0) \/ exists ge_signed_half_cofactor_unitidentitysecondrealdecode. (((ge_representation_real_code_cofactor_unitidentitysecond) = 2 * ge_signed_half_cofactor_unitidentitysecondrealdecode + 1 /\ (ge_balance_positive_cofactor_unitidentitysecondreal) = 0) /\ (ge_balance_negative_cofactor_unitidentitysecondreal) = S ge_signed_half_cofactor_unitidentitysecondrealdecode))) /\ ((ge_second_rp_cofactor_unitidentity) + ge_balance_negative_cofactor_unitidentitysecondreal = (ge_second_rn_cofactor_unitidentity) + ge_balance_positive_cofactor_unitidentitysecondreal))) /\ (exists ge_balance_positive_cofactor_unitidentitysecondimaginary ge_balance_negative_cofactor_unitidentitysecondimaginary. (((((ge_representation_imaginary_code_cofactor_unitidentitysecond) = 2 * (ge_balance_positive_cofactor_unitidentitysecondimaginary) /\ (ge_balance_negative_cofactor_unitidentitysecondimaginary) = 0) \/ exists ge_signed_half_cofactor_unitidentitysecondimaginarydecode. (((ge_representation_imaginary_code_cofactor_unitidentitysecond) = 2 * ge_signed_half_cofactor_unitidentitysecondimaginarydecode + 1 /\ (ge_balance_positive_cofactor_unitidentitysecondimaginary) = 0) /\ (ge_balance_negative_cofactor_unitidentitysecondimaginary) = S ge_signed_half_cofactor_unitidentitysecondimaginarydecode))) /\ ((ge_second_ip_cofactor_unitidentity) + ge_balance_negative_cofactor_unitidentitysecondimaginary = (ge_second_in_cofactor_unitidentity) + ge_balance_positive_cofactor_unitidentitysecondimaginary)))))) /\ (exists ge_representation_real_code_cofactor_unitidentityoutput ge_representation_imaginary_code_cofactor_unitidentityoutput. (((6) = ((ge_representation_real_code_cofactor_unitidentityoutput) + (ge_representation_imaginary_code_cofactor_unitidentityoutput)) * S ((ge_representation_real_code_cofactor_unitidentityoutput) + (ge_representation_imaginary_code_cofactor_unitidentityoutput)) + ((ge_representation_imaginary_code_cofactor_unitidentityoutput) + (ge_representation_imaginary_code_cofactor_unitidentityoutput))) /\ ((exists ge_balance_positive_cofactor_unitidentityoutputreal ge_balance_negative_cofactor_unitidentityoutputreal. (((((ge_representation_real_code_cofactor_unitidentityoutput) = 2 * (ge_balance_positive_cofactor_unitidentityoutputreal) /\ (ge_balance_negative_cofactor_unitidentityoutputreal) = 0) \/ exists ge_signed_half_cofactor_unitidentityoutputrealdecode. (((ge_representation_real_code_cofactor_unitidentityoutput) = 2 * ge_signed_half_cofactor_unitidentityoutputrealdecode + 1 /\ (ge_balance_positive_cofactor_unitidentityoutputreal) = 0) /\ (ge_balance_negative_cofactor_unitidentityoutputreal) = S ge_signed_half_cofactor_unitidentityoutputrealdecode))) /\ ((((((((ge_first_rp_cofactor_unitidentity) * (ge_second_rp_cofactor_unitidentity))) + (((ge_first_rn_cofactor_unitidentity) * (ge_second_rn_cofactor_unitidentity))))) + (((((ge_first_ip_cofactor_unitidentity) * (ge_second_in_cofactor_unitidentity))) + (((ge_first_in_cofactor_unitidentity) * (ge_second_ip_cofactor_unitidentity))))))) + ge_balance_negative_cofactor_unitidentityoutputreal = (((((((ge_first_rp_cofactor_unitidentity) * (ge_second_rn_cofactor_unitidentity))) + (((ge_first_rn_cofactor_unitidentity) * (ge_second_rp_cofactor_unitidentity))))) + (((((ge_first_ip_cofactor_unitidentity) * (ge_second_ip_cofactor_unitidentity))) + (((ge_first_in_cofactor_unitidentity) * (ge_second_in_cofactor_unitidentity))))))) + ge_balance_positive_cofactor_unitidentityoutputreal))) /\ (exists ge_balance_positive_cofactor_unitidentityoutputimaginary ge_balance_negative_cofactor_unitidentityoutputimaginary. (((((ge_representation_imaginary_code_cofactor_unitidentityoutput) = 2 * (ge_balance_positive_cofactor_unitidentityoutputimaginary) /\ (ge_balance_negative_cofactor_unitidentityoutputimaginary) = 0) \/ exists ge_signed_half_cofactor_unitidentityoutputimaginarydecode. (((ge_representation_imaginary_code_cofactor_unitidentityoutput) = 2 * ge_signed_half_cofactor_unitidentityoutputimaginarydecode + 1 /\ (ge_balance_positive_cofactor_unitidentityoutputimaginary) = 0) /\ (ge_balance_negative_cofactor_unitidentityoutputimaginary) = S ge_signed_half_cofactor_unitidentityoutputimaginarydecode))) /\ ((((((((ge_first_rp_cofactor_unitidentity) * (ge_second_ip_cofactor_unitidentity))) + (((ge_first_rn_cofactor_unitidentity) * (ge_second_in_cofactor_unitidentity))))) + (((((ge_first_ip_cofactor_unitidentity) * (ge_second_rp_cofactor_unitidentity))) + (((ge_first_in_cofactor_unitidentity) * (ge_second_rn_cofactor_unitidentity))))))) + ge_balance_negative_cofactor_unitidentityoutputimaginary = (((((((ge_first_rp_cofactor_unitidentity) * (ge_second_in_cofactor_unitidentity))) + (((ge_first_rn_cofactor_unitidentity) * (ge_second_ip_cofactor_unitidentity))))) + (((((ge_first_ip_cofactor_unitidentity) * (ge_second_rn_cofactor_unitidentity))) + (((ge_first_in_cofactor_unitidentity) * (ge_second_rp_cofactor_unitidentity))))))) + ge_balance_positive_cofactor_unitidentityoutputimaginary))))))))))

Complete tactic proof in conservative notation

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

60 script commands · 12 reading checkpoints · 3 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 (7)
01Fix variables and assumptionsL1–6

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

  1. L1
    intro p
  2. L2
    intro a
  3. L3
    intro b
  4. L4
    intro hn
  5. L5
    intro hprod
  6. L6
    intro hdiv
02Separate the logical casesL7–7

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

  1. L7
    cases hdiv
03Establish hqL8–17

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

  1. L8
    have hq : ∃ q. GMul(x,b,q)Definitions: GMul(x,b,q)Original native command in the exact edition
  2. L9
    specialize gaussian_multiply_exists (x)
  3. L10
    specialize gaussian_multiply_exists (b)
  4. L11
    apply gaussian_multiply_exists
  5. L12
    specialize gaussian_multiply_input_right_valid (p)
  6. L13
    specialize gaussian_multiply_input_right_valid (x)
  7. L14
    specialize gaussian_multiply_input_right_valid (a)
  8. L15
    apply gaussian_multiply_input_right_valid
  9. L16
    exact hdiv_witness
  10. L17
    specialize gaussian_multiply_input_right_valid (a)
04Use earlier factsL18–21

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

  1. L18
    specialize gaussian_multiply_input_right_valid (b)
  2. L19
    specialize gaussian_multiply_input_right_valid (p)
  3. L20
    apply gaussian_multiply_input_right_valid
  4. L21
    exact hprod
05Separate the logical casesL22–22

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

  1. L22
    cases hq
06Establish hselfL23–32

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

  1. L23
    have hself : GMul(p,x1,p)Definitions: GMul(p,x1,p)Original native command in the exact edition
  2. L24
    specialize gaussian_multiply_associative (p)
  3. L25
    specialize gaussian_multiply_associative (x)
  4. L26
    specialize gaussian_multiply_associative (b)
  5. L27
    specialize gaussian_multiply_associative (a)
  6. L28
    specialize gaussian_multiply_associative (x1)
  7. L29
    specialize gaussian_multiply_associative (p)
  8. L30
    apply gaussian_multiply_associative
  9. L31
    exact hdiv_witness
  10. L32
    exact hprod
07Use earlier factsL33–33

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

  1. L33
    exact hq_witness
08Establish heqL34–43

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian multiply cancel left.

  1. L34
    have heq : x1=6
  2. L35
    specialize gaussian_multiply_cancel_left (p)
  3. L36
    specialize gaussian_multiply_cancel_left (x1)
  4. L37
    specialize gaussian_multiply_cancel_left (6)
  5. L38
    specialize gaussian_multiply_cancel_left (p)
  6. L39
    apply gaussian_multiply_cancel_left
  7. L40
    exact hn
  8. L41
    exact hself
  9. L42
    specialize gaussian_multiply_one_right (p)
  10. L43
    apply gaussian_multiply_one_right
09Use earlier factsL44–48

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

  1. L44
    specialize gaussian_multiply_input_left_valid (p)
  2. L45
    specialize gaussian_multiply_input_left_valid (x)
  3. L46
    specialize gaussian_multiply_input_left_valid (a)
  4. L47
    apply gaussian_multiply_input_left_valid
  5. L48
    exact hdiv_witness
10Construct an explicit witnessL49–49

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

  1. L49
    exists (x)
11Use earlier factsL50–59

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

  1. L50
    specialize gaussian_multiply_commutative (x)
  2. L51
    specialize gaussian_multiply_commutative (b)
  3. L52
    specialize gaussian_multiply_commutative (6)
  4. L53
    apply gaussian_multiply_commutative
  5. L54
    specialize gaussian_multiply_output_transport (x)
  6. L55
    specialize gaussian_multiply_output_transport (b)
  7. L56
    specialize gaussian_multiply_output_transport (x1)
  8. L57
    specialize gaussian_multiply_output_transport (6)
  9. L58
    apply gaussian_multiply_output_transport
  10. L59
    exact heq
12Use earlier factsL60–60

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

  1. L60
    exact hq_witness

Library-wide reading audit

Original defined command ledger · 60 lines
  1. 0001intro p
  2. 0002intro a
  3. 0003intro b
  4. 0004intro hn
  5. 0005intro hprod
  6. 0006intro hdiv
  7. 0007cases hdiv
  8. 0008have hq : ∃ q. GMul(x,b,q)
  9. 0009specialize gaussian_multiply_exists (x)
  10. 0010specialize gaussian_multiply_exists (b)
  11. 0011apply gaussian_multiply_exists
  12. 0012specialize gaussian_multiply_input_right_valid (p)
  13. 0013specialize gaussian_multiply_input_right_valid (x)
  14. 0014specialize gaussian_multiply_input_right_valid (a)
  15. 0015apply gaussian_multiply_input_right_valid
  16. 0016exact hdiv_witness
  17. 0017specialize gaussian_multiply_input_right_valid (a)
  18. 0018specialize gaussian_multiply_input_right_valid (b)
  19. 0019specialize gaussian_multiply_input_right_valid (p)
  20. 0020apply gaussian_multiply_input_right_valid
  21. 0021exact hprod
  22. 0022cases hq
  23. 0023have hself : GMul(p,x1,p)
  24. 0024specialize gaussian_multiply_associative (p)
  25. 0025specialize gaussian_multiply_associative (x)
  26. 0026specialize gaussian_multiply_associative (b)
  27. 0027specialize gaussian_multiply_associative (a)
  28. 0028specialize gaussian_multiply_associative (x1)
  29. 0029specialize gaussian_multiply_associative (p)
  30. 0030apply gaussian_multiply_associative
  31. 0031exact hdiv_witness
  32. 0032exact hprod
  33. 0033exact hq_witness
  34. 0034have heq : x1=6
  35. 0035specialize gaussian_multiply_cancel_left (p)
  36. 0036specialize gaussian_multiply_cancel_left (x1)
  37. 0037specialize gaussian_multiply_cancel_left (6)
  38. 0038specialize gaussian_multiply_cancel_left (p)
  39. 0039apply gaussian_multiply_cancel_left
  40. 0040exact hn
  41. 0041exact hself
  42. 0042specialize gaussian_multiply_one_right (p)
  43. 0043apply gaussian_multiply_one_right
  44. 0044specialize gaussian_multiply_input_left_valid (p)
  45. 0045specialize gaussian_multiply_input_left_valid (x)
  46. 0046specialize gaussian_multiply_input_left_valid (a)
  47. 0047apply gaussian_multiply_input_left_valid
  48. 0048exact hdiv_witness
  49. 0049exists (x)
  50. 0050specialize gaussian_multiply_commutative (x)
  51. 0051specialize gaussian_multiply_commutative (b)
  52. 0052specialize gaussian_multiply_commutative (6)
  53. 0053apply gaussian_multiply_commutative
  54. 0054specialize gaussian_multiply_output_transport (x)
  55. 0055specialize gaussian_multiply_output_transport (b)
  56. 0056specialize gaussian_multiply_output_transport (x1)
  57. 0057specialize gaussian_multiply_output_transport (6)
  58. 0058apply gaussian_multiply_output_transport
  59. 0059exact heq
  60. 0060exact hq_witness