GF0030

gaussian_multiply_associative_reverse

Alpha v34 independently verified · alpha_closed; checked-use authorized; not Stable

Actual Gaussian products can be reassociated in the reverse direction without assuming the unknown intermediate result.

Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.

Exact expanded first-order arithmetic statement

forall a b c ab bc t. (exists ge_first_rp_reverse_assoc_first ge_first_rn_reverse_assoc_first ge_first_ip_reverse_assoc_first ge_first_in_reverse_assoc_first ge_second_rp_reverse_assoc_first ge_second_rn_reverse_assoc_first ge_second_ip_reverse_assoc_first ge_second_in_reverse_assoc_first. ((exists ge_representation_real_code_reverse_assoc_firstfirst ge_representation_imaginary_code_reverse_assoc_firstfirst. (((a) = ((ge_representation_real_code_reverse_assoc_firstfirst) + (ge_representation_imaginary_code_reverse_assoc_firstfirst)) * S ((ge_representation_real_code_reverse_assoc_firstfirst) + (ge_representation_imaginary_code_reverse_assoc_firstfirst)) + ((ge_representation_imaginary_code_reverse_assoc_firstfirst) + (ge_representation_imaginary_code_reverse_assoc_firstfirst))) /\ ((exists ge_balance_positive_reverse_assoc_firstfirstreal ge_balance_negative_reverse_assoc_firstfirstreal. (((((ge_representation_real_code_reverse_assoc_firstfirst) = 2 * (ge_balance_positive_reverse_assoc_firstfirstreal) /\ (ge_balance_negative_reverse_assoc_firstfirstreal) = 0) \/ exists ge_signed_half_reverse_assoc_firstfirstrealdecode. (((ge_representation_real_code_reverse_assoc_firstfirst) = 2 * ge_signed_half_reverse_assoc_firstfirstrealdecode + 1 /\ (ge_balance_positive_reverse_assoc_firstfirstreal) = 0) /\ (ge_balance_negative_reverse_assoc_firstfirstreal) = S ge_signed_half_reverse_assoc_firstfirstrealdecode))) /\ ((ge_first_rp_reverse_assoc_first) + ge_balance_negative_reverse_assoc_firstfirstreal = (ge_first_rn_reverse_assoc_first) + ge_balance_positive_reverse_assoc_firstfirstreal))) /\ (exists ge_balance_positive_reverse_assoc_firstfirstimaginary ge_balance_negative_reverse_assoc_firstfirstimaginary. (((((ge_representation_imaginary_code_reverse_assoc_firstfirst) = 2 * (ge_balance_positive_reverse_assoc_firstfirstimaginary) /\ (ge_balance_negative_reverse_assoc_firstfirstimaginary) = 0) \/ exists ge_signed_half_reverse_assoc_firstfirstimaginarydecode. (((ge_representation_imaginary_code_reverse_assoc_firstfirst) = 2 * ge_signed_half_reverse_assoc_firstfirstimaginarydecode + 1 /\ (ge_balance_positive_reverse_assoc_firstfirstimaginary) = 0) /\ (ge_balance_negative_reverse_assoc_firstfirstimaginary) = S ge_signed_half_reverse_assoc_firstfirstimaginarydecode))) /\ ((ge_first_ip_reverse_assoc_first) + ge_balance_negative_reverse_assoc_firstfirstimaginary = (ge_first_in_reverse_assoc_first) + ge_balance_positive_reverse_assoc_firstfirstimaginary)))))) /\ ((exists ge_representation_real_code_reverse_assoc_firstsecond ge_representation_imaginary_code_reverse_assoc_firstsecond. (((b) = ((ge_representation_real_code_reverse_assoc_firstsecond) + (ge_representation_imaginary_code_reverse_assoc_firstsecond)) * S ((ge_representation_real_code_reverse_assoc_firstsecond) + (ge_representation_imaginary_code_reverse_assoc_firstsecond)) + ((ge_representation_imaginary_code_reverse_assoc_firstsecond) + (ge_representation_imaginary_code_reverse_assoc_firstsecond))) /\ ((exists ge_balance_positive_reverse_assoc_firstsecondreal ge_balance_negative_reverse_assoc_firstsecondreal. (((((ge_representation_real_code_reverse_assoc_firstsecond) = 2 * (ge_balance_positive_reverse_assoc_firstsecondreal) /\ (ge_balance_negative_reverse_assoc_firstsecondreal) = 0) \/ exists ge_signed_half_reverse_assoc_firstsecondrealdecode. (((ge_representation_real_code_reverse_assoc_firstsecond) = 2 * ge_signed_half_reverse_assoc_firstsecondrealdecode + 1 /\ (ge_balance_positive_reverse_assoc_firstsecondreal) = 0) /\ (ge_balance_negative_reverse_assoc_firstsecondreal) = S ge_signed_half_reverse_assoc_firstsecondrealdecode))) /\ ((ge_second_rp_reverse_assoc_first) + ge_balance_negative_reverse_assoc_firstsecondreal = (ge_second_rn_reverse_assoc_first) + ge_balance_positive_reverse_assoc_firstsecondreal))) /\ (exists ge_balance_positive_reverse_assoc_firstsecondimaginary ge_balance_negative_reverse_assoc_firstsecondimaginary. (((((ge_representation_imaginary_code_reverse_assoc_firstsecond) = 2 * (ge_balance_positive_reverse_assoc_firstsecondimaginary) /\ (ge_balance_negative_reverse_assoc_firstsecondimaginary) = 0) \/ exists ge_signed_half_reverse_assoc_firstsecondimaginarydecode. (((ge_representation_imaginary_code_reverse_assoc_firstsecond) = 2 * ge_signed_half_reverse_assoc_firstsecondimaginarydecode + 1 /\ (ge_balance_positive_reverse_assoc_firstsecondimaginary) = 0) /\ (ge_balance_negative_reverse_assoc_firstsecondimaginary) = S ge_signed_half_reverse_assoc_firstsecondimaginarydecode))) /\ ((ge_second_ip_reverse_assoc_first) + ge_balance_negative_reverse_assoc_firstsecondimaginary = (ge_second_in_reverse_assoc_first) + ge_balance_positive_reverse_assoc_firstsecondimaginary)))))) /\ (exists ge_representation_real_code_reverse_assoc_firstoutput ge_representation_imaginary_code_reverse_assoc_firstoutput. (((ab) = ((ge_representation_real_code_reverse_assoc_firstoutput) + (ge_representation_imaginary_code_reverse_assoc_firstoutput)) * S ((ge_representation_real_code_reverse_assoc_firstoutput) + (ge_representation_imaginary_code_reverse_assoc_firstoutput)) + ((ge_representation_imaginary_code_reverse_assoc_firstoutput) + (ge_representation_imaginary_code_reverse_assoc_firstoutput))) /\ ((exists ge_balance_positive_reverse_assoc_firstoutputreal ge_balance_negative_reverse_assoc_firstoutputreal. (((((ge_representation_real_code_reverse_assoc_firstoutput) = 2 * (ge_balance_positive_reverse_assoc_firstoutputreal) /\ (ge_balance_negative_reverse_assoc_firstoutputreal) = 0) \/ exists ge_signed_half_reverse_assoc_firstoutputrealdecode. (((ge_representation_real_code_reverse_assoc_firstoutput) = 2 * ge_signed_half_reverse_assoc_firstoutputrealdecode + 1 /\ (ge_balance_positive_reverse_assoc_firstoutputreal) = 0) /\ (ge_balance_negative_reverse_assoc_firstoutputreal) = S ge_signed_half_reverse_assoc_firstoutputrealdecode))) /\ ((((((((ge_first_rp_reverse_assoc_first) * (ge_second_rp_reverse_assoc_first))) + (((ge_first_rn_reverse_assoc_first) * (ge_second_rn_reverse_assoc_first))))) + (((((ge_first_ip_reverse_assoc_first) * (ge_second_in_reverse_assoc_first))) + (((ge_first_in_reverse_assoc_first) * (ge_second_ip_reverse_assoc_first))))))) + ge_balance_negative_reverse_assoc_firstoutputreal = (((((((ge_first_rp_reverse_assoc_first) * (ge_second_rn_reverse_assoc_first))) + (((ge_first_rn_reverse_assoc_first) * (ge_second_rp_reverse_assoc_first))))) + (((((ge_first_ip_reverse_assoc_first) * (ge_second_ip_reverse_assoc_first))) + (((ge_first_in_reverse_assoc_first) * (ge_second_in_reverse_assoc_first))))))) + ge_balance_positive_reverse_assoc_firstoutputreal))) /\ (exists ge_balance_positive_reverse_assoc_firstoutputimaginary ge_balance_negative_reverse_assoc_firstoutputimaginary. (((((ge_representation_imaginary_code_reverse_assoc_firstoutput) = 2 * (ge_balance_positive_reverse_assoc_firstoutputimaginary) /\ (ge_balance_negative_reverse_assoc_firstoutputimaginary) = 0) \/ exists ge_signed_half_reverse_assoc_firstoutputimaginarydecode. (((ge_representation_imaginary_code_reverse_assoc_firstoutput) = 2 * ge_signed_half_reverse_assoc_firstoutputimaginarydecode + 1 /\ (ge_balance_positive_reverse_assoc_firstoutputimaginary) = 0) /\ (ge_balance_negative_reverse_assoc_firstoutputimaginary) = S ge_signed_half_reverse_assoc_firstoutputimaginarydecode))) /\ ((((((((ge_first_rp_reverse_assoc_first) * (ge_second_ip_reverse_assoc_first))) + (((ge_first_rn_reverse_assoc_first) * (ge_second_in_reverse_assoc_first))))) + (((((ge_first_ip_reverse_assoc_first) * (ge_second_rp_reverse_assoc_first))) + (((ge_first_in_reverse_assoc_first) * (ge_second_rn_reverse_assoc_first))))))) + ge_balance_negative_reverse_assoc_firstoutputimaginary = (((((((ge_first_rp_reverse_assoc_first) * (ge_second_in_reverse_assoc_first))) + (((ge_first_rn_reverse_assoc_first) * (ge_second_ip_reverse_assoc_first))))) + (((((ge_first_ip_reverse_assoc_first) * (ge_second_rn_reverse_assoc_first))) + (((ge_first_in_reverse_assoc_first) * (ge_second_rp_reverse_assoc_first))))))) + ge_balance_positive_reverse_assoc_firstoutputimaginary))))))))) -> (exists ge_first_rp_reverse_assoc_second ge_first_rn_reverse_assoc_second ge_first_ip_reverse_assoc_second ge_first_in_reverse_assoc_second ge_second_rp_reverse_assoc_second ge_second_rn_reverse_assoc_second ge_second_ip_reverse_assoc_second ge_second_in_reverse_assoc_second. ((exists ge_representation_real_code_reverse_assoc_secondfirst ge_representation_imaginary_code_reverse_assoc_secondfirst. (((b) = ((ge_representation_real_code_reverse_assoc_secondfirst) + (ge_representation_imaginary_code_reverse_assoc_secondfirst)) * S ((ge_representation_real_code_reverse_assoc_secondfirst) + (ge_representation_imaginary_code_reverse_assoc_secondfirst)) + ((ge_representation_imaginary_code_reverse_assoc_secondfirst) + (ge_representation_imaginary_code_reverse_assoc_secondfirst))) /\ ((exists ge_balance_positive_reverse_assoc_secondfirstreal ge_balance_negative_reverse_assoc_secondfirstreal. (((((ge_representation_real_code_reverse_assoc_secondfirst) = 2 * (ge_balance_positive_reverse_assoc_secondfirstreal) /\ (ge_balance_negative_reverse_assoc_secondfirstreal) = 0) \/ exists ge_signed_half_reverse_assoc_secondfirstrealdecode. (((ge_representation_real_code_reverse_assoc_secondfirst) = 2 * ge_signed_half_reverse_assoc_secondfirstrealdecode + 1 /\ (ge_balance_positive_reverse_assoc_secondfirstreal) = 0) /\ (ge_balance_negative_reverse_assoc_secondfirstreal) = S ge_signed_half_reverse_assoc_secondfirstrealdecode))) /\ ((ge_first_rp_reverse_assoc_second) + ge_balance_negative_reverse_assoc_secondfirstreal = (ge_first_rn_reverse_assoc_second) + ge_balance_positive_reverse_assoc_secondfirstreal))) /\ (exists ge_balance_positive_reverse_assoc_secondfirstimaginary ge_balance_negative_reverse_assoc_secondfirstimaginary. (((((ge_representation_imaginary_code_reverse_assoc_secondfirst) = 2 * (ge_balance_positive_reverse_assoc_secondfirstimaginary) /\ (ge_balance_negative_reverse_assoc_secondfirstimaginary) = 0) \/ exists ge_signed_half_reverse_assoc_secondfirstimaginarydecode. (((ge_representation_imaginary_code_reverse_assoc_secondfirst) = 2 * ge_signed_half_reverse_assoc_secondfirstimaginarydecode + 1 /\ (ge_balance_positive_reverse_assoc_secondfirstimaginary) = 0) /\ (ge_balance_negative_reverse_assoc_secondfirstimaginary) = S ge_signed_half_reverse_assoc_secondfirstimaginarydecode))) /\ ((ge_first_ip_reverse_assoc_second) + ge_balance_negative_reverse_assoc_secondfirstimaginary = (ge_first_in_reverse_assoc_second) + ge_balance_positive_reverse_assoc_secondfirstimaginary)))))) /\ ((exists ge_representation_real_code_reverse_assoc_secondsecond ge_representation_imaginary_code_reverse_assoc_secondsecond. (((c) = ((ge_representation_real_code_reverse_assoc_secondsecond) + (ge_representation_imaginary_code_reverse_assoc_secondsecond)) * S ((ge_representation_real_code_reverse_assoc_secondsecond) + (ge_representation_imaginary_code_reverse_assoc_secondsecond)) + ((ge_representation_imaginary_code_reverse_assoc_secondsecond) + (ge_representation_imaginary_code_reverse_assoc_secondsecond))) /\ ((exists ge_balance_positive_reverse_assoc_secondsecondreal ge_balance_negative_reverse_assoc_secondsecondreal. (((((ge_representation_real_code_reverse_assoc_secondsecond) = 2 * (ge_balance_positive_reverse_assoc_secondsecondreal) /\ (ge_balance_negative_reverse_assoc_secondsecondreal) = 0) \/ exists ge_signed_half_reverse_assoc_secondsecondrealdecode. (((ge_representation_real_code_reverse_assoc_secondsecond) = 2 * ge_signed_half_reverse_assoc_secondsecondrealdecode + 1 /\ (ge_balance_positive_reverse_assoc_secondsecondreal) = 0) /\ (ge_balance_negative_reverse_assoc_secondsecondreal) = S ge_signed_half_reverse_assoc_secondsecondrealdecode))) /\ ((ge_second_rp_reverse_assoc_second) + ge_balance_negative_reverse_assoc_secondsecondreal = (ge_second_rn_reverse_assoc_second) + ge_balance_positive_reverse_assoc_secondsecondreal))) /\ (exists ge_balance_positive_reverse_assoc_secondsecondimaginary ge_balance_negative_reverse_assoc_secondsecondimaginary. (((((ge_representation_imaginary_code_reverse_assoc_secondsecond) = 2 * (ge_balance_positive_reverse_assoc_secondsecondimaginary) /\ (ge_balance_negative_reverse_assoc_secondsecondimaginary) = 0) \/ exists ge_signed_half_reverse_assoc_secondsecondimaginarydecode. (((ge_representation_imaginary_code_reverse_assoc_secondsecond) = 2 * ge_signed_half_reverse_assoc_secondsecondimaginarydecode + 1 /\ (ge_balance_positive_reverse_assoc_secondsecondimaginary) = 0) /\ (ge_balance_negative_reverse_assoc_secondsecondimaginary) = S ge_signed_half_reverse_assoc_secondsecondimaginarydecode))) /\ ((ge_second_ip_reverse_assoc_second) + ge_balance_negative_reverse_assoc_secondsecondimaginary = (ge_second_in_reverse_assoc_second) + ge_balance_positive_reverse_assoc_secondsecondimaginary)))))) /\ (exists ge_representation_real_code_reverse_assoc_secondoutput ge_representation_imaginary_code_reverse_assoc_secondoutput. (((bc) = ((ge_representation_real_code_reverse_assoc_secondoutput) + (ge_representation_imaginary_code_reverse_assoc_secondoutput)) * S ((ge_representation_real_code_reverse_assoc_secondoutput) + (ge_representation_imaginary_code_reverse_assoc_secondoutput)) + ((ge_representation_imaginary_code_reverse_assoc_secondoutput) + (ge_representation_imaginary_code_reverse_assoc_secondoutput))) /\ ((exists ge_balance_positive_reverse_assoc_secondoutputreal ge_balance_negative_reverse_assoc_secondoutputreal. (((((ge_representation_real_code_reverse_assoc_secondoutput) = 2 * (ge_balance_positive_reverse_assoc_secondoutputreal) /\ (ge_balance_negative_reverse_assoc_secondoutputreal) = 0) \/ exists ge_signed_half_reverse_assoc_secondoutputrealdecode. (((ge_representation_real_code_reverse_assoc_secondoutput) = 2 * ge_signed_half_reverse_assoc_secondoutputrealdecode + 1 /\ (ge_balance_positive_reverse_assoc_secondoutputreal) = 0) /\ (ge_balance_negative_reverse_assoc_secondoutputreal) = S ge_signed_half_reverse_assoc_secondoutputrealdecode))) /\ ((((((((ge_first_rp_reverse_assoc_second) * (ge_second_rp_reverse_assoc_second))) + (((ge_first_rn_reverse_assoc_second) * (ge_second_rn_reverse_assoc_second))))) + (((((ge_first_ip_reverse_assoc_second) * (ge_second_in_reverse_assoc_second))) + (((ge_first_in_reverse_assoc_second) * (ge_second_ip_reverse_assoc_second))))))) + ge_balance_negative_reverse_assoc_secondoutputreal = (((((((ge_first_rp_reverse_assoc_second) * (ge_second_rn_reverse_assoc_second))) + (((ge_first_rn_reverse_assoc_second) * (ge_second_rp_reverse_assoc_second))))) + (((((ge_first_ip_reverse_assoc_second) * (ge_second_ip_reverse_assoc_second))) + (((ge_first_in_reverse_assoc_second) * (ge_second_in_reverse_assoc_second))))))) + ge_balance_positive_reverse_assoc_secondoutputreal))) /\ (exists ge_balance_positive_reverse_assoc_secondoutputimaginary ge_balance_negative_reverse_assoc_secondoutputimaginary. (((((ge_representation_imaginary_code_reverse_assoc_secondoutput) = 2 * (ge_balance_positive_reverse_assoc_secondoutputimaginary) /\ (ge_balance_negative_reverse_assoc_secondoutputimaginary) = 0) \/ exists ge_signed_half_reverse_assoc_secondoutputimaginarydecode. (((ge_representation_imaginary_code_reverse_assoc_secondoutput) = 2 * ge_signed_half_reverse_assoc_secondoutputimaginarydecode + 1 /\ (ge_balance_positive_reverse_assoc_secondoutputimaginary) = 0) /\ (ge_balance_negative_reverse_assoc_secondoutputimaginary) = S ge_signed_half_reverse_assoc_secondoutputimaginarydecode))) /\ ((((((((ge_first_rp_reverse_assoc_second) * (ge_second_ip_reverse_assoc_second))) + (((ge_first_rn_reverse_assoc_second) * (ge_second_in_reverse_assoc_second))))) + (((((ge_first_ip_reverse_assoc_second) * (ge_second_rp_reverse_assoc_second))) + (((ge_first_in_reverse_assoc_second) * (ge_second_rn_reverse_assoc_second))))))) + ge_balance_negative_reverse_assoc_secondoutputimaginary = (((((((ge_first_rp_reverse_assoc_second) * (ge_second_in_reverse_assoc_second))) + (((ge_first_rn_reverse_assoc_second) * (ge_second_ip_reverse_assoc_second))))) + (((((ge_first_ip_reverse_assoc_second) * (ge_second_rn_reverse_assoc_second))) + (((ge_first_in_reverse_assoc_second) * (ge_second_rp_reverse_assoc_second))))))) + ge_balance_positive_reverse_assoc_secondoutputimaginary))))))))) -> (exists ge_first_rp_reverse_assoc_third ge_first_rn_reverse_assoc_third ge_first_ip_reverse_assoc_third ge_first_in_reverse_assoc_third ge_second_rp_reverse_assoc_third ge_second_rn_reverse_assoc_third ge_second_ip_reverse_assoc_third ge_second_in_reverse_assoc_third. ((exists ge_representation_real_code_reverse_assoc_thirdfirst ge_representation_imaginary_code_reverse_assoc_thirdfirst. (((a) = ((ge_representation_real_code_reverse_assoc_thirdfirst) + (ge_representation_imaginary_code_reverse_assoc_thirdfirst)) * S ((ge_representation_real_code_reverse_assoc_thirdfirst) + (ge_representation_imaginary_code_reverse_assoc_thirdfirst)) + ((ge_representation_imaginary_code_reverse_assoc_thirdfirst) + (ge_representation_imaginary_code_reverse_assoc_thirdfirst))) /\ ((exists ge_balance_positive_reverse_assoc_thirdfirstreal ge_balance_negative_reverse_assoc_thirdfirstreal. (((((ge_representation_real_code_reverse_assoc_thirdfirst) = 2 * (ge_balance_positive_reverse_assoc_thirdfirstreal) /\ (ge_balance_negative_reverse_assoc_thirdfirstreal) = 0) \/ exists ge_signed_half_reverse_assoc_thirdfirstrealdecode. (((ge_representation_real_code_reverse_assoc_thirdfirst) = 2 * ge_signed_half_reverse_assoc_thirdfirstrealdecode + 1 /\ (ge_balance_positive_reverse_assoc_thirdfirstreal) = 0) /\ (ge_balance_negative_reverse_assoc_thirdfirstreal) = S ge_signed_half_reverse_assoc_thirdfirstrealdecode))) /\ ((ge_first_rp_reverse_assoc_third) + ge_balance_negative_reverse_assoc_thirdfirstreal = (ge_first_rn_reverse_assoc_third) + ge_balance_positive_reverse_assoc_thirdfirstreal))) /\ (exists ge_balance_positive_reverse_assoc_thirdfirstimaginary ge_balance_negative_reverse_assoc_thirdfirstimaginary. (((((ge_representation_imaginary_code_reverse_assoc_thirdfirst) = 2 * (ge_balance_positive_reverse_assoc_thirdfirstimaginary) /\ (ge_balance_negative_reverse_assoc_thirdfirstimaginary) = 0) \/ exists ge_signed_half_reverse_assoc_thirdfirstimaginarydecode. (((ge_representation_imaginary_code_reverse_assoc_thirdfirst) = 2 * ge_signed_half_reverse_assoc_thirdfirstimaginarydecode + 1 /\ (ge_balance_positive_reverse_assoc_thirdfirstimaginary) = 0) /\ (ge_balance_negative_reverse_assoc_thirdfirstimaginary) = S ge_signed_half_reverse_assoc_thirdfirstimaginarydecode))) /\ ((ge_first_ip_reverse_assoc_third) + ge_balance_negative_reverse_assoc_thirdfirstimaginary = (ge_first_in_reverse_assoc_third) + ge_balance_positive_reverse_assoc_thirdfirstimaginary)))))) /\ ((exists ge_representation_real_code_reverse_assoc_thirdsecond ge_representation_imaginary_code_reverse_assoc_thirdsecond. (((bc) = ((ge_representation_real_code_reverse_assoc_thirdsecond) + (ge_representation_imaginary_code_reverse_assoc_thirdsecond)) * S ((ge_representation_real_code_reverse_assoc_thirdsecond) + (ge_representation_imaginary_code_reverse_assoc_thirdsecond)) + ((ge_representation_imaginary_code_reverse_assoc_thirdsecond) + (ge_representation_imaginary_code_reverse_assoc_thirdsecond))) /\ ((exists ge_balance_positive_reverse_assoc_thirdsecondreal ge_balance_negative_reverse_assoc_thirdsecondreal. (((((ge_representation_real_code_reverse_assoc_thirdsecond) = 2 * (ge_balance_positive_reverse_assoc_thirdsecondreal) /\ (ge_balance_negative_reverse_assoc_thirdsecondreal) = 0) \/ exists ge_signed_half_reverse_assoc_thirdsecondrealdecode. (((ge_representation_real_code_reverse_assoc_thirdsecond) = 2 * ge_signed_half_reverse_assoc_thirdsecondrealdecode + 1 /\ (ge_balance_positive_reverse_assoc_thirdsecondreal) = 0) /\ (ge_balance_negative_reverse_assoc_thirdsecondreal) = S ge_signed_half_reverse_assoc_thirdsecondrealdecode))) /\ ((ge_second_rp_reverse_assoc_third) + ge_balance_negative_reverse_assoc_thirdsecondreal = (ge_second_rn_reverse_assoc_third) + ge_balance_positive_reverse_assoc_thirdsecondreal))) /\ (exists ge_balance_positive_reverse_assoc_thirdsecondimaginary ge_balance_negative_reverse_assoc_thirdsecondimaginary. (((((ge_representation_imaginary_code_reverse_assoc_thirdsecond) = 2 * (ge_balance_positive_reverse_assoc_thirdsecondimaginary) /\ (ge_balance_negative_reverse_assoc_thirdsecondimaginary) = 0) \/ exists ge_signed_half_reverse_assoc_thirdsecondimaginarydecode. (((ge_representation_imaginary_code_reverse_assoc_thirdsecond) = 2 * ge_signed_half_reverse_assoc_thirdsecondimaginarydecode + 1 /\ (ge_balance_positive_reverse_assoc_thirdsecondimaginary) = 0) /\ (ge_balance_negative_reverse_assoc_thirdsecondimaginary) = S ge_signed_half_reverse_assoc_thirdsecondimaginarydecode))) /\ ((ge_second_ip_reverse_assoc_third) + ge_balance_negative_reverse_assoc_thirdsecondimaginary = (ge_second_in_reverse_assoc_third) + ge_balance_positive_reverse_assoc_thirdsecondimaginary)))))) /\ (exists ge_representation_real_code_reverse_assoc_thirdoutput ge_representation_imaginary_code_reverse_assoc_thirdoutput. (((t) = ((ge_representation_real_code_reverse_assoc_thirdoutput) + (ge_representation_imaginary_code_reverse_assoc_thirdoutput)) * S ((ge_representation_real_code_reverse_assoc_thirdoutput) + (ge_representation_imaginary_code_reverse_assoc_thirdoutput)) + ((ge_representation_imaginary_code_reverse_assoc_thirdoutput) + (ge_representation_imaginary_code_reverse_assoc_thirdoutput))) /\ ((exists ge_balance_positive_reverse_assoc_thirdoutputreal ge_balance_negative_reverse_assoc_thirdoutputreal. (((((ge_representation_real_code_reverse_assoc_thirdoutput) = 2 * (ge_balance_positive_reverse_assoc_thirdoutputreal) /\ (ge_balance_negative_reverse_assoc_thirdoutputreal) = 0) \/ exists ge_signed_half_reverse_assoc_thirdoutputrealdecode. (((ge_representation_real_code_reverse_assoc_thirdoutput) = 2 * ge_signed_half_reverse_assoc_thirdoutputrealdecode + 1 /\ (ge_balance_positive_reverse_assoc_thirdoutputreal) = 0) /\ (ge_balance_negative_reverse_assoc_thirdoutputreal) = S ge_signed_half_reverse_assoc_thirdoutputrealdecode))) /\ ((((((((ge_first_rp_reverse_assoc_third) * (ge_second_rp_reverse_assoc_third))) + (((ge_first_rn_reverse_assoc_third) * (ge_second_rn_reverse_assoc_third))))) + (((((ge_first_ip_reverse_assoc_third) * (ge_second_in_reverse_assoc_third))) + (((ge_first_in_reverse_assoc_third) * (ge_second_ip_reverse_assoc_third))))))) + ge_balance_negative_reverse_assoc_thirdoutputreal = (((((((ge_first_rp_reverse_assoc_third) * (ge_second_rn_reverse_assoc_third))) + (((ge_first_rn_reverse_assoc_third) * (ge_second_rp_reverse_assoc_third))))) + (((((ge_first_ip_reverse_assoc_third) * (ge_second_ip_reverse_assoc_third))) + (((ge_first_in_reverse_assoc_third) * (ge_second_in_reverse_assoc_third))))))) + ge_balance_positive_reverse_assoc_thirdoutputreal))) /\ (exists ge_balance_positive_reverse_assoc_thirdoutputimaginary ge_balance_negative_reverse_assoc_thirdoutputimaginary. (((((ge_representation_imaginary_code_reverse_assoc_thirdoutput) = 2 * (ge_balance_positive_reverse_assoc_thirdoutputimaginary) /\ (ge_balance_negative_reverse_assoc_thirdoutputimaginary) = 0) \/ exists ge_signed_half_reverse_assoc_thirdoutputimaginarydecode. (((ge_representation_imaginary_code_reverse_assoc_thirdoutput) = 2 * ge_signed_half_reverse_assoc_thirdoutputimaginarydecode + 1 /\ (ge_balance_positive_reverse_assoc_thirdoutputimaginary) = 0) /\ (ge_balance_negative_reverse_assoc_thirdoutputimaginary) = S ge_signed_half_reverse_assoc_thirdoutputimaginarydecode))) /\ ((((((((ge_first_rp_reverse_assoc_third) * (ge_second_ip_reverse_assoc_third))) + (((ge_first_rn_reverse_assoc_third) * (ge_second_in_reverse_assoc_third))))) + (((((ge_first_ip_reverse_assoc_third) * (ge_second_rp_reverse_assoc_third))) + (((ge_first_in_reverse_assoc_third) * (ge_second_rn_reverse_assoc_third))))))) + ge_balance_negative_reverse_assoc_thirdoutputimaginary = (((((((ge_first_rp_reverse_assoc_third) * (ge_second_in_reverse_assoc_third))) + (((ge_first_rn_reverse_assoc_third) * (ge_second_ip_reverse_assoc_third))))) + (((((ge_first_ip_reverse_assoc_third) * (ge_second_rn_reverse_assoc_third))) + (((ge_first_in_reverse_assoc_third) * (ge_second_rp_reverse_assoc_third))))))) + ge_balance_positive_reverse_assoc_thirdoutputimaginary))))))))) -> (exists ge_first_rp_reverse_assoc_result ge_first_rn_reverse_assoc_result ge_first_ip_reverse_assoc_result ge_first_in_reverse_assoc_result ge_second_rp_reverse_assoc_result ge_second_rn_reverse_assoc_result ge_second_ip_reverse_assoc_result ge_second_in_reverse_assoc_result. ((exists ge_representation_real_code_reverse_assoc_resultfirst ge_representation_imaginary_code_reverse_assoc_resultfirst. (((ab) = ((ge_representation_real_code_reverse_assoc_resultfirst) + (ge_representation_imaginary_code_reverse_assoc_resultfirst)) * S ((ge_representation_real_code_reverse_assoc_resultfirst) + (ge_representation_imaginary_code_reverse_assoc_resultfirst)) + ((ge_representation_imaginary_code_reverse_assoc_resultfirst) + (ge_representation_imaginary_code_reverse_assoc_resultfirst))) /\ ((exists ge_balance_positive_reverse_assoc_resultfirstreal ge_balance_negative_reverse_assoc_resultfirstreal. (((((ge_representation_real_code_reverse_assoc_resultfirst) = 2 * (ge_balance_positive_reverse_assoc_resultfirstreal) /\ (ge_balance_negative_reverse_assoc_resultfirstreal) = 0) \/ exists ge_signed_half_reverse_assoc_resultfirstrealdecode. (((ge_representation_real_code_reverse_assoc_resultfirst) = 2 * ge_signed_half_reverse_assoc_resultfirstrealdecode + 1 /\ (ge_balance_positive_reverse_assoc_resultfirstreal) = 0) /\ (ge_balance_negative_reverse_assoc_resultfirstreal) = S ge_signed_half_reverse_assoc_resultfirstrealdecode))) /\ ((ge_first_rp_reverse_assoc_result) + ge_balance_negative_reverse_assoc_resultfirstreal = (ge_first_rn_reverse_assoc_result) + ge_balance_positive_reverse_assoc_resultfirstreal))) /\ (exists ge_balance_positive_reverse_assoc_resultfirstimaginary ge_balance_negative_reverse_assoc_resultfirstimaginary. (((((ge_representation_imaginary_code_reverse_assoc_resultfirst) = 2 * (ge_balance_positive_reverse_assoc_resultfirstimaginary) /\ (ge_balance_negative_reverse_assoc_resultfirstimaginary) = 0) \/ exists ge_signed_half_reverse_assoc_resultfirstimaginarydecode. (((ge_representation_imaginary_code_reverse_assoc_resultfirst) = 2 * ge_signed_half_reverse_assoc_resultfirstimaginarydecode + 1 /\ (ge_balance_positive_reverse_assoc_resultfirstimaginary) = 0) /\ (ge_balance_negative_reverse_assoc_resultfirstimaginary) = S ge_signed_half_reverse_assoc_resultfirstimaginarydecode))) /\ ((ge_first_ip_reverse_assoc_result) + ge_balance_negative_reverse_assoc_resultfirstimaginary = (ge_first_in_reverse_assoc_result) + ge_balance_positive_reverse_assoc_resultfirstimaginary)))))) /\ ((exists ge_representation_real_code_reverse_assoc_resultsecond ge_representation_imaginary_code_reverse_assoc_resultsecond. (((c) = ((ge_representation_real_code_reverse_assoc_resultsecond) + (ge_representation_imaginary_code_reverse_assoc_resultsecond)) * S ((ge_representation_real_code_reverse_assoc_resultsecond) + (ge_representation_imaginary_code_reverse_assoc_resultsecond)) + ((ge_representation_imaginary_code_reverse_assoc_resultsecond) + (ge_representation_imaginary_code_reverse_assoc_resultsecond))) /\ ((exists ge_balance_positive_reverse_assoc_resultsecondreal ge_balance_negative_reverse_assoc_resultsecondreal. (((((ge_representation_real_code_reverse_assoc_resultsecond) = 2 * (ge_balance_positive_reverse_assoc_resultsecondreal) /\ (ge_balance_negative_reverse_assoc_resultsecondreal) = 0) \/ exists ge_signed_half_reverse_assoc_resultsecondrealdecode. (((ge_representation_real_code_reverse_assoc_resultsecond) = 2 * ge_signed_half_reverse_assoc_resultsecondrealdecode + 1 /\ (ge_balance_positive_reverse_assoc_resultsecondreal) = 0) /\ (ge_balance_negative_reverse_assoc_resultsecondreal) = S ge_signed_half_reverse_assoc_resultsecondrealdecode))) /\ ((ge_second_rp_reverse_assoc_result) + ge_balance_negative_reverse_assoc_resultsecondreal = (ge_second_rn_reverse_assoc_result) + ge_balance_positive_reverse_assoc_resultsecondreal))) /\ (exists ge_balance_positive_reverse_assoc_resultsecondimaginary ge_balance_negative_reverse_assoc_resultsecondimaginary. (((((ge_representation_imaginary_code_reverse_assoc_resultsecond) = 2 * (ge_balance_positive_reverse_assoc_resultsecondimaginary) /\ (ge_balance_negative_reverse_assoc_resultsecondimaginary) = 0) \/ exists ge_signed_half_reverse_assoc_resultsecondimaginarydecode. (((ge_representation_imaginary_code_reverse_assoc_resultsecond) = 2 * ge_signed_half_reverse_assoc_resultsecondimaginarydecode + 1 /\ (ge_balance_positive_reverse_assoc_resultsecondimaginary) = 0) /\ (ge_balance_negative_reverse_assoc_resultsecondimaginary) = S ge_signed_half_reverse_assoc_resultsecondimaginarydecode))) /\ ((ge_second_ip_reverse_assoc_result) + ge_balance_negative_reverse_assoc_resultsecondimaginary = (ge_second_in_reverse_assoc_result) + ge_balance_positive_reverse_assoc_resultsecondimaginary)))))) /\ (exists ge_representation_real_code_reverse_assoc_resultoutput ge_representation_imaginary_code_reverse_assoc_resultoutput. (((t) = ((ge_representation_real_code_reverse_assoc_resultoutput) + (ge_representation_imaginary_code_reverse_assoc_resultoutput)) * S ((ge_representation_real_code_reverse_assoc_resultoutput) + (ge_representation_imaginary_code_reverse_assoc_resultoutput)) + ((ge_representation_imaginary_code_reverse_assoc_resultoutput) + (ge_representation_imaginary_code_reverse_assoc_resultoutput))) /\ ((exists ge_balance_positive_reverse_assoc_resultoutputreal ge_balance_negative_reverse_assoc_resultoutputreal. (((((ge_representation_real_code_reverse_assoc_resultoutput) = 2 * (ge_balance_positive_reverse_assoc_resultoutputreal) /\ (ge_balance_negative_reverse_assoc_resultoutputreal) = 0) \/ exists ge_signed_half_reverse_assoc_resultoutputrealdecode. (((ge_representation_real_code_reverse_assoc_resultoutput) = 2 * ge_signed_half_reverse_assoc_resultoutputrealdecode + 1 /\ (ge_balance_positive_reverse_assoc_resultoutputreal) = 0) /\ (ge_balance_negative_reverse_assoc_resultoutputreal) = S ge_signed_half_reverse_assoc_resultoutputrealdecode))) /\ ((((((((ge_first_rp_reverse_assoc_result) * (ge_second_rp_reverse_assoc_result))) + (((ge_first_rn_reverse_assoc_result) * (ge_second_rn_reverse_assoc_result))))) + (((((ge_first_ip_reverse_assoc_result) * (ge_second_in_reverse_assoc_result))) + (((ge_first_in_reverse_assoc_result) * (ge_second_ip_reverse_assoc_result))))))) + ge_balance_negative_reverse_assoc_resultoutputreal = (((((((ge_first_rp_reverse_assoc_result) * (ge_second_rn_reverse_assoc_result))) + (((ge_first_rn_reverse_assoc_result) * (ge_second_rp_reverse_assoc_result))))) + (((((ge_first_ip_reverse_assoc_result) * (ge_second_ip_reverse_assoc_result))) + (((ge_first_in_reverse_assoc_result) * (ge_second_in_reverse_assoc_result))))))) + ge_balance_positive_reverse_assoc_resultoutputreal))) /\ (exists ge_balance_positive_reverse_assoc_resultoutputimaginary ge_balance_negative_reverse_assoc_resultoutputimaginary. (((((ge_representation_imaginary_code_reverse_assoc_resultoutput) = 2 * (ge_balance_positive_reverse_assoc_resultoutputimaginary) /\ (ge_balance_negative_reverse_assoc_resultoutputimaginary) = 0) \/ exists ge_signed_half_reverse_assoc_resultoutputimaginarydecode. (((ge_representation_imaginary_code_reverse_assoc_resultoutput) = 2 * ge_signed_half_reverse_assoc_resultoutputimaginarydecode + 1 /\ (ge_balance_positive_reverse_assoc_resultoutputimaginary) = 0) /\ (ge_balance_negative_reverse_assoc_resultoutputimaginary) = S ge_signed_half_reverse_assoc_resultoutputimaginarydecode))) /\ ((((((((ge_first_rp_reverse_assoc_result) * (ge_second_ip_reverse_assoc_result))) + (((ge_first_rn_reverse_assoc_result) * (ge_second_in_reverse_assoc_result))))) + (((((ge_first_ip_reverse_assoc_result) * (ge_second_rp_reverse_assoc_result))) + (((ge_first_in_reverse_assoc_result) * (ge_second_rn_reverse_assoc_result))))))) + ge_balance_negative_reverse_assoc_resultoutputimaginary = (((((((ge_first_rp_reverse_assoc_result) * (ge_second_in_reverse_assoc_result))) + (((ge_first_rn_reverse_assoc_result) * (ge_second_ip_reverse_assoc_result))))) + (((((ge_first_ip_reverse_assoc_result) * (ge_second_rn_reverse_assoc_result))) + (((ge_first_in_reverse_assoc_result) * (ge_second_rp_reverse_assoc_result))))))) + ge_balance_positive_reverse_assoc_resultoutputimaginary)))))))))

Constructive proof overview

Generated structural guide

Actual Gaussian products can be reassociated in the reverse direction without assuming the unknown intermediate result.

The unchanged tactic script uses 6 declared prerequisites and contains 48 exact native proof lines.

Alpha v34 checked-use · first admitted v30 · independently kernel and Lean verified; not Stable

Proof neighborhood

Direct dependencies

gaussian_multiply_exists Alpha theorem; checked-use authorized GF0009 gaussian_multiply_output_valid GF0008 gaussian_multiply_input_right_valid GF0025 gaussian_multiply_associative gaussian_multiply_functional Alpha theorem; checked-use authorized GF002F gaussian_multiply_output_transport

Direct dependents

Formal native tactic body

Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.

Read the argument

Proof checkpoints

48 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.

Named ingredients (4)

Long local formulas use this family’s existing definitions. Each new abbreviation was expanded back to the identical native formula, including its free-variable context. The original edition is preserved below.

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 bc
  6. L6
    intro t
  7. L7
    intro hAB
  8. L8
    intro hBC
  9. L9
    intro hT
02Establish hproductL10–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 hproduct : ∃ u. GMul(ab,c,u)Definitions: GMul
  2. L11
    specialize gaussian_multiply_exists (ab)
  3. L12
    specialize gaussian_multiply_exists (c)
  4. L13
    apply gaussian_multiply_exists
  5. L14
    specialize gaussian_multiply_output_valid (a)
  6. L15
    specialize gaussian_multiply_output_valid (b)
  7. L16
    specialize gaussian_multiply_output_valid (ab)
  8. L17
    apply gaussian_multiply_output_valid
  9. L18
    exact hAB
  10. L19
    specialize gaussian_multiply_input_right_valid (b)
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 (bc)
  3. L22
    apply gaussian_multiply_input_right_valid
  4. L23
    exact hBC
04Separate the logical casesL24–24

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

  1. L24
    cases hproduct
05Establish heqL25–34

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

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

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

  1. L35
    specialize gaussian_multiply_associative (bc)
  2. L36
    specialize gaussian_multiply_associative (x)
  3. L37
    apply gaussian_multiply_associative
  4. L38
    exact hAB
  5. L39
    exact hproduct_witness
  6. L40
    exact hBC
  7. L41
    exact hT
  8. L42
    specialize gaussian_multiply_output_transport (ab)
  9. L43
    specialize gaussian_multiply_output_transport (c)
  10. L44
    specialize gaussian_multiply_output_transport (x)
07Use earlier factsL45–48

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

  1. L45
    specialize gaussian_multiply_output_transport (t)
  2. L46
    apply gaussian_multiply_output_transport
  3. L47
    exact heq
  4. L48
    exact hproduct_witness

Library-wide reading audit

Original exact command ledger · 48 lines
  1. 0001intro a
  2. 0002intro b
  3. 0003intro c
  4. 0004intro ab
  5. 0005intro bc
  6. 0006intro t
  7. 0007intro hAB
  8. 0008intro hBC
  9. 0009intro hT
  10. 0010have hproduct : exists u. (exists ge_first_rp_reverse_assoc_construct ge_first_rn_reverse_assoc_construct ge_first_ip_reverse_assoc_construct ge_first_in_reverse_assoc_construct ge_second_rp_reverse_assoc_construct ge_second_rn_reverse_assoc_construct ge_second_ip_reverse_assoc_construct ge_second_in_reverse_assoc_construct. ((exists ge_representation_real_code_reverse_assoc_constructfirst ge_representation_imaginary_code_reverse_assoc_constructfirst. (((ab) = ((ge_representation_real_code_reverse_assoc_constructfirst) + (ge_representation_imaginary_code_reverse_assoc_constructfirst)) * S ((ge_representation_real_code_reverse_assoc_constructfirst) + (ge_representation_imaginary_code_reverse_assoc_constructfirst)) + ((ge_representation_imaginary_code_reverse_assoc_constructfirst) + (ge_representation_imaginary_code_reverse_assoc_constructfirst))) /\ ((exists ge_balance_positive_reverse_assoc_constructfirstreal ge_balance_negative_reverse_assoc_constructfirstreal. (((((ge_representation_real_code_reverse_assoc_constructfirst) = 2 * (ge_balance_positive_reverse_assoc_constructfirstreal) /\ (ge_balance_negative_reverse_assoc_constructfirstreal) = 0) \/ exists ge_signed_half_reverse_assoc_constructfirstrealdecode. (((ge_representation_real_code_reverse_assoc_constructfirst) = 2 * ge_signed_half_reverse_assoc_constructfirstrealdecode + 1 /\ (ge_balance_positive_reverse_assoc_constructfirstreal) = 0) /\ (ge_balance_negative_reverse_assoc_constructfirstreal) = S ge_signed_half_reverse_assoc_constructfirstrealdecode))) /\ ((ge_first_rp_reverse_assoc_construct) + ge_balance_negative_reverse_assoc_constructfirstreal = (ge_first_rn_reverse_assoc_construct) + ge_balance_positive_reverse_assoc_constructfirstreal))) /\ (exists ge_balance_positive_reverse_assoc_constructfirstimaginary ge_balance_negative_reverse_assoc_constructfirstimaginary. (((((ge_representation_imaginary_code_reverse_assoc_constructfirst) = 2 * (ge_balance_positive_reverse_assoc_constructfirstimaginary) /\ (ge_balance_negative_reverse_assoc_constructfirstimaginary) = 0) \/ exists ge_signed_half_reverse_assoc_constructfirstimaginarydecode. (((ge_representation_imaginary_code_reverse_assoc_constructfirst) = 2 * ge_signed_half_reverse_assoc_constructfirstimaginarydecode + 1 /\ (ge_balance_positive_reverse_assoc_constructfirstimaginary) = 0) /\ (ge_balance_negative_reverse_assoc_constructfirstimaginary) = S ge_signed_half_reverse_assoc_constructfirstimaginarydecode))) /\ ((ge_first_ip_reverse_assoc_construct) + ge_balance_negative_reverse_assoc_constructfirstimaginary = (ge_first_in_reverse_assoc_construct) + ge_balance_positive_reverse_assoc_constructfirstimaginary)))))) /\ ((exists ge_representation_real_code_reverse_assoc_constructsecond ge_representation_imaginary_code_reverse_assoc_constructsecond. (((c) = ((ge_representation_real_code_reverse_assoc_constructsecond) + (ge_representation_imaginary_code_reverse_assoc_constructsecond)) * S ((ge_representation_real_code_reverse_assoc_constructsecond) + (ge_representation_imaginary_code_reverse_assoc_constructsecond)) + ((ge_representation_imaginary_code_reverse_assoc_constructsecond) + (ge_representation_imaginary_code_reverse_assoc_constructsecond))) /\ ((exists ge_balance_positive_reverse_assoc_constructsecondreal ge_balance_negative_reverse_assoc_constructsecondreal. (((((ge_representation_real_code_reverse_assoc_constructsecond) = 2 * (ge_balance_positive_reverse_assoc_constructsecondreal) /\ (ge_balance_negative_reverse_assoc_constructsecondreal) = 0) \/ exists ge_signed_half_reverse_assoc_constructsecondrealdecode. (((ge_representation_real_code_reverse_assoc_constructsecond) = 2 * ge_signed_half_reverse_assoc_constructsecondrealdecode + 1 /\ (ge_balance_positive_reverse_assoc_constructsecondreal) = 0) /\ (ge_balance_negative_reverse_assoc_constructsecondreal) = S ge_signed_half_reverse_assoc_constructsecondrealdecode))) /\ ((ge_second_rp_reverse_assoc_construct) + ge_balance_negative_reverse_assoc_constructsecondreal = (ge_second_rn_reverse_assoc_construct) + ge_balance_positive_reverse_assoc_constructsecondreal))) /\ (exists ge_balance_positive_reverse_assoc_constructsecondimaginary ge_balance_negative_reverse_assoc_constructsecondimaginary. (((((ge_representation_imaginary_code_reverse_assoc_constructsecond) = 2 * (ge_balance_positive_reverse_assoc_constructsecondimaginary) /\ (ge_balance_negative_reverse_assoc_constructsecondimaginary) = 0) \/ exists ge_signed_half_reverse_assoc_constructsecondimaginarydecode. (((ge_representation_imaginary_code_reverse_assoc_constructsecond) = 2 * ge_signed_half_reverse_assoc_constructsecondimaginarydecode + 1 /\ (ge_balance_positive_reverse_assoc_constructsecondimaginary) = 0) /\ (ge_balance_negative_reverse_assoc_constructsecondimaginary) = S ge_signed_half_reverse_assoc_constructsecondimaginarydecode))) /\ ((ge_second_ip_reverse_assoc_construct) + ge_balance_negative_reverse_assoc_constructsecondimaginary = (ge_second_in_reverse_assoc_construct) + ge_balance_positive_reverse_assoc_constructsecondimaginary)))))) /\ (exists ge_representation_real_code_reverse_assoc_constructoutput ge_representation_imaginary_code_reverse_assoc_constructoutput. (((u) = ((ge_representation_real_code_reverse_assoc_constructoutput) + (ge_representation_imaginary_code_reverse_assoc_constructoutput)) * S ((ge_representation_real_code_reverse_assoc_constructoutput) + (ge_representation_imaginary_code_reverse_assoc_constructoutput)) + ((ge_representation_imaginary_code_reverse_assoc_constructoutput) + (ge_representation_imaginary_code_reverse_assoc_constructoutput))) /\ ((exists ge_balance_positive_reverse_assoc_constructoutputreal ge_balance_negative_reverse_assoc_constructoutputreal. (((((ge_representation_real_code_reverse_assoc_constructoutput) = 2 * (ge_balance_positive_reverse_assoc_constructoutputreal) /\ (ge_balance_negative_reverse_assoc_constructoutputreal) = 0) \/ exists ge_signed_half_reverse_assoc_constructoutputrealdecode. (((ge_representation_real_code_reverse_assoc_constructoutput) = 2 * ge_signed_half_reverse_assoc_constructoutputrealdecode + 1 /\ (ge_balance_positive_reverse_assoc_constructoutputreal) = 0) /\ (ge_balance_negative_reverse_assoc_constructoutputreal) = S ge_signed_half_reverse_assoc_constructoutputrealdecode))) /\ ((((((((ge_first_rp_reverse_assoc_construct) * (ge_second_rp_reverse_assoc_construct))) + (((ge_first_rn_reverse_assoc_construct) * (ge_second_rn_reverse_assoc_construct))))) + (((((ge_first_ip_reverse_assoc_construct) * (ge_second_in_reverse_assoc_construct))) + (((ge_first_in_reverse_assoc_construct) * (ge_second_ip_reverse_assoc_construct))))))) + ge_balance_negative_reverse_assoc_constructoutputreal = (((((((ge_first_rp_reverse_assoc_construct) * (ge_second_rn_reverse_assoc_construct))) + (((ge_first_rn_reverse_assoc_construct) * (ge_second_rp_reverse_assoc_construct))))) + (((((ge_first_ip_reverse_assoc_construct) * (ge_second_ip_reverse_assoc_construct))) + (((ge_first_in_reverse_assoc_construct) * (ge_second_in_reverse_assoc_construct))))))) + ge_balance_positive_reverse_assoc_constructoutputreal))) /\ (exists ge_balance_positive_reverse_assoc_constructoutputimaginary ge_balance_negative_reverse_assoc_constructoutputimaginary. (((((ge_representation_imaginary_code_reverse_assoc_constructoutput) = 2 * (ge_balance_positive_reverse_assoc_constructoutputimaginary) /\ (ge_balance_negative_reverse_assoc_constructoutputimaginary) = 0) \/ exists ge_signed_half_reverse_assoc_constructoutputimaginarydecode. (((ge_representation_imaginary_code_reverse_assoc_constructoutput) = 2 * ge_signed_half_reverse_assoc_constructoutputimaginarydecode + 1 /\ (ge_balance_positive_reverse_assoc_constructoutputimaginary) = 0) /\ (ge_balance_negative_reverse_assoc_constructoutputimaginary) = S ge_signed_half_reverse_assoc_constructoutputimaginarydecode))) /\ ((((((((ge_first_rp_reverse_assoc_construct) * (ge_second_ip_reverse_assoc_construct))) + (((ge_first_rn_reverse_assoc_construct) * (ge_second_in_reverse_assoc_construct))))) + (((((ge_first_ip_reverse_assoc_construct) * (ge_second_rp_reverse_assoc_construct))) + (((ge_first_in_reverse_assoc_construct) * (ge_second_rn_reverse_assoc_construct))))))) + ge_balance_negative_reverse_assoc_constructoutputimaginary = (((((((ge_first_rp_reverse_assoc_construct) * (ge_second_in_reverse_assoc_construct))) + (((ge_first_rn_reverse_assoc_construct) * (ge_second_ip_reverse_assoc_construct))))) + (((((ge_first_ip_reverse_assoc_construct) * (ge_second_rn_reverse_assoc_construct))) + (((ge_first_in_reverse_assoc_construct) * (ge_second_rp_reverse_assoc_construct))))))) + ge_balance_positive_reverse_assoc_constructoutputimaginary)))))))))
  11. 0011specialize gaussian_multiply_exists (ab)
  12. 0012specialize gaussian_multiply_exists (c)
  13. 0013apply gaussian_multiply_exists
  14. 0014specialize gaussian_multiply_output_valid (a)
  15. 0015specialize gaussian_multiply_output_valid (b)
  16. 0016specialize gaussian_multiply_output_valid (ab)
  17. 0017apply gaussian_multiply_output_valid
  18. 0018exact hAB
  19. 0019specialize gaussian_multiply_input_right_valid (b)
  20. 0020specialize gaussian_multiply_input_right_valid (c)
  21. 0021specialize gaussian_multiply_input_right_valid (bc)
  22. 0022apply gaussian_multiply_input_right_valid
  23. 0023exact hBC
  24. 0024cases hproduct
  25. 0025have heq : x=t
  26. 0026specialize gaussian_multiply_functional (a)
  27. 0027specialize gaussian_multiply_functional (bc)
  28. 0028specialize gaussian_multiply_functional (x)
  29. 0029specialize gaussian_multiply_functional (t)
  30. 0030apply gaussian_multiply_functional
  31. 0031specialize gaussian_multiply_associative (a)
  32. 0032specialize gaussian_multiply_associative (b)
  33. 0033specialize gaussian_multiply_associative (c)
  34. 0034specialize gaussian_multiply_associative (ab)
  35. 0035specialize gaussian_multiply_associative (bc)
  36. 0036specialize gaussian_multiply_associative (x)
  37. 0037apply gaussian_multiply_associative
  38. 0038exact hAB
  39. 0039exact hproduct_witness
  40. 0040exact hBC
  41. 0041exact hT
  42. 0042specialize gaussian_multiply_output_transport (ab)
  43. 0043specialize gaussian_multiply_output_transport (c)
  44. 0044specialize gaussian_multiply_output_transport (x)
  45. 0045specialize gaussian_multiply_output_transport (t)
  46. 0046apply gaussian_multiply_output_transport
  47. 0047exact heq
  48. 0048exact hproduct_witness