GF0031

gaussian_multiply_swap_tail

Interchange the two tail factors of an actual Gaussian triple product while retaining its literal output code.

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

∀ a. ∀ b. ∀ c. ∀ ab. ∀ ac. ∀ t. GMul(a,b,ab)GMul(ab,c,t)GMul(a,c,ac)GMul(ac,b,t)

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

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall a b c ab ac t. (exists ge_first_rp_swap_first ge_first_rn_swap_first ge_first_ip_swap_first ge_first_in_swap_first ge_second_rp_swap_first ge_second_rn_swap_first ge_second_ip_swap_first ge_second_in_swap_first. ((exists ge_representation_real_code_swap_firstfirst ge_representation_imaginary_code_swap_firstfirst. (((a) = ((ge_representation_real_code_swap_firstfirst) + (ge_representation_imaginary_code_swap_firstfirst)) * S ((ge_representation_real_code_swap_firstfirst) + (ge_representation_imaginary_code_swap_firstfirst)) + ((ge_representation_imaginary_code_swap_firstfirst) + (ge_representation_imaginary_code_swap_firstfirst))) /\ ((exists ge_balance_positive_swap_firstfirstreal ge_balance_negative_swap_firstfirstreal. (((((ge_representation_real_code_swap_firstfirst) = 2 * (ge_balance_positive_swap_firstfirstreal) /\ (ge_balance_negative_swap_firstfirstreal) = 0) \/ exists ge_signed_half_swap_firstfirstrealdecode. (((ge_representation_real_code_swap_firstfirst) = 2 * ge_signed_half_swap_firstfirstrealdecode + 1 /\ (ge_balance_positive_swap_firstfirstreal) = 0) /\ (ge_balance_negative_swap_firstfirstreal) = S ge_signed_half_swap_firstfirstrealdecode))) /\ ((ge_first_rp_swap_first) + ge_balance_negative_swap_firstfirstreal = (ge_first_rn_swap_first) + ge_balance_positive_swap_firstfirstreal))) /\ (exists ge_balance_positive_swap_firstfirstimaginary ge_balance_negative_swap_firstfirstimaginary. (((((ge_representation_imaginary_code_swap_firstfirst) = 2 * (ge_balance_positive_swap_firstfirstimaginary) /\ (ge_balance_negative_swap_firstfirstimaginary) = 0) \/ exists ge_signed_half_swap_firstfirstimaginarydecode. (((ge_representation_imaginary_code_swap_firstfirst) = 2 * ge_signed_half_swap_firstfirstimaginarydecode + 1 /\ (ge_balance_positive_swap_firstfirstimaginary) = 0) /\ (ge_balance_negative_swap_firstfirstimaginary) = S ge_signed_half_swap_firstfirstimaginarydecode))) /\ ((ge_first_ip_swap_first) + ge_balance_negative_swap_firstfirstimaginary = (ge_first_in_swap_first) + ge_balance_positive_swap_firstfirstimaginary)))))) /\ ((exists ge_representation_real_code_swap_firstsecond ge_representation_imaginary_code_swap_firstsecond. (((b) = ((ge_representation_real_code_swap_firstsecond) + (ge_representation_imaginary_code_swap_firstsecond)) * S ((ge_representation_real_code_swap_firstsecond) + (ge_representation_imaginary_code_swap_firstsecond)) + ((ge_representation_imaginary_code_swap_firstsecond) + (ge_representation_imaginary_code_swap_firstsecond))) /\ ((exists ge_balance_positive_swap_firstsecondreal ge_balance_negative_swap_firstsecondreal. (((((ge_representation_real_code_swap_firstsecond) = 2 * (ge_balance_positive_swap_firstsecondreal) /\ (ge_balance_negative_swap_firstsecondreal) = 0) \/ exists ge_signed_half_swap_firstsecondrealdecode. (((ge_representation_real_code_swap_firstsecond) = 2 * ge_signed_half_swap_firstsecondrealdecode + 1 /\ (ge_balance_positive_swap_firstsecondreal) = 0) /\ (ge_balance_negative_swap_firstsecondreal) = S ge_signed_half_swap_firstsecondrealdecode))) /\ ((ge_second_rp_swap_first) + ge_balance_negative_swap_firstsecondreal = (ge_second_rn_swap_first) + ge_balance_positive_swap_firstsecondreal))) /\ (exists ge_balance_positive_swap_firstsecondimaginary ge_balance_negative_swap_firstsecondimaginary. (((((ge_representation_imaginary_code_swap_firstsecond) = 2 * (ge_balance_positive_swap_firstsecondimaginary) /\ (ge_balance_negative_swap_firstsecondimaginary) = 0) \/ exists ge_signed_half_swap_firstsecondimaginarydecode. (((ge_representation_imaginary_code_swap_firstsecond) = 2 * ge_signed_half_swap_firstsecondimaginarydecode + 1 /\ (ge_balance_positive_swap_firstsecondimaginary) = 0) /\ (ge_balance_negative_swap_firstsecondimaginary) = S ge_signed_half_swap_firstsecondimaginarydecode))) /\ ((ge_second_ip_swap_first) + ge_balance_negative_swap_firstsecondimaginary = (ge_second_in_swap_first) + ge_balance_positive_swap_firstsecondimaginary)))))) /\ (exists ge_representation_real_code_swap_firstoutput ge_representation_imaginary_code_swap_firstoutput. (((ab) = ((ge_representation_real_code_swap_firstoutput) + (ge_representation_imaginary_code_swap_firstoutput)) * S ((ge_representation_real_code_swap_firstoutput) + (ge_representation_imaginary_code_swap_firstoutput)) + ((ge_representation_imaginary_code_swap_firstoutput) + (ge_representation_imaginary_code_swap_firstoutput))) /\ ((exists ge_balance_positive_swap_firstoutputreal ge_balance_negative_swap_firstoutputreal. (((((ge_representation_real_code_swap_firstoutput) = 2 * (ge_balance_positive_swap_firstoutputreal) /\ (ge_balance_negative_swap_firstoutputreal) = 0) \/ exists ge_signed_half_swap_firstoutputrealdecode. (((ge_representation_real_code_swap_firstoutput) = 2 * ge_signed_half_swap_firstoutputrealdecode + 1 /\ (ge_balance_positive_swap_firstoutputreal) = 0) /\ (ge_balance_negative_swap_firstoutputreal) = S ge_signed_half_swap_firstoutputrealdecode))) /\ ((((((((ge_first_rp_swap_first) * (ge_second_rp_swap_first))) + (((ge_first_rn_swap_first) * (ge_second_rn_swap_first))))) + (((((ge_first_ip_swap_first) * (ge_second_in_swap_first))) + (((ge_first_in_swap_first) * (ge_second_ip_swap_first))))))) + ge_balance_negative_swap_firstoutputreal = (((((((ge_first_rp_swap_first) * (ge_second_rn_swap_first))) + (((ge_first_rn_swap_first) * (ge_second_rp_swap_first))))) + (((((ge_first_ip_swap_first) * (ge_second_ip_swap_first))) + (((ge_first_in_swap_first) * (ge_second_in_swap_first))))))) + ge_balance_positive_swap_firstoutputreal))) /\ (exists ge_balance_positive_swap_firstoutputimaginary ge_balance_negative_swap_firstoutputimaginary. (((((ge_representation_imaginary_code_swap_firstoutput) = 2 * (ge_balance_positive_swap_firstoutputimaginary) /\ (ge_balance_negative_swap_firstoutputimaginary) = 0) \/ exists ge_signed_half_swap_firstoutputimaginarydecode. (((ge_representation_imaginary_code_swap_firstoutput) = 2 * ge_signed_half_swap_firstoutputimaginarydecode + 1 /\ (ge_balance_positive_swap_firstoutputimaginary) = 0) /\ (ge_balance_negative_swap_firstoutputimaginary) = S ge_signed_half_swap_firstoutputimaginarydecode))) /\ ((((((((ge_first_rp_swap_first) * (ge_second_ip_swap_first))) + (((ge_first_rn_swap_first) * (ge_second_in_swap_first))))) + (((((ge_first_ip_swap_first) * (ge_second_rp_swap_first))) + (((ge_first_in_swap_first) * (ge_second_rn_swap_first))))))) + ge_balance_negative_swap_firstoutputimaginary = (((((((ge_first_rp_swap_first) * (ge_second_in_swap_first))) + (((ge_first_rn_swap_first) * (ge_second_ip_swap_first))))) + (((((ge_first_ip_swap_first) * (ge_second_rn_swap_first))) + (((ge_first_in_swap_first) * (ge_second_rp_swap_first))))))) + ge_balance_positive_swap_firstoutputimaginary))))))))) -> (exists ge_first_rp_swap_second ge_first_rn_swap_second ge_first_ip_swap_second ge_first_in_swap_second ge_second_rp_swap_second ge_second_rn_swap_second ge_second_ip_swap_second ge_second_in_swap_second. ((exists ge_representation_real_code_swap_secondfirst ge_representation_imaginary_code_swap_secondfirst. (((ab) = ((ge_representation_real_code_swap_secondfirst) + (ge_representation_imaginary_code_swap_secondfirst)) * S ((ge_representation_real_code_swap_secondfirst) + (ge_representation_imaginary_code_swap_secondfirst)) + ((ge_representation_imaginary_code_swap_secondfirst) + (ge_representation_imaginary_code_swap_secondfirst))) /\ ((exists ge_balance_positive_swap_secondfirstreal ge_balance_negative_swap_secondfirstreal. (((((ge_representation_real_code_swap_secondfirst) = 2 * (ge_balance_positive_swap_secondfirstreal) /\ (ge_balance_negative_swap_secondfirstreal) = 0) \/ exists ge_signed_half_swap_secondfirstrealdecode. (((ge_representation_real_code_swap_secondfirst) = 2 * ge_signed_half_swap_secondfirstrealdecode + 1 /\ (ge_balance_positive_swap_secondfirstreal) = 0) /\ (ge_balance_negative_swap_secondfirstreal) = S ge_signed_half_swap_secondfirstrealdecode))) /\ ((ge_first_rp_swap_second) + ge_balance_negative_swap_secondfirstreal = (ge_first_rn_swap_second) + ge_balance_positive_swap_secondfirstreal))) /\ (exists ge_balance_positive_swap_secondfirstimaginary ge_balance_negative_swap_secondfirstimaginary. (((((ge_representation_imaginary_code_swap_secondfirst) = 2 * (ge_balance_positive_swap_secondfirstimaginary) /\ (ge_balance_negative_swap_secondfirstimaginary) = 0) \/ exists ge_signed_half_swap_secondfirstimaginarydecode. (((ge_representation_imaginary_code_swap_secondfirst) = 2 * ge_signed_half_swap_secondfirstimaginarydecode + 1 /\ (ge_balance_positive_swap_secondfirstimaginary) = 0) /\ (ge_balance_negative_swap_secondfirstimaginary) = S ge_signed_half_swap_secondfirstimaginarydecode))) /\ ((ge_first_ip_swap_second) + ge_balance_negative_swap_secondfirstimaginary = (ge_first_in_swap_second) + ge_balance_positive_swap_secondfirstimaginary)))))) /\ ((exists ge_representation_real_code_swap_secondsecond ge_representation_imaginary_code_swap_secondsecond. (((c) = ((ge_representation_real_code_swap_secondsecond) + (ge_representation_imaginary_code_swap_secondsecond)) * S ((ge_representation_real_code_swap_secondsecond) + (ge_representation_imaginary_code_swap_secondsecond)) + ((ge_representation_imaginary_code_swap_secondsecond) + (ge_representation_imaginary_code_swap_secondsecond))) /\ ((exists ge_balance_positive_swap_secondsecondreal ge_balance_negative_swap_secondsecondreal. (((((ge_representation_real_code_swap_secondsecond) = 2 * (ge_balance_positive_swap_secondsecondreal) /\ (ge_balance_negative_swap_secondsecondreal) = 0) \/ exists ge_signed_half_swap_secondsecondrealdecode. (((ge_representation_real_code_swap_secondsecond) = 2 * ge_signed_half_swap_secondsecondrealdecode + 1 /\ (ge_balance_positive_swap_secondsecondreal) = 0) /\ (ge_balance_negative_swap_secondsecondreal) = S ge_signed_half_swap_secondsecondrealdecode))) /\ ((ge_second_rp_swap_second) + ge_balance_negative_swap_secondsecondreal = (ge_second_rn_swap_second) + ge_balance_positive_swap_secondsecondreal))) /\ (exists ge_balance_positive_swap_secondsecondimaginary ge_balance_negative_swap_secondsecondimaginary. (((((ge_representation_imaginary_code_swap_secondsecond) = 2 * (ge_balance_positive_swap_secondsecondimaginary) /\ (ge_balance_negative_swap_secondsecondimaginary) = 0) \/ exists ge_signed_half_swap_secondsecondimaginarydecode. (((ge_representation_imaginary_code_swap_secondsecond) = 2 * ge_signed_half_swap_secondsecondimaginarydecode + 1 /\ (ge_balance_positive_swap_secondsecondimaginary) = 0) /\ (ge_balance_negative_swap_secondsecondimaginary) = S ge_signed_half_swap_secondsecondimaginarydecode))) /\ ((ge_second_ip_swap_second) + ge_balance_negative_swap_secondsecondimaginary = (ge_second_in_swap_second) + ge_balance_positive_swap_secondsecondimaginary)))))) /\ (exists ge_representation_real_code_swap_secondoutput ge_representation_imaginary_code_swap_secondoutput. (((t) = ((ge_representation_real_code_swap_secondoutput) + (ge_representation_imaginary_code_swap_secondoutput)) * S ((ge_representation_real_code_swap_secondoutput) + (ge_representation_imaginary_code_swap_secondoutput)) + ((ge_representation_imaginary_code_swap_secondoutput) + (ge_representation_imaginary_code_swap_secondoutput))) /\ ((exists ge_balance_positive_swap_secondoutputreal ge_balance_negative_swap_secondoutputreal. (((((ge_representation_real_code_swap_secondoutput) = 2 * (ge_balance_positive_swap_secondoutputreal) /\ (ge_balance_negative_swap_secondoutputreal) = 0) \/ exists ge_signed_half_swap_secondoutputrealdecode. (((ge_representation_real_code_swap_secondoutput) = 2 * ge_signed_half_swap_secondoutputrealdecode + 1 /\ (ge_balance_positive_swap_secondoutputreal) = 0) /\ (ge_balance_negative_swap_secondoutputreal) = S ge_signed_half_swap_secondoutputrealdecode))) /\ ((((((((ge_first_rp_swap_second) * (ge_second_rp_swap_second))) + (((ge_first_rn_swap_second) * (ge_second_rn_swap_second))))) + (((((ge_first_ip_swap_second) * (ge_second_in_swap_second))) + (((ge_first_in_swap_second) * (ge_second_ip_swap_second))))))) + ge_balance_negative_swap_secondoutputreal = (((((((ge_first_rp_swap_second) * (ge_second_rn_swap_second))) + (((ge_first_rn_swap_second) * (ge_second_rp_swap_second))))) + (((((ge_first_ip_swap_second) * (ge_second_ip_swap_second))) + (((ge_first_in_swap_second) * (ge_second_in_swap_second))))))) + ge_balance_positive_swap_secondoutputreal))) /\ (exists ge_balance_positive_swap_secondoutputimaginary ge_balance_negative_swap_secondoutputimaginary. (((((ge_representation_imaginary_code_swap_secondoutput) = 2 * (ge_balance_positive_swap_secondoutputimaginary) /\ (ge_balance_negative_swap_secondoutputimaginary) = 0) \/ exists ge_signed_half_swap_secondoutputimaginarydecode. (((ge_representation_imaginary_code_swap_secondoutput) = 2 * ge_signed_half_swap_secondoutputimaginarydecode + 1 /\ (ge_balance_positive_swap_secondoutputimaginary) = 0) /\ (ge_balance_negative_swap_secondoutputimaginary) = S ge_signed_half_swap_secondoutputimaginarydecode))) /\ ((((((((ge_first_rp_swap_second) * (ge_second_ip_swap_second))) + (((ge_first_rn_swap_second) * (ge_second_in_swap_second))))) + (((((ge_first_ip_swap_second) * (ge_second_rp_swap_second))) + (((ge_first_in_swap_second) * (ge_second_rn_swap_second))))))) + ge_balance_negative_swap_secondoutputimaginary = (((((((ge_first_rp_swap_second) * (ge_second_in_swap_second))) + (((ge_first_rn_swap_second) * (ge_second_ip_swap_second))))) + (((((ge_first_ip_swap_second) * (ge_second_rn_swap_second))) + (((ge_first_in_swap_second) * (ge_second_rp_swap_second))))))) + ge_balance_positive_swap_secondoutputimaginary))))))))) -> (exists ge_first_rp_swap_third ge_first_rn_swap_third ge_first_ip_swap_third ge_first_in_swap_third ge_second_rp_swap_third ge_second_rn_swap_third ge_second_ip_swap_third ge_second_in_swap_third. ((exists ge_representation_real_code_swap_thirdfirst ge_representation_imaginary_code_swap_thirdfirst. (((a) = ((ge_representation_real_code_swap_thirdfirst) + (ge_representation_imaginary_code_swap_thirdfirst)) * S ((ge_representation_real_code_swap_thirdfirst) + (ge_representation_imaginary_code_swap_thirdfirst)) + ((ge_representation_imaginary_code_swap_thirdfirst) + (ge_representation_imaginary_code_swap_thirdfirst))) /\ ((exists ge_balance_positive_swap_thirdfirstreal ge_balance_negative_swap_thirdfirstreal. (((((ge_representation_real_code_swap_thirdfirst) = 2 * (ge_balance_positive_swap_thirdfirstreal) /\ (ge_balance_negative_swap_thirdfirstreal) = 0) \/ exists ge_signed_half_swap_thirdfirstrealdecode. (((ge_representation_real_code_swap_thirdfirst) = 2 * ge_signed_half_swap_thirdfirstrealdecode + 1 /\ (ge_balance_positive_swap_thirdfirstreal) = 0) /\ (ge_balance_negative_swap_thirdfirstreal) = S ge_signed_half_swap_thirdfirstrealdecode))) /\ ((ge_first_rp_swap_third) + ge_balance_negative_swap_thirdfirstreal = (ge_first_rn_swap_third) + ge_balance_positive_swap_thirdfirstreal))) /\ (exists ge_balance_positive_swap_thirdfirstimaginary ge_balance_negative_swap_thirdfirstimaginary. (((((ge_representation_imaginary_code_swap_thirdfirst) = 2 * (ge_balance_positive_swap_thirdfirstimaginary) /\ (ge_balance_negative_swap_thirdfirstimaginary) = 0) \/ exists ge_signed_half_swap_thirdfirstimaginarydecode. (((ge_representation_imaginary_code_swap_thirdfirst) = 2 * ge_signed_half_swap_thirdfirstimaginarydecode + 1 /\ (ge_balance_positive_swap_thirdfirstimaginary) = 0) /\ (ge_balance_negative_swap_thirdfirstimaginary) = S ge_signed_half_swap_thirdfirstimaginarydecode))) /\ ((ge_first_ip_swap_third) + ge_balance_negative_swap_thirdfirstimaginary = (ge_first_in_swap_third) + ge_balance_positive_swap_thirdfirstimaginary)))))) /\ ((exists ge_representation_real_code_swap_thirdsecond ge_representation_imaginary_code_swap_thirdsecond. (((c) = ((ge_representation_real_code_swap_thirdsecond) + (ge_representation_imaginary_code_swap_thirdsecond)) * S ((ge_representation_real_code_swap_thirdsecond) + (ge_representation_imaginary_code_swap_thirdsecond)) + ((ge_representation_imaginary_code_swap_thirdsecond) + (ge_representation_imaginary_code_swap_thirdsecond))) /\ ((exists ge_balance_positive_swap_thirdsecondreal ge_balance_negative_swap_thirdsecondreal. (((((ge_representation_real_code_swap_thirdsecond) = 2 * (ge_balance_positive_swap_thirdsecondreal) /\ (ge_balance_negative_swap_thirdsecondreal) = 0) \/ exists ge_signed_half_swap_thirdsecondrealdecode. (((ge_representation_real_code_swap_thirdsecond) = 2 * ge_signed_half_swap_thirdsecondrealdecode + 1 /\ (ge_balance_positive_swap_thirdsecondreal) = 0) /\ (ge_balance_negative_swap_thirdsecondreal) = S ge_signed_half_swap_thirdsecondrealdecode))) /\ ((ge_second_rp_swap_third) + ge_balance_negative_swap_thirdsecondreal = (ge_second_rn_swap_third) + ge_balance_positive_swap_thirdsecondreal))) /\ (exists ge_balance_positive_swap_thirdsecondimaginary ge_balance_negative_swap_thirdsecondimaginary. (((((ge_representation_imaginary_code_swap_thirdsecond) = 2 * (ge_balance_positive_swap_thirdsecondimaginary) /\ (ge_balance_negative_swap_thirdsecondimaginary) = 0) \/ exists ge_signed_half_swap_thirdsecondimaginarydecode. (((ge_representation_imaginary_code_swap_thirdsecond) = 2 * ge_signed_half_swap_thirdsecondimaginarydecode + 1 /\ (ge_balance_positive_swap_thirdsecondimaginary) = 0) /\ (ge_balance_negative_swap_thirdsecondimaginary) = S ge_signed_half_swap_thirdsecondimaginarydecode))) /\ ((ge_second_ip_swap_third) + ge_balance_negative_swap_thirdsecondimaginary = (ge_second_in_swap_third) + ge_balance_positive_swap_thirdsecondimaginary)))))) /\ (exists ge_representation_real_code_swap_thirdoutput ge_representation_imaginary_code_swap_thirdoutput. (((ac) = ((ge_representation_real_code_swap_thirdoutput) + (ge_representation_imaginary_code_swap_thirdoutput)) * S ((ge_representation_real_code_swap_thirdoutput) + (ge_representation_imaginary_code_swap_thirdoutput)) + ((ge_representation_imaginary_code_swap_thirdoutput) + (ge_representation_imaginary_code_swap_thirdoutput))) /\ ((exists ge_balance_positive_swap_thirdoutputreal ge_balance_negative_swap_thirdoutputreal. (((((ge_representation_real_code_swap_thirdoutput) = 2 * (ge_balance_positive_swap_thirdoutputreal) /\ (ge_balance_negative_swap_thirdoutputreal) = 0) \/ exists ge_signed_half_swap_thirdoutputrealdecode. (((ge_representation_real_code_swap_thirdoutput) = 2 * ge_signed_half_swap_thirdoutputrealdecode + 1 /\ (ge_balance_positive_swap_thirdoutputreal) = 0) /\ (ge_balance_negative_swap_thirdoutputreal) = S ge_signed_half_swap_thirdoutputrealdecode))) /\ ((((((((ge_first_rp_swap_third) * (ge_second_rp_swap_third))) + (((ge_first_rn_swap_third) * (ge_second_rn_swap_third))))) + (((((ge_first_ip_swap_third) * (ge_second_in_swap_third))) + (((ge_first_in_swap_third) * (ge_second_ip_swap_third))))))) + ge_balance_negative_swap_thirdoutputreal = (((((((ge_first_rp_swap_third) * (ge_second_rn_swap_third))) + (((ge_first_rn_swap_third) * (ge_second_rp_swap_third))))) + (((((ge_first_ip_swap_third) * (ge_second_ip_swap_third))) + (((ge_first_in_swap_third) * (ge_second_in_swap_third))))))) + ge_balance_positive_swap_thirdoutputreal))) /\ (exists ge_balance_positive_swap_thirdoutputimaginary ge_balance_negative_swap_thirdoutputimaginary. (((((ge_representation_imaginary_code_swap_thirdoutput) = 2 * (ge_balance_positive_swap_thirdoutputimaginary) /\ (ge_balance_negative_swap_thirdoutputimaginary) = 0) \/ exists ge_signed_half_swap_thirdoutputimaginarydecode. (((ge_representation_imaginary_code_swap_thirdoutput) = 2 * ge_signed_half_swap_thirdoutputimaginarydecode + 1 /\ (ge_balance_positive_swap_thirdoutputimaginary) = 0) /\ (ge_balance_negative_swap_thirdoutputimaginary) = S ge_signed_half_swap_thirdoutputimaginarydecode))) /\ ((((((((ge_first_rp_swap_third) * (ge_second_ip_swap_third))) + (((ge_first_rn_swap_third) * (ge_second_in_swap_third))))) + (((((ge_first_ip_swap_third) * (ge_second_rp_swap_third))) + (((ge_first_in_swap_third) * (ge_second_rn_swap_third))))))) + ge_balance_negative_swap_thirdoutputimaginary = (((((((ge_first_rp_swap_third) * (ge_second_in_swap_third))) + (((ge_first_rn_swap_third) * (ge_second_ip_swap_third))))) + (((((ge_first_ip_swap_third) * (ge_second_rn_swap_third))) + (((ge_first_in_swap_third) * (ge_second_rp_swap_third))))))) + ge_balance_positive_swap_thirdoutputimaginary))))))))) -> (exists ge_first_rp_swap_result ge_first_rn_swap_result ge_first_ip_swap_result ge_first_in_swap_result ge_second_rp_swap_result ge_second_rn_swap_result ge_second_ip_swap_result ge_second_in_swap_result. ((exists ge_representation_real_code_swap_resultfirst ge_representation_imaginary_code_swap_resultfirst. (((ac) = ((ge_representation_real_code_swap_resultfirst) + (ge_representation_imaginary_code_swap_resultfirst)) * S ((ge_representation_real_code_swap_resultfirst) + (ge_representation_imaginary_code_swap_resultfirst)) + ((ge_representation_imaginary_code_swap_resultfirst) + (ge_representation_imaginary_code_swap_resultfirst))) /\ ((exists ge_balance_positive_swap_resultfirstreal ge_balance_negative_swap_resultfirstreal. (((((ge_representation_real_code_swap_resultfirst) = 2 * (ge_balance_positive_swap_resultfirstreal) /\ (ge_balance_negative_swap_resultfirstreal) = 0) \/ exists ge_signed_half_swap_resultfirstrealdecode. (((ge_representation_real_code_swap_resultfirst) = 2 * ge_signed_half_swap_resultfirstrealdecode + 1 /\ (ge_balance_positive_swap_resultfirstreal) = 0) /\ (ge_balance_negative_swap_resultfirstreal) = S ge_signed_half_swap_resultfirstrealdecode))) /\ ((ge_first_rp_swap_result) + ge_balance_negative_swap_resultfirstreal = (ge_first_rn_swap_result) + ge_balance_positive_swap_resultfirstreal))) /\ (exists ge_balance_positive_swap_resultfirstimaginary ge_balance_negative_swap_resultfirstimaginary. (((((ge_representation_imaginary_code_swap_resultfirst) = 2 * (ge_balance_positive_swap_resultfirstimaginary) /\ (ge_balance_negative_swap_resultfirstimaginary) = 0) \/ exists ge_signed_half_swap_resultfirstimaginarydecode. (((ge_representation_imaginary_code_swap_resultfirst) = 2 * ge_signed_half_swap_resultfirstimaginarydecode + 1 /\ (ge_balance_positive_swap_resultfirstimaginary) = 0) /\ (ge_balance_negative_swap_resultfirstimaginary) = S ge_signed_half_swap_resultfirstimaginarydecode))) /\ ((ge_first_ip_swap_result) + ge_balance_negative_swap_resultfirstimaginary = (ge_first_in_swap_result) + ge_balance_positive_swap_resultfirstimaginary)))))) /\ ((exists ge_representation_real_code_swap_resultsecond ge_representation_imaginary_code_swap_resultsecond. (((b) = ((ge_representation_real_code_swap_resultsecond) + (ge_representation_imaginary_code_swap_resultsecond)) * S ((ge_representation_real_code_swap_resultsecond) + (ge_representation_imaginary_code_swap_resultsecond)) + ((ge_representation_imaginary_code_swap_resultsecond) + (ge_representation_imaginary_code_swap_resultsecond))) /\ ((exists ge_balance_positive_swap_resultsecondreal ge_balance_negative_swap_resultsecondreal. (((((ge_representation_real_code_swap_resultsecond) = 2 * (ge_balance_positive_swap_resultsecondreal) /\ (ge_balance_negative_swap_resultsecondreal) = 0) \/ exists ge_signed_half_swap_resultsecondrealdecode. (((ge_representation_real_code_swap_resultsecond) = 2 * ge_signed_half_swap_resultsecondrealdecode + 1 /\ (ge_balance_positive_swap_resultsecondreal) = 0) /\ (ge_balance_negative_swap_resultsecondreal) = S ge_signed_half_swap_resultsecondrealdecode))) /\ ((ge_second_rp_swap_result) + ge_balance_negative_swap_resultsecondreal = (ge_second_rn_swap_result) + ge_balance_positive_swap_resultsecondreal))) /\ (exists ge_balance_positive_swap_resultsecondimaginary ge_balance_negative_swap_resultsecondimaginary. (((((ge_representation_imaginary_code_swap_resultsecond) = 2 * (ge_balance_positive_swap_resultsecondimaginary) /\ (ge_balance_negative_swap_resultsecondimaginary) = 0) \/ exists ge_signed_half_swap_resultsecondimaginarydecode. (((ge_representation_imaginary_code_swap_resultsecond) = 2 * ge_signed_half_swap_resultsecondimaginarydecode + 1 /\ (ge_balance_positive_swap_resultsecondimaginary) = 0) /\ (ge_balance_negative_swap_resultsecondimaginary) = S ge_signed_half_swap_resultsecondimaginarydecode))) /\ ((ge_second_ip_swap_result) + ge_balance_negative_swap_resultsecondimaginary = (ge_second_in_swap_result) + ge_balance_positive_swap_resultsecondimaginary)))))) /\ (exists ge_representation_real_code_swap_resultoutput ge_representation_imaginary_code_swap_resultoutput. (((t) = ((ge_representation_real_code_swap_resultoutput) + (ge_representation_imaginary_code_swap_resultoutput)) * S ((ge_representation_real_code_swap_resultoutput) + (ge_representation_imaginary_code_swap_resultoutput)) + ((ge_representation_imaginary_code_swap_resultoutput) + (ge_representation_imaginary_code_swap_resultoutput))) /\ ((exists ge_balance_positive_swap_resultoutputreal ge_balance_negative_swap_resultoutputreal. (((((ge_representation_real_code_swap_resultoutput) = 2 * (ge_balance_positive_swap_resultoutputreal) /\ (ge_balance_negative_swap_resultoutputreal) = 0) \/ exists ge_signed_half_swap_resultoutputrealdecode. (((ge_representation_real_code_swap_resultoutput) = 2 * ge_signed_half_swap_resultoutputrealdecode + 1 /\ (ge_balance_positive_swap_resultoutputreal) = 0) /\ (ge_balance_negative_swap_resultoutputreal) = S ge_signed_half_swap_resultoutputrealdecode))) /\ ((((((((ge_first_rp_swap_result) * (ge_second_rp_swap_result))) + (((ge_first_rn_swap_result) * (ge_second_rn_swap_result))))) + (((((ge_first_ip_swap_result) * (ge_second_in_swap_result))) + (((ge_first_in_swap_result) * (ge_second_ip_swap_result))))))) + ge_balance_negative_swap_resultoutputreal = (((((((ge_first_rp_swap_result) * (ge_second_rn_swap_result))) + (((ge_first_rn_swap_result) * (ge_second_rp_swap_result))))) + (((((ge_first_ip_swap_result) * (ge_second_ip_swap_result))) + (((ge_first_in_swap_result) * (ge_second_in_swap_result))))))) + ge_balance_positive_swap_resultoutputreal))) /\ (exists ge_balance_positive_swap_resultoutputimaginary ge_balance_negative_swap_resultoutputimaginary. (((((ge_representation_imaginary_code_swap_resultoutput) = 2 * (ge_balance_positive_swap_resultoutputimaginary) /\ (ge_balance_negative_swap_resultoutputimaginary) = 0) \/ exists ge_signed_half_swap_resultoutputimaginarydecode. (((ge_representation_imaginary_code_swap_resultoutput) = 2 * ge_signed_half_swap_resultoutputimaginarydecode + 1 /\ (ge_balance_positive_swap_resultoutputimaginary) = 0) /\ (ge_balance_negative_swap_resultoutputimaginary) = S ge_signed_half_swap_resultoutputimaginarydecode))) /\ ((((((((ge_first_rp_swap_result) * (ge_second_ip_swap_result))) + (((ge_first_rn_swap_result) * (ge_second_in_swap_result))))) + (((((ge_first_ip_swap_result) * (ge_second_rp_swap_result))) + (((ge_first_in_swap_result) * (ge_second_rn_swap_result))))))) + ge_balance_negative_swap_resultoutputimaginary = (((((((ge_first_rp_swap_result) * (ge_second_in_swap_result))) + (((ge_first_rn_swap_result) * (ge_second_ip_swap_result))))) + (((((ge_first_ip_swap_result) * (ge_second_rn_swap_result))) + (((ge_first_in_swap_result) * (ge_second_rp_swap_result))))))) + ge_balance_positive_swap_resultoutputimaginary)))))))))

Complete tactic proof in conservative notation

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

49 script commands · 7 reading checkpoints · 2 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 (4)
01Fix variables and assumptionsL1–9

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

  1. L1
    intro a
  2. L2
    intro b
  3. L3
    intro c
  4. L4
    intro ab
  5. L5
    intro ac
  6. L6
    intro t
  7. L7
    intro hAB
  8. L8
    intro hABC
  9. L9
    intro hAC
02Establish hBCL10–19

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

  1. L10
    have hBC : ∃ u. GMul(b,c,u)Definitions: GMul(b,c,u)Original native command in the exact edition
  2. L11
    specialize gaussian_multiply_exists (b)
  3. L12
    specialize gaussian_multiply_exists (c)
  4. L13
    apply gaussian_multiply_exists
  5. L14
    specialize gaussian_multiply_input_right_valid (a)
  6. L15
    specialize gaussian_multiply_input_right_valid (b)
  7. L16
    specialize gaussian_multiply_input_right_valid (ab)
  8. L17
    apply gaussian_multiply_input_right_valid
  9. L18
    exact hAB
  10. L19
    specialize gaussian_multiply_input_right_valid (ab)
03Use earlier factsL20–23

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

  1. L20
    specialize gaussian_multiply_input_right_valid (c)
  2. L21
    specialize gaussian_multiply_input_right_valid (t)
  3. L22
    apply gaussian_multiply_input_right_valid
  4. L23
    exact hABC
04Separate the logical casesL24–24

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

  1. L24
    cases hBC
05Establish hTL25–34

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

  1. L25
  2. L26
    specialize gaussian_multiply_associative (a)
  3. L27
    specialize gaussian_multiply_associative (b)
  4. L28
    specialize gaussian_multiply_associative (c)
  5. L29
    specialize gaussian_multiply_associative (ab)
  6. L30
    specialize gaussian_multiply_associative (x)
  7. L31
    specialize gaussian_multiply_associative (t)
  8. L32
    apply gaussian_multiply_associative
  9. L33
    exact hAB
  10. L34
    exact hABC
06Use earlier factsL35–44

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

  1. L35
    exact hBC_witness
  2. L36
    specialize gaussian_multiply_associative_reverse (a)
  3. L37
    specialize gaussian_multiply_associative_reverse (c)
  4. L38
    specialize gaussian_multiply_associative_reverse (b)
  5. L39
    specialize gaussian_multiply_associative_reverse (ac)
  6. L40
    specialize gaussian_multiply_associative_reverse (x)
  7. L41
    specialize gaussian_multiply_associative_reverse (t)
  8. L42
    apply gaussian_multiply_associative_reverse
  9. L43
    exact hAC
  10. L44
    specialize gaussian_multiply_commutative (b)
07Use earlier factsL45–49

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

  1. L45
    specialize gaussian_multiply_commutative (c)
  2. L46
    specialize gaussian_multiply_commutative (x)
  3. L47
    apply gaussian_multiply_commutative
  4. L48
    exact hBC_witness
  5. L49
    exact hT

Library-wide reading audit

Original defined command ledger · 49 lines
  1. 0001intro a
  2. 0002intro b
  3. 0003intro c
  4. 0004intro ab
  5. 0005intro ac
  6. 0006intro t
  7. 0007intro hAB
  8. 0008intro hABC
  9. 0009intro hAC
  10. 0010have hBC : ∃ u. GMul(b,c,u)
  11. 0011specialize gaussian_multiply_exists (b)
  12. 0012specialize gaussian_multiply_exists (c)
  13. 0013apply gaussian_multiply_exists
  14. 0014specialize gaussian_multiply_input_right_valid (a)
  15. 0015specialize gaussian_multiply_input_right_valid (b)
  16. 0016specialize gaussian_multiply_input_right_valid (ab)
  17. 0017apply gaussian_multiply_input_right_valid
  18. 0018exact hAB
  19. 0019specialize gaussian_multiply_input_right_valid (ab)
  20. 0020specialize gaussian_multiply_input_right_valid (c)
  21. 0021specialize gaussian_multiply_input_right_valid (t)
  22. 0022apply gaussian_multiply_input_right_valid
  23. 0023exact hABC
  24. 0024cases hBC
  25. 0025have hT : GMul(a,x,t)
  26. 0026specialize gaussian_multiply_associative (a)
  27. 0027specialize gaussian_multiply_associative (b)
  28. 0028specialize gaussian_multiply_associative (c)
  29. 0029specialize gaussian_multiply_associative (ab)
  30. 0030specialize gaussian_multiply_associative (x)
  31. 0031specialize gaussian_multiply_associative (t)
  32. 0032apply gaussian_multiply_associative
  33. 0033exact hAB
  34. 0034exact hABC
  35. 0035exact hBC_witness
  36. 0036specialize gaussian_multiply_associative_reverse (a)
  37. 0037specialize gaussian_multiply_associative_reverse (c)
  38. 0038specialize gaussian_multiply_associative_reverse (b)
  39. 0039specialize gaussian_multiply_associative_reverse (ac)
  40. 0040specialize gaussian_multiply_associative_reverse (x)
  41. 0041specialize gaussian_multiply_associative_reverse (t)
  42. 0042apply gaussian_multiply_associative_reverse
  43. 0043exact hAC
  44. 0044specialize gaussian_multiply_commutative (b)
  45. 0045specialize gaussian_multiply_commutative (c)
  46. 0046specialize gaussian_multiply_commutative (x)
  47. 0047apply gaussian_multiply_commutative
  48. 0048exact hBC_witness
  49. 0049exact hT