GF0067

gaussian_bezout_unit_divisor_cancel

An actual unit-valued Gaussian Bézout combination proves Euclid cancellation for actual divisors, by constructing every multiplied term and the genuine unit inverse.

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. ∀ c. ∀ g. ∀ u. ∀ v. GMul(a,b,c)GDvd(p,c)GBezout(g,p,a,u,v)GUnit(g)GDvd(p,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 c g u v. (exists ge_first_rp_gauss_given_product ge_first_rn_gauss_given_product ge_first_ip_gauss_given_product ge_first_in_gauss_given_product ge_second_rp_gauss_given_product ge_second_rn_gauss_given_product ge_second_ip_gauss_given_product ge_second_in_gauss_given_product. ((exists ge_representation_real_code_gauss_given_productfirst ge_representation_imaginary_code_gauss_given_productfirst. (((a) = ((ge_representation_real_code_gauss_given_productfirst) + (ge_representation_imaginary_code_gauss_given_productfirst)) * S ((ge_representation_real_code_gauss_given_productfirst) + (ge_representation_imaginary_code_gauss_given_productfirst)) + ((ge_representation_imaginary_code_gauss_given_productfirst) + (ge_representation_imaginary_code_gauss_given_productfirst))) /\ ((exists ge_balance_positive_gauss_given_productfirstreal ge_balance_negative_gauss_given_productfirstreal. (((((ge_representation_real_code_gauss_given_productfirst) = 2 * (ge_balance_positive_gauss_given_productfirstreal) /\ (ge_balance_negative_gauss_given_productfirstreal) = 0) \/ exists ge_signed_half_gauss_given_productfirstrealdecode. (((ge_representation_real_code_gauss_given_productfirst) = 2 * ge_signed_half_gauss_given_productfirstrealdecode + 1 /\ (ge_balance_positive_gauss_given_productfirstreal) = 0) /\ (ge_balance_negative_gauss_given_productfirstreal) = S ge_signed_half_gauss_given_productfirstrealdecode))) /\ ((ge_first_rp_gauss_given_product) + ge_balance_negative_gauss_given_productfirstreal = (ge_first_rn_gauss_given_product) + ge_balance_positive_gauss_given_productfirstreal))) /\ (exists ge_balance_positive_gauss_given_productfirstimaginary ge_balance_negative_gauss_given_productfirstimaginary. (((((ge_representation_imaginary_code_gauss_given_productfirst) = 2 * (ge_balance_positive_gauss_given_productfirstimaginary) /\ (ge_balance_negative_gauss_given_productfirstimaginary) = 0) \/ exists ge_signed_half_gauss_given_productfirstimaginarydecode. (((ge_representation_imaginary_code_gauss_given_productfirst) = 2 * ge_signed_half_gauss_given_productfirstimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_productfirstimaginary) = 0) /\ (ge_balance_negative_gauss_given_productfirstimaginary) = S ge_signed_half_gauss_given_productfirstimaginarydecode))) /\ ((ge_first_ip_gauss_given_product) + ge_balance_negative_gauss_given_productfirstimaginary = (ge_first_in_gauss_given_product) + ge_balance_positive_gauss_given_productfirstimaginary)))))) /\ ((exists ge_representation_real_code_gauss_given_productsecond ge_representation_imaginary_code_gauss_given_productsecond. (((b) = ((ge_representation_real_code_gauss_given_productsecond) + (ge_representation_imaginary_code_gauss_given_productsecond)) * S ((ge_representation_real_code_gauss_given_productsecond) + (ge_representation_imaginary_code_gauss_given_productsecond)) + ((ge_representation_imaginary_code_gauss_given_productsecond) + (ge_representation_imaginary_code_gauss_given_productsecond))) /\ ((exists ge_balance_positive_gauss_given_productsecondreal ge_balance_negative_gauss_given_productsecondreal. (((((ge_representation_real_code_gauss_given_productsecond) = 2 * (ge_balance_positive_gauss_given_productsecondreal) /\ (ge_balance_negative_gauss_given_productsecondreal) = 0) \/ exists ge_signed_half_gauss_given_productsecondrealdecode. (((ge_representation_real_code_gauss_given_productsecond) = 2 * ge_signed_half_gauss_given_productsecondrealdecode + 1 /\ (ge_balance_positive_gauss_given_productsecondreal) = 0) /\ (ge_balance_negative_gauss_given_productsecondreal) = S ge_signed_half_gauss_given_productsecondrealdecode))) /\ ((ge_second_rp_gauss_given_product) + ge_balance_negative_gauss_given_productsecondreal = (ge_second_rn_gauss_given_product) + ge_balance_positive_gauss_given_productsecondreal))) /\ (exists ge_balance_positive_gauss_given_productsecondimaginary ge_balance_negative_gauss_given_productsecondimaginary. (((((ge_representation_imaginary_code_gauss_given_productsecond) = 2 * (ge_balance_positive_gauss_given_productsecondimaginary) /\ (ge_balance_negative_gauss_given_productsecondimaginary) = 0) \/ exists ge_signed_half_gauss_given_productsecondimaginarydecode. (((ge_representation_imaginary_code_gauss_given_productsecond) = 2 * ge_signed_half_gauss_given_productsecondimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_productsecondimaginary) = 0) /\ (ge_balance_negative_gauss_given_productsecondimaginary) = S ge_signed_half_gauss_given_productsecondimaginarydecode))) /\ ((ge_second_ip_gauss_given_product) + ge_balance_negative_gauss_given_productsecondimaginary = (ge_second_in_gauss_given_product) + ge_balance_positive_gauss_given_productsecondimaginary)))))) /\ (exists ge_representation_real_code_gauss_given_productoutput ge_representation_imaginary_code_gauss_given_productoutput. (((c) = ((ge_representation_real_code_gauss_given_productoutput) + (ge_representation_imaginary_code_gauss_given_productoutput)) * S ((ge_representation_real_code_gauss_given_productoutput) + (ge_representation_imaginary_code_gauss_given_productoutput)) + ((ge_representation_imaginary_code_gauss_given_productoutput) + (ge_representation_imaginary_code_gauss_given_productoutput))) /\ ((exists ge_balance_positive_gauss_given_productoutputreal ge_balance_negative_gauss_given_productoutputreal. (((((ge_representation_real_code_gauss_given_productoutput) = 2 * (ge_balance_positive_gauss_given_productoutputreal) /\ (ge_balance_negative_gauss_given_productoutputreal) = 0) \/ exists ge_signed_half_gauss_given_productoutputrealdecode. (((ge_representation_real_code_gauss_given_productoutput) = 2 * ge_signed_half_gauss_given_productoutputrealdecode + 1 /\ (ge_balance_positive_gauss_given_productoutputreal) = 0) /\ (ge_balance_negative_gauss_given_productoutputreal) = S ge_signed_half_gauss_given_productoutputrealdecode))) /\ ((((((((ge_first_rp_gauss_given_product) * (ge_second_rp_gauss_given_product))) + (((ge_first_rn_gauss_given_product) * (ge_second_rn_gauss_given_product))))) + (((((ge_first_ip_gauss_given_product) * (ge_second_in_gauss_given_product))) + (((ge_first_in_gauss_given_product) * (ge_second_ip_gauss_given_product))))))) + ge_balance_negative_gauss_given_productoutputreal = (((((((ge_first_rp_gauss_given_product) * (ge_second_rn_gauss_given_product))) + (((ge_first_rn_gauss_given_product) * (ge_second_rp_gauss_given_product))))) + (((((ge_first_ip_gauss_given_product) * (ge_second_ip_gauss_given_product))) + (((ge_first_in_gauss_given_product) * (ge_second_in_gauss_given_product))))))) + ge_balance_positive_gauss_given_productoutputreal))) /\ (exists ge_balance_positive_gauss_given_productoutputimaginary ge_balance_negative_gauss_given_productoutputimaginary. (((((ge_representation_imaginary_code_gauss_given_productoutput) = 2 * (ge_balance_positive_gauss_given_productoutputimaginary) /\ (ge_balance_negative_gauss_given_productoutputimaginary) = 0) \/ exists ge_signed_half_gauss_given_productoutputimaginarydecode. (((ge_representation_imaginary_code_gauss_given_productoutput) = 2 * ge_signed_half_gauss_given_productoutputimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_productoutputimaginary) = 0) /\ (ge_balance_negative_gauss_given_productoutputimaginary) = S ge_signed_half_gauss_given_productoutputimaginarydecode))) /\ ((((((((ge_first_rp_gauss_given_product) * (ge_second_ip_gauss_given_product))) + (((ge_first_rn_gauss_given_product) * (ge_second_in_gauss_given_product))))) + (((((ge_first_ip_gauss_given_product) * (ge_second_rp_gauss_given_product))) + (((ge_first_in_gauss_given_product) * (ge_second_rn_gauss_given_product))))))) + ge_balance_negative_gauss_given_productoutputimaginary = (((((((ge_first_rp_gauss_given_product) * (ge_second_in_gauss_given_product))) + (((ge_first_rn_gauss_given_product) * (ge_second_ip_gauss_given_product))))) + (((((ge_first_ip_gauss_given_product) * (ge_second_rn_gauss_given_product))) + (((ge_first_in_gauss_given_product) * (ge_second_rp_gauss_given_product))))))) + ge_balance_positive_gauss_given_productoutputimaginary))))))))) -> (exists gr_quotient_gauss_given_divisor. (exists ge_first_rp_gauss_given_divisorproduct ge_first_rn_gauss_given_divisorproduct ge_first_ip_gauss_given_divisorproduct ge_first_in_gauss_given_divisorproduct ge_second_rp_gauss_given_divisorproduct ge_second_rn_gauss_given_divisorproduct ge_second_ip_gauss_given_divisorproduct ge_second_in_gauss_given_divisorproduct. ((exists ge_representation_real_code_gauss_given_divisorproductfirst ge_representation_imaginary_code_gauss_given_divisorproductfirst. (((p) = ((ge_representation_real_code_gauss_given_divisorproductfirst) + (ge_representation_imaginary_code_gauss_given_divisorproductfirst)) * S ((ge_representation_real_code_gauss_given_divisorproductfirst) + (ge_representation_imaginary_code_gauss_given_divisorproductfirst)) + ((ge_representation_imaginary_code_gauss_given_divisorproductfirst) + (ge_representation_imaginary_code_gauss_given_divisorproductfirst))) /\ ((exists ge_balance_positive_gauss_given_divisorproductfirstreal ge_balance_negative_gauss_given_divisorproductfirstreal. (((((ge_representation_real_code_gauss_given_divisorproductfirst) = 2 * (ge_balance_positive_gauss_given_divisorproductfirstreal) /\ (ge_balance_negative_gauss_given_divisorproductfirstreal) = 0) \/ exists ge_signed_half_gauss_given_divisorproductfirstrealdecode. (((ge_representation_real_code_gauss_given_divisorproductfirst) = 2 * ge_signed_half_gauss_given_divisorproductfirstrealdecode + 1 /\ (ge_balance_positive_gauss_given_divisorproductfirstreal) = 0) /\ (ge_balance_negative_gauss_given_divisorproductfirstreal) = S ge_signed_half_gauss_given_divisorproductfirstrealdecode))) /\ ((ge_first_rp_gauss_given_divisorproduct) + ge_balance_negative_gauss_given_divisorproductfirstreal = (ge_first_rn_gauss_given_divisorproduct) + ge_balance_positive_gauss_given_divisorproductfirstreal))) /\ (exists ge_balance_positive_gauss_given_divisorproductfirstimaginary ge_balance_negative_gauss_given_divisorproductfirstimaginary. (((((ge_representation_imaginary_code_gauss_given_divisorproductfirst) = 2 * (ge_balance_positive_gauss_given_divisorproductfirstimaginary) /\ (ge_balance_negative_gauss_given_divisorproductfirstimaginary) = 0) \/ exists ge_signed_half_gauss_given_divisorproductfirstimaginarydecode. (((ge_representation_imaginary_code_gauss_given_divisorproductfirst) = 2 * ge_signed_half_gauss_given_divisorproductfirstimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_divisorproductfirstimaginary) = 0) /\ (ge_balance_negative_gauss_given_divisorproductfirstimaginary) = S ge_signed_half_gauss_given_divisorproductfirstimaginarydecode))) /\ ((ge_first_ip_gauss_given_divisorproduct) + ge_balance_negative_gauss_given_divisorproductfirstimaginary = (ge_first_in_gauss_given_divisorproduct) + ge_balance_positive_gauss_given_divisorproductfirstimaginary)))))) /\ ((exists ge_representation_real_code_gauss_given_divisorproductsecond ge_representation_imaginary_code_gauss_given_divisorproductsecond. (((gr_quotient_gauss_given_divisor) = ((ge_representation_real_code_gauss_given_divisorproductsecond) + (ge_representation_imaginary_code_gauss_given_divisorproductsecond)) * S ((ge_representation_real_code_gauss_given_divisorproductsecond) + (ge_representation_imaginary_code_gauss_given_divisorproductsecond)) + ((ge_representation_imaginary_code_gauss_given_divisorproductsecond) + (ge_representation_imaginary_code_gauss_given_divisorproductsecond))) /\ ((exists ge_balance_positive_gauss_given_divisorproductsecondreal ge_balance_negative_gauss_given_divisorproductsecondreal. (((((ge_representation_real_code_gauss_given_divisorproductsecond) = 2 * (ge_balance_positive_gauss_given_divisorproductsecondreal) /\ (ge_balance_negative_gauss_given_divisorproductsecondreal) = 0) \/ exists ge_signed_half_gauss_given_divisorproductsecondrealdecode. (((ge_representation_real_code_gauss_given_divisorproductsecond) = 2 * ge_signed_half_gauss_given_divisorproductsecondrealdecode + 1 /\ (ge_balance_positive_gauss_given_divisorproductsecondreal) = 0) /\ (ge_balance_negative_gauss_given_divisorproductsecondreal) = S ge_signed_half_gauss_given_divisorproductsecondrealdecode))) /\ ((ge_second_rp_gauss_given_divisorproduct) + ge_balance_negative_gauss_given_divisorproductsecondreal = (ge_second_rn_gauss_given_divisorproduct) + ge_balance_positive_gauss_given_divisorproductsecondreal))) /\ (exists ge_balance_positive_gauss_given_divisorproductsecondimaginary ge_balance_negative_gauss_given_divisorproductsecondimaginary. (((((ge_representation_imaginary_code_gauss_given_divisorproductsecond) = 2 * (ge_balance_positive_gauss_given_divisorproductsecondimaginary) /\ (ge_balance_negative_gauss_given_divisorproductsecondimaginary) = 0) \/ exists ge_signed_half_gauss_given_divisorproductsecondimaginarydecode. (((ge_representation_imaginary_code_gauss_given_divisorproductsecond) = 2 * ge_signed_half_gauss_given_divisorproductsecondimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_divisorproductsecondimaginary) = 0) /\ (ge_balance_negative_gauss_given_divisorproductsecondimaginary) = S ge_signed_half_gauss_given_divisorproductsecondimaginarydecode))) /\ ((ge_second_ip_gauss_given_divisorproduct) + ge_balance_negative_gauss_given_divisorproductsecondimaginary = (ge_second_in_gauss_given_divisorproduct) + ge_balance_positive_gauss_given_divisorproductsecondimaginary)))))) /\ (exists ge_representation_real_code_gauss_given_divisorproductoutput ge_representation_imaginary_code_gauss_given_divisorproductoutput. (((c) = ((ge_representation_real_code_gauss_given_divisorproductoutput) + (ge_representation_imaginary_code_gauss_given_divisorproductoutput)) * S ((ge_representation_real_code_gauss_given_divisorproductoutput) + (ge_representation_imaginary_code_gauss_given_divisorproductoutput)) + ((ge_representation_imaginary_code_gauss_given_divisorproductoutput) + (ge_representation_imaginary_code_gauss_given_divisorproductoutput))) /\ ((exists ge_balance_positive_gauss_given_divisorproductoutputreal ge_balance_negative_gauss_given_divisorproductoutputreal. (((((ge_representation_real_code_gauss_given_divisorproductoutput) = 2 * (ge_balance_positive_gauss_given_divisorproductoutputreal) /\ (ge_balance_negative_gauss_given_divisorproductoutputreal) = 0) \/ exists ge_signed_half_gauss_given_divisorproductoutputrealdecode. (((ge_representation_real_code_gauss_given_divisorproductoutput) = 2 * ge_signed_half_gauss_given_divisorproductoutputrealdecode + 1 /\ (ge_balance_positive_gauss_given_divisorproductoutputreal) = 0) /\ (ge_balance_negative_gauss_given_divisorproductoutputreal) = S ge_signed_half_gauss_given_divisorproductoutputrealdecode))) /\ ((((((((ge_first_rp_gauss_given_divisorproduct) * (ge_second_rp_gauss_given_divisorproduct))) + (((ge_first_rn_gauss_given_divisorproduct) * (ge_second_rn_gauss_given_divisorproduct))))) + (((((ge_first_ip_gauss_given_divisorproduct) * (ge_second_in_gauss_given_divisorproduct))) + (((ge_first_in_gauss_given_divisorproduct) * (ge_second_ip_gauss_given_divisorproduct))))))) + ge_balance_negative_gauss_given_divisorproductoutputreal = (((((((ge_first_rp_gauss_given_divisorproduct) * (ge_second_rn_gauss_given_divisorproduct))) + (((ge_first_rn_gauss_given_divisorproduct) * (ge_second_rp_gauss_given_divisorproduct))))) + (((((ge_first_ip_gauss_given_divisorproduct) * (ge_second_ip_gauss_given_divisorproduct))) + (((ge_first_in_gauss_given_divisorproduct) * (ge_second_in_gauss_given_divisorproduct))))))) + ge_balance_positive_gauss_given_divisorproductoutputreal))) /\ (exists ge_balance_positive_gauss_given_divisorproductoutputimaginary ge_balance_negative_gauss_given_divisorproductoutputimaginary. (((((ge_representation_imaginary_code_gauss_given_divisorproductoutput) = 2 * (ge_balance_positive_gauss_given_divisorproductoutputimaginary) /\ (ge_balance_negative_gauss_given_divisorproductoutputimaginary) = 0) \/ exists ge_signed_half_gauss_given_divisorproductoutputimaginarydecode. (((ge_representation_imaginary_code_gauss_given_divisorproductoutput) = 2 * ge_signed_half_gauss_given_divisorproductoutputimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_divisorproductoutputimaginary) = 0) /\ (ge_balance_negative_gauss_given_divisorproductoutputimaginary) = S ge_signed_half_gauss_given_divisorproductoutputimaginarydecode))) /\ ((((((((ge_first_rp_gauss_given_divisorproduct) * (ge_second_ip_gauss_given_divisorproduct))) + (((ge_first_rn_gauss_given_divisorproduct) * (ge_second_in_gauss_given_divisorproduct))))) + (((((ge_first_ip_gauss_given_divisorproduct) * (ge_second_rp_gauss_given_divisorproduct))) + (((ge_first_in_gauss_given_divisorproduct) * (ge_second_rn_gauss_given_divisorproduct))))))) + ge_balance_negative_gauss_given_divisorproductoutputimaginary = (((((((ge_first_rp_gauss_given_divisorproduct) * (ge_second_in_gauss_given_divisorproduct))) + (((ge_first_rn_gauss_given_divisorproduct) * (ge_second_ip_gauss_given_divisorproduct))))) + (((((ge_first_ip_gauss_given_divisorproduct) * (ge_second_rn_gauss_given_divisorproduct))) + (((ge_first_in_gauss_given_divisorproduct) * (ge_second_rp_gauss_given_divisorproduct))))))) + ge_balance_positive_gauss_given_divisorproductoutputimaginary)))))))))) -> (exists gr_first_product_gauss_given_bezout gr_second_product_gauss_given_bezout. ((exists ge_first_rp_gauss_given_bezoutfirst ge_first_rn_gauss_given_bezoutfirst ge_first_ip_gauss_given_bezoutfirst ge_first_in_gauss_given_bezoutfirst ge_second_rp_gauss_given_bezoutfirst ge_second_rn_gauss_given_bezoutfirst ge_second_ip_gauss_given_bezoutfirst ge_second_in_gauss_given_bezoutfirst. ((exists ge_representation_real_code_gauss_given_bezoutfirstfirst ge_representation_imaginary_code_gauss_given_bezoutfirstfirst. (((p) = ((ge_representation_real_code_gauss_given_bezoutfirstfirst) + (ge_representation_imaginary_code_gauss_given_bezoutfirstfirst)) * S ((ge_representation_real_code_gauss_given_bezoutfirstfirst) + (ge_representation_imaginary_code_gauss_given_bezoutfirstfirst)) + ((ge_representation_imaginary_code_gauss_given_bezoutfirstfirst) + (ge_representation_imaginary_code_gauss_given_bezoutfirstfirst))) /\ ((exists ge_balance_positive_gauss_given_bezoutfirstfirstreal ge_balance_negative_gauss_given_bezoutfirstfirstreal. (((((ge_representation_real_code_gauss_given_bezoutfirstfirst) = 2 * (ge_balance_positive_gauss_given_bezoutfirstfirstreal) /\ (ge_balance_negative_gauss_given_bezoutfirstfirstreal) = 0) \/ exists ge_signed_half_gauss_given_bezoutfirstfirstrealdecode. (((ge_representation_real_code_gauss_given_bezoutfirstfirst) = 2 * ge_signed_half_gauss_given_bezoutfirstfirstrealdecode + 1 /\ (ge_balance_positive_gauss_given_bezoutfirstfirstreal) = 0) /\ (ge_balance_negative_gauss_given_bezoutfirstfirstreal) = S ge_signed_half_gauss_given_bezoutfirstfirstrealdecode))) /\ ((ge_first_rp_gauss_given_bezoutfirst) + ge_balance_negative_gauss_given_bezoutfirstfirstreal = (ge_first_rn_gauss_given_bezoutfirst) + ge_balance_positive_gauss_given_bezoutfirstfirstreal))) /\ (exists ge_balance_positive_gauss_given_bezoutfirstfirstimaginary ge_balance_negative_gauss_given_bezoutfirstfirstimaginary. (((((ge_representation_imaginary_code_gauss_given_bezoutfirstfirst) = 2 * (ge_balance_positive_gauss_given_bezoutfirstfirstimaginary) /\ (ge_balance_negative_gauss_given_bezoutfirstfirstimaginary) = 0) \/ exists ge_signed_half_gauss_given_bezoutfirstfirstimaginarydecode. (((ge_representation_imaginary_code_gauss_given_bezoutfirstfirst) = 2 * ge_signed_half_gauss_given_bezoutfirstfirstimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_bezoutfirstfirstimaginary) = 0) /\ (ge_balance_negative_gauss_given_bezoutfirstfirstimaginary) = S ge_signed_half_gauss_given_bezoutfirstfirstimaginarydecode))) /\ ((ge_first_ip_gauss_given_bezoutfirst) + ge_balance_negative_gauss_given_bezoutfirstfirstimaginary = (ge_first_in_gauss_given_bezoutfirst) + ge_balance_positive_gauss_given_bezoutfirstfirstimaginary)))))) /\ ((exists ge_representation_real_code_gauss_given_bezoutfirstsecond ge_representation_imaginary_code_gauss_given_bezoutfirstsecond. (((u) = ((ge_representation_real_code_gauss_given_bezoutfirstsecond) + (ge_representation_imaginary_code_gauss_given_bezoutfirstsecond)) * S ((ge_representation_real_code_gauss_given_bezoutfirstsecond) + (ge_representation_imaginary_code_gauss_given_bezoutfirstsecond)) + ((ge_representation_imaginary_code_gauss_given_bezoutfirstsecond) + (ge_representation_imaginary_code_gauss_given_bezoutfirstsecond))) /\ ((exists ge_balance_positive_gauss_given_bezoutfirstsecondreal ge_balance_negative_gauss_given_bezoutfirstsecondreal. (((((ge_representation_real_code_gauss_given_bezoutfirstsecond) = 2 * (ge_balance_positive_gauss_given_bezoutfirstsecondreal) /\ (ge_balance_negative_gauss_given_bezoutfirstsecondreal) = 0) \/ exists ge_signed_half_gauss_given_bezoutfirstsecondrealdecode. (((ge_representation_real_code_gauss_given_bezoutfirstsecond) = 2 * ge_signed_half_gauss_given_bezoutfirstsecondrealdecode + 1 /\ (ge_balance_positive_gauss_given_bezoutfirstsecondreal) = 0) /\ (ge_balance_negative_gauss_given_bezoutfirstsecondreal) = S ge_signed_half_gauss_given_bezoutfirstsecondrealdecode))) /\ ((ge_second_rp_gauss_given_bezoutfirst) + ge_balance_negative_gauss_given_bezoutfirstsecondreal = (ge_second_rn_gauss_given_bezoutfirst) + ge_balance_positive_gauss_given_bezoutfirstsecondreal))) /\ (exists ge_balance_positive_gauss_given_bezoutfirstsecondimaginary ge_balance_negative_gauss_given_bezoutfirstsecondimaginary. (((((ge_representation_imaginary_code_gauss_given_bezoutfirstsecond) = 2 * (ge_balance_positive_gauss_given_bezoutfirstsecondimaginary) /\ (ge_balance_negative_gauss_given_bezoutfirstsecondimaginary) = 0) \/ exists ge_signed_half_gauss_given_bezoutfirstsecondimaginarydecode. (((ge_representation_imaginary_code_gauss_given_bezoutfirstsecond) = 2 * ge_signed_half_gauss_given_bezoutfirstsecondimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_bezoutfirstsecondimaginary) = 0) /\ (ge_balance_negative_gauss_given_bezoutfirstsecondimaginary) = S ge_signed_half_gauss_given_bezoutfirstsecondimaginarydecode))) /\ ((ge_second_ip_gauss_given_bezoutfirst) + ge_balance_negative_gauss_given_bezoutfirstsecondimaginary = (ge_second_in_gauss_given_bezoutfirst) + ge_balance_positive_gauss_given_bezoutfirstsecondimaginary)))))) /\ (exists ge_representation_real_code_gauss_given_bezoutfirstoutput ge_representation_imaginary_code_gauss_given_bezoutfirstoutput. (((gr_first_product_gauss_given_bezout) = ((ge_representation_real_code_gauss_given_bezoutfirstoutput) + (ge_representation_imaginary_code_gauss_given_bezoutfirstoutput)) * S ((ge_representation_real_code_gauss_given_bezoutfirstoutput) + (ge_representation_imaginary_code_gauss_given_bezoutfirstoutput)) + ((ge_representation_imaginary_code_gauss_given_bezoutfirstoutput) + (ge_representation_imaginary_code_gauss_given_bezoutfirstoutput))) /\ ((exists ge_balance_positive_gauss_given_bezoutfirstoutputreal ge_balance_negative_gauss_given_bezoutfirstoutputreal. (((((ge_representation_real_code_gauss_given_bezoutfirstoutput) = 2 * (ge_balance_positive_gauss_given_bezoutfirstoutputreal) /\ (ge_balance_negative_gauss_given_bezoutfirstoutputreal) = 0) \/ exists ge_signed_half_gauss_given_bezoutfirstoutputrealdecode. (((ge_representation_real_code_gauss_given_bezoutfirstoutput) = 2 * ge_signed_half_gauss_given_bezoutfirstoutputrealdecode + 1 /\ (ge_balance_positive_gauss_given_bezoutfirstoutputreal) = 0) /\ (ge_balance_negative_gauss_given_bezoutfirstoutputreal) = S ge_signed_half_gauss_given_bezoutfirstoutputrealdecode))) /\ ((((((((ge_first_rp_gauss_given_bezoutfirst) * (ge_second_rp_gauss_given_bezoutfirst))) + (((ge_first_rn_gauss_given_bezoutfirst) * (ge_second_rn_gauss_given_bezoutfirst))))) + (((((ge_first_ip_gauss_given_bezoutfirst) * (ge_second_in_gauss_given_bezoutfirst))) + (((ge_first_in_gauss_given_bezoutfirst) * (ge_second_ip_gauss_given_bezoutfirst))))))) + ge_balance_negative_gauss_given_bezoutfirstoutputreal = (((((((ge_first_rp_gauss_given_bezoutfirst) * (ge_second_rn_gauss_given_bezoutfirst))) + (((ge_first_rn_gauss_given_bezoutfirst) * (ge_second_rp_gauss_given_bezoutfirst))))) + (((((ge_first_ip_gauss_given_bezoutfirst) * (ge_second_ip_gauss_given_bezoutfirst))) + (((ge_first_in_gauss_given_bezoutfirst) * (ge_second_in_gauss_given_bezoutfirst))))))) + ge_balance_positive_gauss_given_bezoutfirstoutputreal))) /\ (exists ge_balance_positive_gauss_given_bezoutfirstoutputimaginary ge_balance_negative_gauss_given_bezoutfirstoutputimaginary. (((((ge_representation_imaginary_code_gauss_given_bezoutfirstoutput) = 2 * (ge_balance_positive_gauss_given_bezoutfirstoutputimaginary) /\ (ge_balance_negative_gauss_given_bezoutfirstoutputimaginary) = 0) \/ exists ge_signed_half_gauss_given_bezoutfirstoutputimaginarydecode. (((ge_representation_imaginary_code_gauss_given_bezoutfirstoutput) = 2 * ge_signed_half_gauss_given_bezoutfirstoutputimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_bezoutfirstoutputimaginary) = 0) /\ (ge_balance_negative_gauss_given_bezoutfirstoutputimaginary) = S ge_signed_half_gauss_given_bezoutfirstoutputimaginarydecode))) /\ ((((((((ge_first_rp_gauss_given_bezoutfirst) * (ge_second_ip_gauss_given_bezoutfirst))) + (((ge_first_rn_gauss_given_bezoutfirst) * (ge_second_in_gauss_given_bezoutfirst))))) + (((((ge_first_ip_gauss_given_bezoutfirst) * (ge_second_rp_gauss_given_bezoutfirst))) + (((ge_first_in_gauss_given_bezoutfirst) * (ge_second_rn_gauss_given_bezoutfirst))))))) + ge_balance_negative_gauss_given_bezoutfirstoutputimaginary = (((((((ge_first_rp_gauss_given_bezoutfirst) * (ge_second_in_gauss_given_bezoutfirst))) + (((ge_first_rn_gauss_given_bezoutfirst) * (ge_second_ip_gauss_given_bezoutfirst))))) + (((((ge_first_ip_gauss_given_bezoutfirst) * (ge_second_rn_gauss_given_bezoutfirst))) + (((ge_first_in_gauss_given_bezoutfirst) * (ge_second_rp_gauss_given_bezoutfirst))))))) + ge_balance_positive_gauss_given_bezoutfirstoutputimaginary))))))))) /\ ((exists ge_first_rp_gauss_given_bezoutsecond ge_first_rn_gauss_given_bezoutsecond ge_first_ip_gauss_given_bezoutsecond ge_first_in_gauss_given_bezoutsecond ge_second_rp_gauss_given_bezoutsecond ge_second_rn_gauss_given_bezoutsecond ge_second_ip_gauss_given_bezoutsecond ge_second_in_gauss_given_bezoutsecond. ((exists ge_representation_real_code_gauss_given_bezoutsecondfirst ge_representation_imaginary_code_gauss_given_bezoutsecondfirst. (((a) = ((ge_representation_real_code_gauss_given_bezoutsecondfirst) + (ge_representation_imaginary_code_gauss_given_bezoutsecondfirst)) * S ((ge_representation_real_code_gauss_given_bezoutsecondfirst) + (ge_representation_imaginary_code_gauss_given_bezoutsecondfirst)) + ((ge_representation_imaginary_code_gauss_given_bezoutsecondfirst) + (ge_representation_imaginary_code_gauss_given_bezoutsecondfirst))) /\ ((exists ge_balance_positive_gauss_given_bezoutsecondfirstreal ge_balance_negative_gauss_given_bezoutsecondfirstreal. (((((ge_representation_real_code_gauss_given_bezoutsecondfirst) = 2 * (ge_balance_positive_gauss_given_bezoutsecondfirstreal) /\ (ge_balance_negative_gauss_given_bezoutsecondfirstreal) = 0) \/ exists ge_signed_half_gauss_given_bezoutsecondfirstrealdecode. (((ge_representation_real_code_gauss_given_bezoutsecondfirst) = 2 * ge_signed_half_gauss_given_bezoutsecondfirstrealdecode + 1 /\ (ge_balance_positive_gauss_given_bezoutsecondfirstreal) = 0) /\ (ge_balance_negative_gauss_given_bezoutsecondfirstreal) = S ge_signed_half_gauss_given_bezoutsecondfirstrealdecode))) /\ ((ge_first_rp_gauss_given_bezoutsecond) + ge_balance_negative_gauss_given_bezoutsecondfirstreal = (ge_first_rn_gauss_given_bezoutsecond) + ge_balance_positive_gauss_given_bezoutsecondfirstreal))) /\ (exists ge_balance_positive_gauss_given_bezoutsecondfirstimaginary ge_balance_negative_gauss_given_bezoutsecondfirstimaginary. (((((ge_representation_imaginary_code_gauss_given_bezoutsecondfirst) = 2 * (ge_balance_positive_gauss_given_bezoutsecondfirstimaginary) /\ (ge_balance_negative_gauss_given_bezoutsecondfirstimaginary) = 0) \/ exists ge_signed_half_gauss_given_bezoutsecondfirstimaginarydecode. (((ge_representation_imaginary_code_gauss_given_bezoutsecondfirst) = 2 * ge_signed_half_gauss_given_bezoutsecondfirstimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_bezoutsecondfirstimaginary) = 0) /\ (ge_balance_negative_gauss_given_bezoutsecondfirstimaginary) = S ge_signed_half_gauss_given_bezoutsecondfirstimaginarydecode))) /\ ((ge_first_ip_gauss_given_bezoutsecond) + ge_balance_negative_gauss_given_bezoutsecondfirstimaginary = (ge_first_in_gauss_given_bezoutsecond) + ge_balance_positive_gauss_given_bezoutsecondfirstimaginary)))))) /\ ((exists ge_representation_real_code_gauss_given_bezoutsecondsecond ge_representation_imaginary_code_gauss_given_bezoutsecondsecond. (((v) = ((ge_representation_real_code_gauss_given_bezoutsecondsecond) + (ge_representation_imaginary_code_gauss_given_bezoutsecondsecond)) * S ((ge_representation_real_code_gauss_given_bezoutsecondsecond) + (ge_representation_imaginary_code_gauss_given_bezoutsecondsecond)) + ((ge_representation_imaginary_code_gauss_given_bezoutsecondsecond) + (ge_representation_imaginary_code_gauss_given_bezoutsecondsecond))) /\ ((exists ge_balance_positive_gauss_given_bezoutsecondsecondreal ge_balance_negative_gauss_given_bezoutsecondsecondreal. (((((ge_representation_real_code_gauss_given_bezoutsecondsecond) = 2 * (ge_balance_positive_gauss_given_bezoutsecondsecondreal) /\ (ge_balance_negative_gauss_given_bezoutsecondsecondreal) = 0) \/ exists ge_signed_half_gauss_given_bezoutsecondsecondrealdecode. (((ge_representation_real_code_gauss_given_bezoutsecondsecond) = 2 * ge_signed_half_gauss_given_bezoutsecondsecondrealdecode + 1 /\ (ge_balance_positive_gauss_given_bezoutsecondsecondreal) = 0) /\ (ge_balance_negative_gauss_given_bezoutsecondsecondreal) = S ge_signed_half_gauss_given_bezoutsecondsecondrealdecode))) /\ ((ge_second_rp_gauss_given_bezoutsecond) + ge_balance_negative_gauss_given_bezoutsecondsecondreal = (ge_second_rn_gauss_given_bezoutsecond) + ge_balance_positive_gauss_given_bezoutsecondsecondreal))) /\ (exists ge_balance_positive_gauss_given_bezoutsecondsecondimaginary ge_balance_negative_gauss_given_bezoutsecondsecondimaginary. (((((ge_representation_imaginary_code_gauss_given_bezoutsecondsecond) = 2 * (ge_balance_positive_gauss_given_bezoutsecondsecondimaginary) /\ (ge_balance_negative_gauss_given_bezoutsecondsecondimaginary) = 0) \/ exists ge_signed_half_gauss_given_bezoutsecondsecondimaginarydecode. (((ge_representation_imaginary_code_gauss_given_bezoutsecondsecond) = 2 * ge_signed_half_gauss_given_bezoutsecondsecondimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_bezoutsecondsecondimaginary) = 0) /\ (ge_balance_negative_gauss_given_bezoutsecondsecondimaginary) = S ge_signed_half_gauss_given_bezoutsecondsecondimaginarydecode))) /\ ((ge_second_ip_gauss_given_bezoutsecond) + ge_balance_negative_gauss_given_bezoutsecondsecondimaginary = (ge_second_in_gauss_given_bezoutsecond) + ge_balance_positive_gauss_given_bezoutsecondsecondimaginary)))))) /\ (exists ge_representation_real_code_gauss_given_bezoutsecondoutput ge_representation_imaginary_code_gauss_given_bezoutsecondoutput. (((gr_second_product_gauss_given_bezout) = ((ge_representation_real_code_gauss_given_bezoutsecondoutput) + (ge_representation_imaginary_code_gauss_given_bezoutsecondoutput)) * S ((ge_representation_real_code_gauss_given_bezoutsecondoutput) + (ge_representation_imaginary_code_gauss_given_bezoutsecondoutput)) + ((ge_representation_imaginary_code_gauss_given_bezoutsecondoutput) + (ge_representation_imaginary_code_gauss_given_bezoutsecondoutput))) /\ ((exists ge_balance_positive_gauss_given_bezoutsecondoutputreal ge_balance_negative_gauss_given_bezoutsecondoutputreal. (((((ge_representation_real_code_gauss_given_bezoutsecondoutput) = 2 * (ge_balance_positive_gauss_given_bezoutsecondoutputreal) /\ (ge_balance_negative_gauss_given_bezoutsecondoutputreal) = 0) \/ exists ge_signed_half_gauss_given_bezoutsecondoutputrealdecode. (((ge_representation_real_code_gauss_given_bezoutsecondoutput) = 2 * ge_signed_half_gauss_given_bezoutsecondoutputrealdecode + 1 /\ (ge_balance_positive_gauss_given_bezoutsecondoutputreal) = 0) /\ (ge_balance_negative_gauss_given_bezoutsecondoutputreal) = S ge_signed_half_gauss_given_bezoutsecondoutputrealdecode))) /\ ((((((((ge_first_rp_gauss_given_bezoutsecond) * (ge_second_rp_gauss_given_bezoutsecond))) + (((ge_first_rn_gauss_given_bezoutsecond) * (ge_second_rn_gauss_given_bezoutsecond))))) + (((((ge_first_ip_gauss_given_bezoutsecond) * (ge_second_in_gauss_given_bezoutsecond))) + (((ge_first_in_gauss_given_bezoutsecond) * (ge_second_ip_gauss_given_bezoutsecond))))))) + ge_balance_negative_gauss_given_bezoutsecondoutputreal = (((((((ge_first_rp_gauss_given_bezoutsecond) * (ge_second_rn_gauss_given_bezoutsecond))) + (((ge_first_rn_gauss_given_bezoutsecond) * (ge_second_rp_gauss_given_bezoutsecond))))) + (((((ge_first_ip_gauss_given_bezoutsecond) * (ge_second_ip_gauss_given_bezoutsecond))) + (((ge_first_in_gauss_given_bezoutsecond) * (ge_second_in_gauss_given_bezoutsecond))))))) + ge_balance_positive_gauss_given_bezoutsecondoutputreal))) /\ (exists ge_balance_positive_gauss_given_bezoutsecondoutputimaginary ge_balance_negative_gauss_given_bezoutsecondoutputimaginary. (((((ge_representation_imaginary_code_gauss_given_bezoutsecondoutput) = 2 * (ge_balance_positive_gauss_given_bezoutsecondoutputimaginary) /\ (ge_balance_negative_gauss_given_bezoutsecondoutputimaginary) = 0) \/ exists ge_signed_half_gauss_given_bezoutsecondoutputimaginarydecode. (((ge_representation_imaginary_code_gauss_given_bezoutsecondoutput) = 2 * ge_signed_half_gauss_given_bezoutsecondoutputimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_bezoutsecondoutputimaginary) = 0) /\ (ge_balance_negative_gauss_given_bezoutsecondoutputimaginary) = S ge_signed_half_gauss_given_bezoutsecondoutputimaginarydecode))) /\ ((((((((ge_first_rp_gauss_given_bezoutsecond) * (ge_second_ip_gauss_given_bezoutsecond))) + (((ge_first_rn_gauss_given_bezoutsecond) * (ge_second_in_gauss_given_bezoutsecond))))) + (((((ge_first_ip_gauss_given_bezoutsecond) * (ge_second_rp_gauss_given_bezoutsecond))) + (((ge_first_in_gauss_given_bezoutsecond) * (ge_second_rn_gauss_given_bezoutsecond))))))) + ge_balance_negative_gauss_given_bezoutsecondoutputimaginary = (((((((ge_first_rp_gauss_given_bezoutsecond) * (ge_second_in_gauss_given_bezoutsecond))) + (((ge_first_rn_gauss_given_bezoutsecond) * (ge_second_ip_gauss_given_bezoutsecond))))) + (((((ge_first_ip_gauss_given_bezoutsecond) * (ge_second_rn_gauss_given_bezoutsecond))) + (((ge_first_in_gauss_given_bezoutsecond) * (ge_second_rp_gauss_given_bezoutsecond))))))) + ge_balance_positive_gauss_given_bezoutsecondoutputimaginary))))))))) /\ (exists ge_first_rp_gauss_given_bezoutsum ge_first_rn_gauss_given_bezoutsum ge_first_ip_gauss_given_bezoutsum ge_first_in_gauss_given_bezoutsum ge_second_rp_gauss_given_bezoutsum ge_second_rn_gauss_given_bezoutsum ge_second_ip_gauss_given_bezoutsum ge_second_in_gauss_given_bezoutsum. ((exists ge_representation_real_code_gauss_given_bezoutsumfirst ge_representation_imaginary_code_gauss_given_bezoutsumfirst. (((gr_first_product_gauss_given_bezout) = ((ge_representation_real_code_gauss_given_bezoutsumfirst) + (ge_representation_imaginary_code_gauss_given_bezoutsumfirst)) * S ((ge_representation_real_code_gauss_given_bezoutsumfirst) + (ge_representation_imaginary_code_gauss_given_bezoutsumfirst)) + ((ge_representation_imaginary_code_gauss_given_bezoutsumfirst) + (ge_representation_imaginary_code_gauss_given_bezoutsumfirst))) /\ ((exists ge_balance_positive_gauss_given_bezoutsumfirstreal ge_balance_negative_gauss_given_bezoutsumfirstreal. (((((ge_representation_real_code_gauss_given_bezoutsumfirst) = 2 * (ge_balance_positive_gauss_given_bezoutsumfirstreal) /\ (ge_balance_negative_gauss_given_bezoutsumfirstreal) = 0) \/ exists ge_signed_half_gauss_given_bezoutsumfirstrealdecode. (((ge_representation_real_code_gauss_given_bezoutsumfirst) = 2 * ge_signed_half_gauss_given_bezoutsumfirstrealdecode + 1 /\ (ge_balance_positive_gauss_given_bezoutsumfirstreal) = 0) /\ (ge_balance_negative_gauss_given_bezoutsumfirstreal) = S ge_signed_half_gauss_given_bezoutsumfirstrealdecode))) /\ ((ge_first_rp_gauss_given_bezoutsum) + ge_balance_negative_gauss_given_bezoutsumfirstreal = (ge_first_rn_gauss_given_bezoutsum) + ge_balance_positive_gauss_given_bezoutsumfirstreal))) /\ (exists ge_balance_positive_gauss_given_bezoutsumfirstimaginary ge_balance_negative_gauss_given_bezoutsumfirstimaginary. (((((ge_representation_imaginary_code_gauss_given_bezoutsumfirst) = 2 * (ge_balance_positive_gauss_given_bezoutsumfirstimaginary) /\ (ge_balance_negative_gauss_given_bezoutsumfirstimaginary) = 0) \/ exists ge_signed_half_gauss_given_bezoutsumfirstimaginarydecode. (((ge_representation_imaginary_code_gauss_given_bezoutsumfirst) = 2 * ge_signed_half_gauss_given_bezoutsumfirstimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_bezoutsumfirstimaginary) = 0) /\ (ge_balance_negative_gauss_given_bezoutsumfirstimaginary) = S ge_signed_half_gauss_given_bezoutsumfirstimaginarydecode))) /\ ((ge_first_ip_gauss_given_bezoutsum) + ge_balance_negative_gauss_given_bezoutsumfirstimaginary = (ge_first_in_gauss_given_bezoutsum) + ge_balance_positive_gauss_given_bezoutsumfirstimaginary)))))) /\ ((exists ge_representation_real_code_gauss_given_bezoutsumsecond ge_representation_imaginary_code_gauss_given_bezoutsumsecond. (((gr_second_product_gauss_given_bezout) = ((ge_representation_real_code_gauss_given_bezoutsumsecond) + (ge_representation_imaginary_code_gauss_given_bezoutsumsecond)) * S ((ge_representation_real_code_gauss_given_bezoutsumsecond) + (ge_representation_imaginary_code_gauss_given_bezoutsumsecond)) + ((ge_representation_imaginary_code_gauss_given_bezoutsumsecond) + (ge_representation_imaginary_code_gauss_given_bezoutsumsecond))) /\ ((exists ge_balance_positive_gauss_given_bezoutsumsecondreal ge_balance_negative_gauss_given_bezoutsumsecondreal. (((((ge_representation_real_code_gauss_given_bezoutsumsecond) = 2 * (ge_balance_positive_gauss_given_bezoutsumsecondreal) /\ (ge_balance_negative_gauss_given_bezoutsumsecondreal) = 0) \/ exists ge_signed_half_gauss_given_bezoutsumsecondrealdecode. (((ge_representation_real_code_gauss_given_bezoutsumsecond) = 2 * ge_signed_half_gauss_given_bezoutsumsecondrealdecode + 1 /\ (ge_balance_positive_gauss_given_bezoutsumsecondreal) = 0) /\ (ge_balance_negative_gauss_given_bezoutsumsecondreal) = S ge_signed_half_gauss_given_bezoutsumsecondrealdecode))) /\ ((ge_second_rp_gauss_given_bezoutsum) + ge_balance_negative_gauss_given_bezoutsumsecondreal = (ge_second_rn_gauss_given_bezoutsum) + ge_balance_positive_gauss_given_bezoutsumsecondreal))) /\ (exists ge_balance_positive_gauss_given_bezoutsumsecondimaginary ge_balance_negative_gauss_given_bezoutsumsecondimaginary. (((((ge_representation_imaginary_code_gauss_given_bezoutsumsecond) = 2 * (ge_balance_positive_gauss_given_bezoutsumsecondimaginary) /\ (ge_balance_negative_gauss_given_bezoutsumsecondimaginary) = 0) \/ exists ge_signed_half_gauss_given_bezoutsumsecondimaginarydecode. (((ge_representation_imaginary_code_gauss_given_bezoutsumsecond) = 2 * ge_signed_half_gauss_given_bezoutsumsecondimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_bezoutsumsecondimaginary) = 0) /\ (ge_balance_negative_gauss_given_bezoutsumsecondimaginary) = S ge_signed_half_gauss_given_bezoutsumsecondimaginarydecode))) /\ ((ge_second_ip_gauss_given_bezoutsum) + ge_balance_negative_gauss_given_bezoutsumsecondimaginary = (ge_second_in_gauss_given_bezoutsum) + ge_balance_positive_gauss_given_bezoutsumsecondimaginary)))))) /\ (exists ge_representation_real_code_gauss_given_bezoutsumoutput ge_representation_imaginary_code_gauss_given_bezoutsumoutput. (((g) = ((ge_representation_real_code_gauss_given_bezoutsumoutput) + (ge_representation_imaginary_code_gauss_given_bezoutsumoutput)) * S ((ge_representation_real_code_gauss_given_bezoutsumoutput) + (ge_representation_imaginary_code_gauss_given_bezoutsumoutput)) + ((ge_representation_imaginary_code_gauss_given_bezoutsumoutput) + (ge_representation_imaginary_code_gauss_given_bezoutsumoutput))) /\ ((exists ge_balance_positive_gauss_given_bezoutsumoutputreal ge_balance_negative_gauss_given_bezoutsumoutputreal. (((((ge_representation_real_code_gauss_given_bezoutsumoutput) = 2 * (ge_balance_positive_gauss_given_bezoutsumoutputreal) /\ (ge_balance_negative_gauss_given_bezoutsumoutputreal) = 0) \/ exists ge_signed_half_gauss_given_bezoutsumoutputrealdecode. (((ge_representation_real_code_gauss_given_bezoutsumoutput) = 2 * ge_signed_half_gauss_given_bezoutsumoutputrealdecode + 1 /\ (ge_balance_positive_gauss_given_bezoutsumoutputreal) = 0) /\ (ge_balance_negative_gauss_given_bezoutsumoutputreal) = S ge_signed_half_gauss_given_bezoutsumoutputrealdecode))) /\ ((((ge_first_rp_gauss_given_bezoutsum) + (ge_second_rp_gauss_given_bezoutsum))) + ge_balance_negative_gauss_given_bezoutsumoutputreal = (((ge_first_rn_gauss_given_bezoutsum) + (ge_second_rn_gauss_given_bezoutsum))) + ge_balance_positive_gauss_given_bezoutsumoutputreal))) /\ (exists ge_balance_positive_gauss_given_bezoutsumoutputimaginary ge_balance_negative_gauss_given_bezoutsumoutputimaginary. (((((ge_representation_imaginary_code_gauss_given_bezoutsumoutput) = 2 * (ge_balance_positive_gauss_given_bezoutsumoutputimaginary) /\ (ge_balance_negative_gauss_given_bezoutsumoutputimaginary) = 0) \/ exists ge_signed_half_gauss_given_bezoutsumoutputimaginarydecode. (((ge_representation_imaginary_code_gauss_given_bezoutsumoutput) = 2 * ge_signed_half_gauss_given_bezoutsumoutputimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_bezoutsumoutputimaginary) = 0) /\ (ge_balance_negative_gauss_given_bezoutsumoutputimaginary) = S ge_signed_half_gauss_given_bezoutsumoutputimaginarydecode))) /\ ((((ge_first_ip_gauss_given_bezoutsum) + (ge_second_ip_gauss_given_bezoutsum))) + ge_balance_negative_gauss_given_bezoutsumoutputimaginary = (((ge_first_in_gauss_given_bezoutsum) + (ge_second_in_gauss_given_bezoutsum))) + ge_balance_positive_gauss_given_bezoutsumoutputimaginary)))))))))))) -> (exists gr_inverse_gauss_given_unit. (exists ge_first_rp_gauss_given_unitidentity ge_first_rn_gauss_given_unitidentity ge_first_ip_gauss_given_unitidentity ge_first_in_gauss_given_unitidentity ge_second_rp_gauss_given_unitidentity ge_second_rn_gauss_given_unitidentity ge_second_ip_gauss_given_unitidentity ge_second_in_gauss_given_unitidentity. ((exists ge_representation_real_code_gauss_given_unitidentityfirst ge_representation_imaginary_code_gauss_given_unitidentityfirst. (((g) = ((ge_representation_real_code_gauss_given_unitidentityfirst) + (ge_representation_imaginary_code_gauss_given_unitidentityfirst)) * S ((ge_representation_real_code_gauss_given_unitidentityfirst) + (ge_representation_imaginary_code_gauss_given_unitidentityfirst)) + ((ge_representation_imaginary_code_gauss_given_unitidentityfirst) + (ge_representation_imaginary_code_gauss_given_unitidentityfirst))) /\ ((exists ge_balance_positive_gauss_given_unitidentityfirstreal ge_balance_negative_gauss_given_unitidentityfirstreal. (((((ge_representation_real_code_gauss_given_unitidentityfirst) = 2 * (ge_balance_positive_gauss_given_unitidentityfirstreal) /\ (ge_balance_negative_gauss_given_unitidentityfirstreal) = 0) \/ exists ge_signed_half_gauss_given_unitidentityfirstrealdecode. (((ge_representation_real_code_gauss_given_unitidentityfirst) = 2 * ge_signed_half_gauss_given_unitidentityfirstrealdecode + 1 /\ (ge_balance_positive_gauss_given_unitidentityfirstreal) = 0) /\ (ge_balance_negative_gauss_given_unitidentityfirstreal) = S ge_signed_half_gauss_given_unitidentityfirstrealdecode))) /\ ((ge_first_rp_gauss_given_unitidentity) + ge_balance_negative_gauss_given_unitidentityfirstreal = (ge_first_rn_gauss_given_unitidentity) + ge_balance_positive_gauss_given_unitidentityfirstreal))) /\ (exists ge_balance_positive_gauss_given_unitidentityfirstimaginary ge_balance_negative_gauss_given_unitidentityfirstimaginary. (((((ge_representation_imaginary_code_gauss_given_unitidentityfirst) = 2 * (ge_balance_positive_gauss_given_unitidentityfirstimaginary) /\ (ge_balance_negative_gauss_given_unitidentityfirstimaginary) = 0) \/ exists ge_signed_half_gauss_given_unitidentityfirstimaginarydecode. (((ge_representation_imaginary_code_gauss_given_unitidentityfirst) = 2 * ge_signed_half_gauss_given_unitidentityfirstimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_unitidentityfirstimaginary) = 0) /\ (ge_balance_negative_gauss_given_unitidentityfirstimaginary) = S ge_signed_half_gauss_given_unitidentityfirstimaginarydecode))) /\ ((ge_first_ip_gauss_given_unitidentity) + ge_balance_negative_gauss_given_unitidentityfirstimaginary = (ge_first_in_gauss_given_unitidentity) + ge_balance_positive_gauss_given_unitidentityfirstimaginary)))))) /\ ((exists ge_representation_real_code_gauss_given_unitidentitysecond ge_representation_imaginary_code_gauss_given_unitidentitysecond. (((gr_inverse_gauss_given_unit) = ((ge_representation_real_code_gauss_given_unitidentitysecond) + (ge_representation_imaginary_code_gauss_given_unitidentitysecond)) * S ((ge_representation_real_code_gauss_given_unitidentitysecond) + (ge_representation_imaginary_code_gauss_given_unitidentitysecond)) + ((ge_representation_imaginary_code_gauss_given_unitidentitysecond) + (ge_representation_imaginary_code_gauss_given_unitidentitysecond))) /\ ((exists ge_balance_positive_gauss_given_unitidentitysecondreal ge_balance_negative_gauss_given_unitidentitysecondreal. (((((ge_representation_real_code_gauss_given_unitidentitysecond) = 2 * (ge_balance_positive_gauss_given_unitidentitysecondreal) /\ (ge_balance_negative_gauss_given_unitidentitysecondreal) = 0) \/ exists ge_signed_half_gauss_given_unitidentitysecondrealdecode. (((ge_representation_real_code_gauss_given_unitidentitysecond) = 2 * ge_signed_half_gauss_given_unitidentitysecondrealdecode + 1 /\ (ge_balance_positive_gauss_given_unitidentitysecondreal) = 0) /\ (ge_balance_negative_gauss_given_unitidentitysecondreal) = S ge_signed_half_gauss_given_unitidentitysecondrealdecode))) /\ ((ge_second_rp_gauss_given_unitidentity) + ge_balance_negative_gauss_given_unitidentitysecondreal = (ge_second_rn_gauss_given_unitidentity) + ge_balance_positive_gauss_given_unitidentitysecondreal))) /\ (exists ge_balance_positive_gauss_given_unitidentitysecondimaginary ge_balance_negative_gauss_given_unitidentitysecondimaginary. (((((ge_representation_imaginary_code_gauss_given_unitidentitysecond) = 2 * (ge_balance_positive_gauss_given_unitidentitysecondimaginary) /\ (ge_balance_negative_gauss_given_unitidentitysecondimaginary) = 0) \/ exists ge_signed_half_gauss_given_unitidentitysecondimaginarydecode. (((ge_representation_imaginary_code_gauss_given_unitidentitysecond) = 2 * ge_signed_half_gauss_given_unitidentitysecondimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_unitidentitysecondimaginary) = 0) /\ (ge_balance_negative_gauss_given_unitidentitysecondimaginary) = S ge_signed_half_gauss_given_unitidentitysecondimaginarydecode))) /\ ((ge_second_ip_gauss_given_unitidentity) + ge_balance_negative_gauss_given_unitidentitysecondimaginary = (ge_second_in_gauss_given_unitidentity) + ge_balance_positive_gauss_given_unitidentitysecondimaginary)))))) /\ (exists ge_representation_real_code_gauss_given_unitidentityoutput ge_representation_imaginary_code_gauss_given_unitidentityoutput. (((6) = ((ge_representation_real_code_gauss_given_unitidentityoutput) + (ge_representation_imaginary_code_gauss_given_unitidentityoutput)) * S ((ge_representation_real_code_gauss_given_unitidentityoutput) + (ge_representation_imaginary_code_gauss_given_unitidentityoutput)) + ((ge_representation_imaginary_code_gauss_given_unitidentityoutput) + (ge_representation_imaginary_code_gauss_given_unitidentityoutput))) /\ ((exists ge_balance_positive_gauss_given_unitidentityoutputreal ge_balance_negative_gauss_given_unitidentityoutputreal. (((((ge_representation_real_code_gauss_given_unitidentityoutput) = 2 * (ge_balance_positive_gauss_given_unitidentityoutputreal) /\ (ge_balance_negative_gauss_given_unitidentityoutputreal) = 0) \/ exists ge_signed_half_gauss_given_unitidentityoutputrealdecode. (((ge_representation_real_code_gauss_given_unitidentityoutput) = 2 * ge_signed_half_gauss_given_unitidentityoutputrealdecode + 1 /\ (ge_balance_positive_gauss_given_unitidentityoutputreal) = 0) /\ (ge_balance_negative_gauss_given_unitidentityoutputreal) = S ge_signed_half_gauss_given_unitidentityoutputrealdecode))) /\ ((((((((ge_first_rp_gauss_given_unitidentity) * (ge_second_rp_gauss_given_unitidentity))) + (((ge_first_rn_gauss_given_unitidentity) * (ge_second_rn_gauss_given_unitidentity))))) + (((((ge_first_ip_gauss_given_unitidentity) * (ge_second_in_gauss_given_unitidentity))) + (((ge_first_in_gauss_given_unitidentity) * (ge_second_ip_gauss_given_unitidentity))))))) + ge_balance_negative_gauss_given_unitidentityoutputreal = (((((((ge_first_rp_gauss_given_unitidentity) * (ge_second_rn_gauss_given_unitidentity))) + (((ge_first_rn_gauss_given_unitidentity) * (ge_second_rp_gauss_given_unitidentity))))) + (((((ge_first_ip_gauss_given_unitidentity) * (ge_second_ip_gauss_given_unitidentity))) + (((ge_first_in_gauss_given_unitidentity) * (ge_second_in_gauss_given_unitidentity))))))) + ge_balance_positive_gauss_given_unitidentityoutputreal))) /\ (exists ge_balance_positive_gauss_given_unitidentityoutputimaginary ge_balance_negative_gauss_given_unitidentityoutputimaginary. (((((ge_representation_imaginary_code_gauss_given_unitidentityoutput) = 2 * (ge_balance_positive_gauss_given_unitidentityoutputimaginary) /\ (ge_balance_negative_gauss_given_unitidentityoutputimaginary) = 0) \/ exists ge_signed_half_gauss_given_unitidentityoutputimaginarydecode. (((ge_representation_imaginary_code_gauss_given_unitidentityoutput) = 2 * ge_signed_half_gauss_given_unitidentityoutputimaginarydecode + 1 /\ (ge_balance_positive_gauss_given_unitidentityoutputimaginary) = 0) /\ (ge_balance_negative_gauss_given_unitidentityoutputimaginary) = S ge_signed_half_gauss_given_unitidentityoutputimaginarydecode))) /\ ((((((((ge_first_rp_gauss_given_unitidentity) * (ge_second_ip_gauss_given_unitidentity))) + (((ge_first_rn_gauss_given_unitidentity) * (ge_second_in_gauss_given_unitidentity))))) + (((((ge_first_ip_gauss_given_unitidentity) * (ge_second_rp_gauss_given_unitidentity))) + (((ge_first_in_gauss_given_unitidentity) * (ge_second_rn_gauss_given_unitidentity))))))) + ge_balance_negative_gauss_given_unitidentityoutputimaginary = (((((((ge_first_rp_gauss_given_unitidentity) * (ge_second_in_gauss_given_unitidentity))) + (((ge_first_rn_gauss_given_unitidentity) * (ge_second_ip_gauss_given_unitidentity))))) + (((((ge_first_ip_gauss_given_unitidentity) * (ge_second_rn_gauss_given_unitidentity))) + (((ge_first_in_gauss_given_unitidentity) * (ge_second_rp_gauss_given_unitidentity))))))) + ge_balance_positive_gauss_given_unitidentityoutputimaginary)))))))))) -> (exists gr_quotient_gauss_result. (exists ge_first_rp_gauss_resultproduct ge_first_rn_gauss_resultproduct ge_first_ip_gauss_resultproduct ge_first_in_gauss_resultproduct ge_second_rp_gauss_resultproduct ge_second_rn_gauss_resultproduct ge_second_ip_gauss_resultproduct ge_second_in_gauss_resultproduct. ((exists ge_representation_real_code_gauss_resultproductfirst ge_representation_imaginary_code_gauss_resultproductfirst. (((p) = ((ge_representation_real_code_gauss_resultproductfirst) + (ge_representation_imaginary_code_gauss_resultproductfirst)) * S ((ge_representation_real_code_gauss_resultproductfirst) + (ge_representation_imaginary_code_gauss_resultproductfirst)) + ((ge_representation_imaginary_code_gauss_resultproductfirst) + (ge_representation_imaginary_code_gauss_resultproductfirst))) /\ ((exists ge_balance_positive_gauss_resultproductfirstreal ge_balance_negative_gauss_resultproductfirstreal. (((((ge_representation_real_code_gauss_resultproductfirst) = 2 * (ge_balance_positive_gauss_resultproductfirstreal) /\ (ge_balance_negative_gauss_resultproductfirstreal) = 0) \/ exists ge_signed_half_gauss_resultproductfirstrealdecode. (((ge_representation_real_code_gauss_resultproductfirst) = 2 * ge_signed_half_gauss_resultproductfirstrealdecode + 1 /\ (ge_balance_positive_gauss_resultproductfirstreal) = 0) /\ (ge_balance_negative_gauss_resultproductfirstreal) = S ge_signed_half_gauss_resultproductfirstrealdecode))) /\ ((ge_first_rp_gauss_resultproduct) + ge_balance_negative_gauss_resultproductfirstreal = (ge_first_rn_gauss_resultproduct) + ge_balance_positive_gauss_resultproductfirstreal))) /\ (exists ge_balance_positive_gauss_resultproductfirstimaginary ge_balance_negative_gauss_resultproductfirstimaginary. (((((ge_representation_imaginary_code_gauss_resultproductfirst) = 2 * (ge_balance_positive_gauss_resultproductfirstimaginary) /\ (ge_balance_negative_gauss_resultproductfirstimaginary) = 0) \/ exists ge_signed_half_gauss_resultproductfirstimaginarydecode. (((ge_representation_imaginary_code_gauss_resultproductfirst) = 2 * ge_signed_half_gauss_resultproductfirstimaginarydecode + 1 /\ (ge_balance_positive_gauss_resultproductfirstimaginary) = 0) /\ (ge_balance_negative_gauss_resultproductfirstimaginary) = S ge_signed_half_gauss_resultproductfirstimaginarydecode))) /\ ((ge_first_ip_gauss_resultproduct) + ge_balance_negative_gauss_resultproductfirstimaginary = (ge_first_in_gauss_resultproduct) + ge_balance_positive_gauss_resultproductfirstimaginary)))))) /\ ((exists ge_representation_real_code_gauss_resultproductsecond ge_representation_imaginary_code_gauss_resultproductsecond. (((gr_quotient_gauss_result) = ((ge_representation_real_code_gauss_resultproductsecond) + (ge_representation_imaginary_code_gauss_resultproductsecond)) * S ((ge_representation_real_code_gauss_resultproductsecond) + (ge_representation_imaginary_code_gauss_resultproductsecond)) + ((ge_representation_imaginary_code_gauss_resultproductsecond) + (ge_representation_imaginary_code_gauss_resultproductsecond))) /\ ((exists ge_balance_positive_gauss_resultproductsecondreal ge_balance_negative_gauss_resultproductsecondreal. (((((ge_representation_real_code_gauss_resultproductsecond) = 2 * (ge_balance_positive_gauss_resultproductsecondreal) /\ (ge_balance_negative_gauss_resultproductsecondreal) = 0) \/ exists ge_signed_half_gauss_resultproductsecondrealdecode. (((ge_representation_real_code_gauss_resultproductsecond) = 2 * ge_signed_half_gauss_resultproductsecondrealdecode + 1 /\ (ge_balance_positive_gauss_resultproductsecondreal) = 0) /\ (ge_balance_negative_gauss_resultproductsecondreal) = S ge_signed_half_gauss_resultproductsecondrealdecode))) /\ ((ge_second_rp_gauss_resultproduct) + ge_balance_negative_gauss_resultproductsecondreal = (ge_second_rn_gauss_resultproduct) + ge_balance_positive_gauss_resultproductsecondreal))) /\ (exists ge_balance_positive_gauss_resultproductsecondimaginary ge_balance_negative_gauss_resultproductsecondimaginary. (((((ge_representation_imaginary_code_gauss_resultproductsecond) = 2 * (ge_balance_positive_gauss_resultproductsecondimaginary) /\ (ge_balance_negative_gauss_resultproductsecondimaginary) = 0) \/ exists ge_signed_half_gauss_resultproductsecondimaginarydecode. (((ge_representation_imaginary_code_gauss_resultproductsecond) = 2 * ge_signed_half_gauss_resultproductsecondimaginarydecode + 1 /\ (ge_balance_positive_gauss_resultproductsecondimaginary) = 0) /\ (ge_balance_negative_gauss_resultproductsecondimaginary) = S ge_signed_half_gauss_resultproductsecondimaginarydecode))) /\ ((ge_second_ip_gauss_resultproduct) + ge_balance_negative_gauss_resultproductsecondimaginary = (ge_second_in_gauss_resultproduct) + ge_balance_positive_gauss_resultproductsecondimaginary)))))) /\ (exists ge_representation_real_code_gauss_resultproductoutput ge_representation_imaginary_code_gauss_resultproductoutput. (((b) = ((ge_representation_real_code_gauss_resultproductoutput) + (ge_representation_imaginary_code_gauss_resultproductoutput)) * S ((ge_representation_real_code_gauss_resultproductoutput) + (ge_representation_imaginary_code_gauss_resultproductoutput)) + ((ge_representation_imaginary_code_gauss_resultproductoutput) + (ge_representation_imaginary_code_gauss_resultproductoutput))) /\ ((exists ge_balance_positive_gauss_resultproductoutputreal ge_balance_negative_gauss_resultproductoutputreal. (((((ge_representation_real_code_gauss_resultproductoutput) = 2 * (ge_balance_positive_gauss_resultproductoutputreal) /\ (ge_balance_negative_gauss_resultproductoutputreal) = 0) \/ exists ge_signed_half_gauss_resultproductoutputrealdecode. (((ge_representation_real_code_gauss_resultproductoutput) = 2 * ge_signed_half_gauss_resultproductoutputrealdecode + 1 /\ (ge_balance_positive_gauss_resultproductoutputreal) = 0) /\ (ge_balance_negative_gauss_resultproductoutputreal) = S ge_signed_half_gauss_resultproductoutputrealdecode))) /\ ((((((((ge_first_rp_gauss_resultproduct) * (ge_second_rp_gauss_resultproduct))) + (((ge_first_rn_gauss_resultproduct) * (ge_second_rn_gauss_resultproduct))))) + (((((ge_first_ip_gauss_resultproduct) * (ge_second_in_gauss_resultproduct))) + (((ge_first_in_gauss_resultproduct) * (ge_second_ip_gauss_resultproduct))))))) + ge_balance_negative_gauss_resultproductoutputreal = (((((((ge_first_rp_gauss_resultproduct) * (ge_second_rn_gauss_resultproduct))) + (((ge_first_rn_gauss_resultproduct) * (ge_second_rp_gauss_resultproduct))))) + (((((ge_first_ip_gauss_resultproduct) * (ge_second_ip_gauss_resultproduct))) + (((ge_first_in_gauss_resultproduct) * (ge_second_in_gauss_resultproduct))))))) + ge_balance_positive_gauss_resultproductoutputreal))) /\ (exists ge_balance_positive_gauss_resultproductoutputimaginary ge_balance_negative_gauss_resultproductoutputimaginary. (((((ge_representation_imaginary_code_gauss_resultproductoutput) = 2 * (ge_balance_positive_gauss_resultproductoutputimaginary) /\ (ge_balance_negative_gauss_resultproductoutputimaginary) = 0) \/ exists ge_signed_half_gauss_resultproductoutputimaginarydecode. (((ge_representation_imaginary_code_gauss_resultproductoutput) = 2 * ge_signed_half_gauss_resultproductoutputimaginarydecode + 1 /\ (ge_balance_positive_gauss_resultproductoutputimaginary) = 0) /\ (ge_balance_negative_gauss_resultproductoutputimaginary) = S ge_signed_half_gauss_resultproductoutputimaginarydecode))) /\ ((((((((ge_first_rp_gauss_resultproduct) * (ge_second_ip_gauss_resultproduct))) + (((ge_first_rn_gauss_resultproduct) * (ge_second_in_gauss_resultproduct))))) + (((((ge_first_ip_gauss_resultproduct) * (ge_second_rp_gauss_resultproduct))) + (((ge_first_in_gauss_resultproduct) * (ge_second_rn_gauss_resultproduct))))))) + ge_balance_negative_gauss_resultproductoutputimaginary = (((((((ge_first_rp_gauss_resultproduct) * (ge_second_in_gauss_resultproduct))) + (((ge_first_rn_gauss_resultproduct) * (ge_second_ip_gauss_resultproduct))))) + (((((ge_first_ip_gauss_resultproduct) * (ge_second_rn_gauss_resultproduct))) + (((ge_first_in_gauss_resultproduct) * (ge_second_rp_gauss_resultproduct))))))) + ge_balance_positive_gauss_resultproductoutputimaginary))))))))))

Complete tactic proof in conservative notation

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

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

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 c
  5. L5
    intro g
  6. L6
    intro u
  7. L7
    intro v
  8. L8
    intro hprod
  9. L9
    intro hdiv
  10. L10
    intro hbez
02Fix variables and assumptionsL11–11

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

  1. L11
    intro hunit
03Separate the logical casesL12–15

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

  1. L12
    cases hbez
  2. L13
    cases hbez_witness
  3. L14
    cases hbez_witness_witness
  4. L15
    cases hbez_witness_witness_right
04Establish hinverseL16–19

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

  1. L16
    have hinverse : ∃ w. GUnit(w) ∧ (GMul(g,w,6) ∧ GMul(w,g,6))Definitions: GUnit(w)GMul(g,w,6)GMul(w,g,6)Original native command in the exact edition
  2. L17
    specialize gaussian_unit_inverse (g)
  3. L18
    apply gaussian_unit_inverse
  4. L19
    exact hunit
05Separate the logical casesL20–22

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

  1. L20
    cases hinverse
  2. L21
    cases hinverse_witness
  3. L22
    cases hinverse_witness_right
06Establish hPL23–32

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

  1. L23
    have hP : ∃ P. GMul(x,b,P)Definitions: GMul(x,b,P)Original native command in the exact edition
  2. L24
    specialize gaussian_multiply_exists (x)
  3. L25
    specialize gaussian_multiply_exists (b)
  4. L26
    apply gaussian_multiply_exists
  5. L27
    specialize gaussian_multiply_output_valid (p)
  6. L28
    specialize gaussian_multiply_output_valid (u)
  7. L29
    specialize gaussian_multiply_output_valid (x)
  8. L30
    apply gaussian_multiply_output_valid
  9. L31
    exact hbez_witness_witness_left
  10. L32
    specialize gaussian_multiply_input_right_valid (a)
07Use earlier factsL33–36

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

  1. L33
    specialize gaussian_multiply_input_right_valid (b)
  2. L34
    specialize gaussian_multiply_input_right_valid (c)
  3. L35
    apply gaussian_multiply_input_right_valid
  4. L36
    exact hprod
08Separate the logical casesL37–37

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

  1. L37
    cases hP
09Establish hQL38–47

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

  1. L38
    have hQ : ∃ Q. GMul(x1,b,Q)Definitions: GMul(x1,b,Q)Original native command in the exact edition
  2. L39
    specialize gaussian_multiply_exists (x1)
  3. L40
    specialize gaussian_multiply_exists (b)
  4. L41
    apply gaussian_multiply_exists
  5. L42
    specialize gaussian_multiply_output_valid (a)
  6. L43
    specialize gaussian_multiply_output_valid (v)
  7. L44
    specialize gaussian_multiply_output_valid (x1)
  8. L45
    apply gaussian_multiply_output_valid
  9. L46
    exact hbez_witness_witness_right_left
  10. L47
    specialize gaussian_multiply_input_right_valid (a)
10Use earlier factsL48–51

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

  1. L48
    specialize gaussian_multiply_input_right_valid (b)
  2. L49
    specialize gaussian_multiply_input_right_valid (c)
  3. L50
    apply gaussian_multiply_input_right_valid
  4. L51
    exact hprod
11Separate the logical casesL52–52

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

  1. L52
    cases hQ
12Establish hTL53–62

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

  1. L53
    have hT : ∃ T. GMul(g,b,T)Definitions: GMul(g,b,T)Original native command in the exact edition
  2. L54
    specialize gaussian_multiply_exists (g)
  3. L55
    specialize gaussian_multiply_exists (b)
  4. L56
    apply gaussian_multiply_exists
  5. L57
    specialize gaussian_unit_valid (g)
  6. L58
    apply gaussian_unit_valid
  7. L59
    exact hunit
  8. L60
    specialize gaussian_multiply_input_right_valid (a)
  9. L61
    specialize gaussian_multiply_input_right_valid (b)
  10. L62
    specialize gaussian_multiply_input_right_valid (c)
13Use earlier factsL63–64

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

  1. L63
    apply gaussian_multiply_input_right_valid
  2. L64
    exact hprod
14Separate the logical casesL65–65

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

  1. L65
    cases hT
15Establish hcvL66–75

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

  1. L66
  2. L67
    specialize gaussian_multiply_swap_tail (a)
  3. L68
    specialize gaussian_multiply_swap_tail (v)
  4. L69
    specialize gaussian_multiply_swap_tail (b)
  5. L70
    specialize gaussian_multiply_swap_tail (x1)
  6. L71
    specialize gaussian_multiply_swap_tail (c)
  7. L72
    specialize gaussian_multiply_swap_tail (x4)
  8. L73
    apply gaussian_multiply_swap_tail
  9. L74
    exact hbez_witness_witness_right_left
  10. L75
    exact hQ_witness
16Use earlier factsL76–76

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

  1. L76
    exact hprod
17Establish htotalL77–86

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

  1. L77
    have htotal : GDvd(p,x5)Definitions: GDvd(p,x5)Original native command in the exact edition
  2. L78
    specialize gaussian_common_divisor_add (p)
  3. L79
    specialize gaussian_common_divisor_add (x3)
  4. L80
    specialize gaussian_common_divisor_add (x4)
  5. L81
    specialize gaussian_common_divisor_add (x5)
  6. L82
    apply gaussian_common_divisor_add
  7. L83
    specialize gaussian_divides_product_left (p)
  8. L84
    specialize gaussian_divides_product_left (x)
  9. L85
    specialize gaussian_divides_product_left (b)
  10. L86
    specialize gaussian_divides_product_left (x3)
18Use earlier factsL87–87

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

  1. L87
    apply gaussian_divides_product_left
19Construct an explicit witnessL88–88

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

  1. L88
    exists (u)
20Use earlier factsL89–98

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

  1. L89
    exact hbez_witness_witness_left
  2. L90
    exact hP_witness
  3. L91
    specialize gaussian_divides_product_left (p)
  4. L92
    specialize gaussian_divides_product_left (c)
  5. L93
    specialize gaussian_divides_product_left (v)
  6. L94
    specialize gaussian_divides_product_left (x4)
  7. L95
    apply gaussian_divides_product_left
  8. L96
    exact hdiv
  9. L97
    exact hcv
  10. L98
    specialize gaussian_multiply_add_distribute_right (b)
21Use earlier factsL99–108

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

  1. L99
    specialize gaussian_multiply_add_distribute_right (x)
  2. L100
    specialize gaussian_multiply_add_distribute_right (x1)
  3. L101
    specialize gaussian_multiply_add_distribute_right (g)
  4. L102
    specialize gaussian_multiply_add_distribute_right (x3)
  5. L103
    specialize gaussian_multiply_add_distribute_right (x4)
  6. L104
    specialize gaussian_multiply_add_distribute_right (x5)
  7. L105
    apply gaussian_multiply_add_distribute_right
  8. L106
    exact hbez_witness_witness_right_right
  9. L107
    exact hP_witness
  10. L108
    exact hQ_witness
22Use earlier factsL109–114

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

  1. L109
    exact hT_witness
  2. L110
    specialize gaussian_divides_transitive (p)
  3. L111
    specialize gaussian_divides_transitive (x5)
  4. L112
    specialize gaussian_divides_transitive (b)
  5. L113
    apply gaussian_divides_transitive
  6. L114
    exact htotal
23Construct an explicit witnessL115–115

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

  1. L115
    exists (x2)
24Use earlier factsL116–125

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

  1. L116
    specialize gaussian_multiply_commutative (x2)
  2. L117
    specialize gaussian_multiply_commutative (x5)
  3. L118
    specialize gaussian_multiply_commutative (b)
  4. L119
    apply gaussian_multiply_commutative
  5. L120
    specialize gaussian_multiply_associative (x2)
  6. L121
    specialize gaussian_multiply_associative (g)
  7. L122
    specialize gaussian_multiply_associative (b)
  8. L123
    specialize gaussian_multiply_associative (6)
  9. L124
    specialize gaussian_multiply_associative (x5)
  10. L125
    specialize gaussian_multiply_associative (b)
25Use earlier factsL126–135

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

  1. L126
    apply gaussian_multiply_associative
  2. L127
    exact hinverse_witness_right_right
  3. L128
    specialize gaussian_multiply_one_left (b)
  4. L129
    apply gaussian_multiply_one_left
  5. L130
    specialize gaussian_multiply_input_right_valid (a)
  6. L131
    specialize gaussian_multiply_input_right_valid (b)
  7. L132
    specialize gaussian_multiply_input_right_valid (c)
  8. L133
    apply gaussian_multiply_input_right_valid
  9. L134
    exact hprod
  10. L135
    exact hT_witness

Library-wide reading audit

Original defined command ledger · 135 lines
  1. 0001intro p
  2. 0002intro a
  3. 0003intro b
  4. 0004intro c
  5. 0005intro g
  6. 0006intro u
  7. 0007intro v
  8. 0008intro hprod
  9. 0009intro hdiv
  10. 0010intro hbez
  11. 0011intro hunit
  12. 0012cases hbez
  13. 0013cases hbez_witness
  14. 0014cases hbez_witness_witness
  15. 0015cases hbez_witness_witness_right
  16. 0016have hinverse : ∃ w. GUnit(w) ∧ (GMul(g,w,6)GMul(w,g,6))
  17. 0017specialize gaussian_unit_inverse (g)
  18. 0018apply gaussian_unit_inverse
  19. 0019exact hunit
  20. 0020cases hinverse
  21. 0021cases hinverse_witness
  22. 0022cases hinverse_witness_right
  23. 0023have hP : ∃ P. GMul(x,b,P)
  24. 0024specialize gaussian_multiply_exists (x)
  25. 0025specialize gaussian_multiply_exists (b)
  26. 0026apply gaussian_multiply_exists
  27. 0027specialize gaussian_multiply_output_valid (p)
  28. 0028specialize gaussian_multiply_output_valid (u)
  29. 0029specialize gaussian_multiply_output_valid (x)
  30. 0030apply gaussian_multiply_output_valid
  31. 0031exact hbez_witness_witness_left
  32. 0032specialize gaussian_multiply_input_right_valid (a)
  33. 0033specialize gaussian_multiply_input_right_valid (b)
  34. 0034specialize gaussian_multiply_input_right_valid (c)
  35. 0035apply gaussian_multiply_input_right_valid
  36. 0036exact hprod
  37. 0037cases hP
  38. 0038have hQ : ∃ Q. GMul(x1,b,Q)
  39. 0039specialize gaussian_multiply_exists (x1)
  40. 0040specialize gaussian_multiply_exists (b)
  41. 0041apply gaussian_multiply_exists
  42. 0042specialize gaussian_multiply_output_valid (a)
  43. 0043specialize gaussian_multiply_output_valid (v)
  44. 0044specialize gaussian_multiply_output_valid (x1)
  45. 0045apply gaussian_multiply_output_valid
  46. 0046exact hbez_witness_witness_right_left
  47. 0047specialize gaussian_multiply_input_right_valid (a)
  48. 0048specialize gaussian_multiply_input_right_valid (b)
  49. 0049specialize gaussian_multiply_input_right_valid (c)
  50. 0050apply gaussian_multiply_input_right_valid
  51. 0051exact hprod
  52. 0052cases hQ
  53. 0053have hT : ∃ T. GMul(g,b,T)
  54. 0054specialize gaussian_multiply_exists (g)
  55. 0055specialize gaussian_multiply_exists (b)
  56. 0056apply gaussian_multiply_exists
  57. 0057specialize gaussian_unit_valid (g)
  58. 0058apply gaussian_unit_valid
  59. 0059exact hunit
  60. 0060specialize gaussian_multiply_input_right_valid (a)
  61. 0061specialize gaussian_multiply_input_right_valid (b)
  62. 0062specialize gaussian_multiply_input_right_valid (c)
  63. 0063apply gaussian_multiply_input_right_valid
  64. 0064exact hprod
  65. 0065cases hT
  66. 0066have hcv : GMul(c,v,x4)
  67. 0067specialize gaussian_multiply_swap_tail (a)
  68. 0068specialize gaussian_multiply_swap_tail (v)
  69. 0069specialize gaussian_multiply_swap_tail (b)
  70. 0070specialize gaussian_multiply_swap_tail (x1)
  71. 0071specialize gaussian_multiply_swap_tail (c)
  72. 0072specialize gaussian_multiply_swap_tail (x4)
  73. 0073apply gaussian_multiply_swap_tail
  74. 0074exact hbez_witness_witness_right_left
  75. 0075exact hQ_witness
  76. 0076exact hprod
  77. 0077have htotal : GDvd(p,x5)
  78. 0078specialize gaussian_common_divisor_add (p)
  79. 0079specialize gaussian_common_divisor_add (x3)
  80. 0080specialize gaussian_common_divisor_add (x4)
  81. 0081specialize gaussian_common_divisor_add (x5)
  82. 0082apply gaussian_common_divisor_add
  83. 0083specialize gaussian_divides_product_left (p)
  84. 0084specialize gaussian_divides_product_left (x)
  85. 0085specialize gaussian_divides_product_left (b)
  86. 0086specialize gaussian_divides_product_left (x3)
  87. 0087apply gaussian_divides_product_left
  88. 0088exists (u)
  89. 0089exact hbez_witness_witness_left
  90. 0090exact hP_witness
  91. 0091specialize gaussian_divides_product_left (p)
  92. 0092specialize gaussian_divides_product_left (c)
  93. 0093specialize gaussian_divides_product_left (v)
  94. 0094specialize gaussian_divides_product_left (x4)
  95. 0095apply gaussian_divides_product_left
  96. 0096exact hdiv
  97. 0097exact hcv
  98. 0098specialize gaussian_multiply_add_distribute_right (b)
  99. 0099specialize gaussian_multiply_add_distribute_right (x)
  100. 0100specialize gaussian_multiply_add_distribute_right (x1)
  101. 0101specialize gaussian_multiply_add_distribute_right (g)
  102. 0102specialize gaussian_multiply_add_distribute_right (x3)
  103. 0103specialize gaussian_multiply_add_distribute_right (x4)
  104. 0104specialize gaussian_multiply_add_distribute_right (x5)
  105. 0105apply gaussian_multiply_add_distribute_right
  106. 0106exact hbez_witness_witness_right_right
  107. 0107exact hP_witness
  108. 0108exact hQ_witness
  109. 0109exact hT_witness
  110. 0110specialize gaussian_divides_transitive (p)
  111. 0111specialize gaussian_divides_transitive (x5)
  112. 0112specialize gaussian_divides_transitive (b)
  113. 0113apply gaussian_divides_transitive
  114. 0114exact htotal
  115. 0115exists (x2)
  116. 0116specialize gaussian_multiply_commutative (x2)
  117. 0117specialize gaussian_multiply_commutative (x5)
  118. 0118specialize gaussian_multiply_commutative (b)
  119. 0119apply gaussian_multiply_commutative
  120. 0120specialize gaussian_multiply_associative (x2)
  121. 0121specialize gaussian_multiply_associative (g)
  122. 0122specialize gaussian_multiply_associative (b)
  123. 0123specialize gaussian_multiply_associative (6)
  124. 0124specialize gaussian_multiply_associative (x5)
  125. 0125specialize gaussian_multiply_associative (b)
  126. 0126apply gaussian_multiply_associative
  127. 0127exact hinverse_witness_right_right
  128. 0128specialize gaussian_multiply_one_left (b)
  129. 0129apply gaussian_multiply_one_left
  130. 0130specialize gaussian_multiply_input_right_valid (a)
  131. 0131specialize gaussian_multiply_input_right_valid (b)
  132. 0132specialize gaussian_multiply_input_right_valid (c)
  133. 0133apply gaussian_multiply_input_right_valid
  134. 0134exact hprod
  135. 0135exact hT_witness