ND0166

GMul(a,b,c)

Actual Gaussian multiplication: (a+bi)(c+di)=(ac−bd)+(ad+bc)i, with canonical pair-code outputs.

Conservative notation; not a theorem, primitive, or axiom.

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.

Definition in prerequisite notation

∃ ge_first_rp_lowerlayer. ∃ ge_first_rn_lowerlayer. ∃ ge_first_ip_lowerlayer. ∃ ge_first_in_lowerlayer. ∃ ge_second_rp_lowerlayer. ∃ ge_second_rn_lowerlayer. ∃ ge_second_ip_lowerlayer. ∃ ge_second_in_lowerlayer. ZPairRep(a,ge_first_rp_lowerlayer,ge_first_rn_lowerlayer,ge_first_ip_lowerlayer,ge_first_in_lowerlayer) ∧ (ZPairRep(b,ge_second_rp_lowerlayer,ge_second_rn_lowerlayer,ge_second_ip_lowerlayer,ge_second_in_lowerlayer)ZPairRep(c,ge_first_rp_lowerlayer · ge_second_rp_lowerlayer + ge_first_rn_lowerlayer · ge_second_rn_lowerlayer + (ge_first_ip_lowerlayer · ge_second_in_lowerlayer + ge_first_in_lowerlayer · ge_second_ip_lowerlayer),ge_first_rp_lowerlayer · ge_second_rn_lowerlayer + ge_first_rn_lowerlayer · ge_second_rp_lowerlayer + (ge_first_ip_lowerlayer · ge_second_ip_lowerlayer + ge_first_in_lowerlayer · ge_second_in_lowerlayer),ge_first_rp_lowerlayer · ge_second_ip_lowerlayer + ge_first_rn_lowerlayer · ge_second_in_lowerlayer + (ge_first_ip_lowerlayer · ge_second_rp_lowerlayer + ge_first_in_lowerlayer · ge_second_rn_lowerlayer),ge_first_rp_lowerlayer · ge_second_in_lowerlayer + ge_first_rn_lowerlayer · ge_second_ip_lowerlayer + (ge_first_ip_lowerlayer · ge_second_rn_lowerlayer + ge_first_in_lowerlayer · ge_second_rp_lowerlayer)))

Only definitions earlier in this acyclic notation graph are used here.

Hygienic expanded first-order definition
exists ge_first_rp_lowerlayer ge_first_rn_lowerlayer ge_first_ip_lowerlayer ge_first_in_lowerlayer ge_second_rp_lowerlayer ge_second_rn_lowerlayer ge_second_ip_lowerlayer ge_second_in_lowerlayer. ((exists ge_representation_real_code_lowerlayerfirst ge_representation_imaginary_code_lowerlayerfirst. (((a) = ((ge_representation_real_code_lowerlayerfirst) + (ge_representation_imaginary_code_lowerlayerfirst)) * S ((ge_representation_real_code_lowerlayerfirst) + (ge_representation_imaginary_code_lowerlayerfirst)) + ((ge_representation_imaginary_code_lowerlayerfirst) + (ge_representation_imaginary_code_lowerlayerfirst))) /\ ((exists ge_balance_positive_lowerlayerfirstreal ge_balance_negative_lowerlayerfirstreal. (((((ge_representation_real_code_lowerlayerfirst) = 2 * (ge_balance_positive_lowerlayerfirstreal) /\ (ge_balance_negative_lowerlayerfirstreal) = 0) \/ exists ge_signed_half_lowerlayerfirstrealdecode. (((ge_representation_real_code_lowerlayerfirst) = 2 * ge_signed_half_lowerlayerfirstrealdecode + 1 /\ (ge_balance_positive_lowerlayerfirstreal) = 0) /\ (ge_balance_negative_lowerlayerfirstreal) = S ge_signed_half_lowerlayerfirstrealdecode))) /\ ((ge_first_rp_lowerlayer) + ge_balance_negative_lowerlayerfirstreal = (ge_first_rn_lowerlayer) + ge_balance_positive_lowerlayerfirstreal))) /\ (exists ge_balance_positive_lowerlayerfirstimaginary ge_balance_negative_lowerlayerfirstimaginary. (((((ge_representation_imaginary_code_lowerlayerfirst) = 2 * (ge_balance_positive_lowerlayerfirstimaginary) /\ (ge_balance_negative_lowerlayerfirstimaginary) = 0) \/ exists ge_signed_half_lowerlayerfirstimaginarydecode. (((ge_representation_imaginary_code_lowerlayerfirst) = 2 * ge_signed_half_lowerlayerfirstimaginarydecode + 1 /\ (ge_balance_positive_lowerlayerfirstimaginary) = 0) /\ (ge_balance_negative_lowerlayerfirstimaginary) = S ge_signed_half_lowerlayerfirstimaginarydecode))) /\ ((ge_first_ip_lowerlayer) + ge_balance_negative_lowerlayerfirstimaginary = (ge_first_in_lowerlayer) + ge_balance_positive_lowerlayerfirstimaginary)))))) /\ ((exists ge_representation_real_code_lowerlayersecond ge_representation_imaginary_code_lowerlayersecond. (((b) = ((ge_representation_real_code_lowerlayersecond) + (ge_representation_imaginary_code_lowerlayersecond)) * S ((ge_representation_real_code_lowerlayersecond) + (ge_representation_imaginary_code_lowerlayersecond)) + ((ge_representation_imaginary_code_lowerlayersecond) + (ge_representation_imaginary_code_lowerlayersecond))) /\ ((exists ge_balance_positive_lowerlayersecondreal ge_balance_negative_lowerlayersecondreal. (((((ge_representation_real_code_lowerlayersecond) = 2 * (ge_balance_positive_lowerlayersecondreal) /\ (ge_balance_negative_lowerlayersecondreal) = 0) \/ exists ge_signed_half_lowerlayersecondrealdecode. (((ge_representation_real_code_lowerlayersecond) = 2 * ge_signed_half_lowerlayersecondrealdecode + 1 /\ (ge_balance_positive_lowerlayersecondreal) = 0) /\ (ge_balance_negative_lowerlayersecondreal) = S ge_signed_half_lowerlayersecondrealdecode))) /\ ((ge_second_rp_lowerlayer) + ge_balance_negative_lowerlayersecondreal = (ge_second_rn_lowerlayer) + ge_balance_positive_lowerlayersecondreal))) /\ (exists ge_balance_positive_lowerlayersecondimaginary ge_balance_negative_lowerlayersecondimaginary. (((((ge_representation_imaginary_code_lowerlayersecond) = 2 * (ge_balance_positive_lowerlayersecondimaginary) /\ (ge_balance_negative_lowerlayersecondimaginary) = 0) \/ exists ge_signed_half_lowerlayersecondimaginarydecode. (((ge_representation_imaginary_code_lowerlayersecond) = 2 * ge_signed_half_lowerlayersecondimaginarydecode + 1 /\ (ge_balance_positive_lowerlayersecondimaginary) = 0) /\ (ge_balance_negative_lowerlayersecondimaginary) = S ge_signed_half_lowerlayersecondimaginarydecode))) /\ ((ge_second_ip_lowerlayer) + ge_balance_negative_lowerlayersecondimaginary = (ge_second_in_lowerlayer) + ge_balance_positive_lowerlayersecondimaginary)))))) /\ (exists ge_representation_real_code_lowerlayeroutput ge_representation_imaginary_code_lowerlayeroutput. (((c) = ((ge_representation_real_code_lowerlayeroutput) + (ge_representation_imaginary_code_lowerlayeroutput)) * S ((ge_representation_real_code_lowerlayeroutput) + (ge_representation_imaginary_code_lowerlayeroutput)) + ((ge_representation_imaginary_code_lowerlayeroutput) + (ge_representation_imaginary_code_lowerlayeroutput))) /\ ((exists ge_balance_positive_lowerlayeroutputreal ge_balance_negative_lowerlayeroutputreal. (((((ge_representation_real_code_lowerlayeroutput) = 2 * (ge_balance_positive_lowerlayeroutputreal) /\ (ge_balance_negative_lowerlayeroutputreal) = 0) \/ exists ge_signed_half_lowerlayeroutputrealdecode. (((ge_representation_real_code_lowerlayeroutput) = 2 * ge_signed_half_lowerlayeroutputrealdecode + 1 /\ (ge_balance_positive_lowerlayeroutputreal) = 0) /\ (ge_balance_negative_lowerlayeroutputreal) = S ge_signed_half_lowerlayeroutputrealdecode))) /\ ((((((((ge_first_rp_lowerlayer) * (ge_second_rp_lowerlayer))) + (((ge_first_rn_lowerlayer) * (ge_second_rn_lowerlayer))))) + (((((ge_first_ip_lowerlayer) * (ge_second_in_lowerlayer))) + (((ge_first_in_lowerlayer) * (ge_second_ip_lowerlayer))))))) + ge_balance_negative_lowerlayeroutputreal = (((((((ge_first_rp_lowerlayer) * (ge_second_rn_lowerlayer))) + (((ge_first_rn_lowerlayer) * (ge_second_rp_lowerlayer))))) + (((((ge_first_ip_lowerlayer) * (ge_second_ip_lowerlayer))) + (((ge_first_in_lowerlayer) * (ge_second_in_lowerlayer))))))) + ge_balance_positive_lowerlayeroutputreal))) /\ (exists ge_balance_positive_lowerlayeroutputimaginary ge_balance_negative_lowerlayeroutputimaginary. (((((ge_representation_imaginary_code_lowerlayeroutput) = 2 * (ge_balance_positive_lowerlayeroutputimaginary) /\ (ge_balance_negative_lowerlayeroutputimaginary) = 0) \/ exists ge_signed_half_lowerlayeroutputimaginarydecode. (((ge_representation_imaginary_code_lowerlayeroutput) = 2 * ge_signed_half_lowerlayeroutputimaginarydecode + 1 /\ (ge_balance_positive_lowerlayeroutputimaginary) = 0) /\ (ge_balance_negative_lowerlayeroutputimaginary) = S ge_signed_half_lowerlayeroutputimaginarydecode))) /\ ((((((((ge_first_rp_lowerlayer) * (ge_second_ip_lowerlayer))) + (((ge_first_rn_lowerlayer) * (ge_second_in_lowerlayer))))) + (((((ge_first_ip_lowerlayer) * (ge_second_rp_lowerlayer))) + (((ge_first_in_lowerlayer) * (ge_second_rn_lowerlayer))))))) + ge_balance_negative_lowerlayeroutputimaginary = (((((((ge_first_rp_lowerlayer) * (ge_second_in_lowerlayer))) + (((ge_first_rn_lowerlayer) * (ge_second_ip_lowerlayer))))) + (((((ge_first_ip_lowerlayer) * (ge_second_rn_lowerlayer))) + (((ge_first_in_lowerlayer) * (ge_second_rp_lowerlayer))))))) + ge_balance_positive_lowerlayeroutputimaginary))))))))

The unchanged native kernel never receives this surface symbol. Binder-safe expansion produces only its existing first-order syntax.

Direct definition dependencies

Definitions depending on this notation

Checked theorems using this definition

GF0007 · gaussian_multiply_input_left_validGF0008 · gaussian_multiply_input_right_validGF0009 · gaussian_multiply_output_validGF0014 · gaussian_multiply_commutativeGF001F · gaussian_multiply_zero_implies_zero_factorGF0025 · gaussian_multiply_associativeGF0028 · gaussian_multiply_one_rightGF0029 · gaussian_multiply_one_leftGF002A · gaussian_multiply_zero_rightGF002B · gaussian_multiply_zero_leftGF002F · gaussian_multiply_output_transportGF0030 · gaussian_multiply_associative_reverseGF0031 · gaussian_multiply_swap_tailGF0037 · gaussian_multiply_add_composeGF0038 · gaussian_multiply_add_distributeGF0039 · gaussian_multiply_add_distribute_rightGF003B · gaussian_multiply_cancel_leftGF003C · gaussian_multiply_cancel_rightGF003E · gaussian_unit_inverseGF003F · gaussian_unit_productGF0040 · gaussian_unit_factor_leftGF0041 · gaussian_unit_factor_rightGF0048 · gaussian_divides_transitiveGF0049 · gaussian_divides_product_leftGF004A · gaussian_divides_product_rightGF004C · gaussian_common_divisor_subtractGF004F · gaussian_common_divisor_euclidean_forwardGF0050 · gaussian_common_divisor_euclidean_backwardGF0051 · gaussian_division_zero_remainder_dividesGF0052 · gaussian_division_divisible_remainder_zeroGF0053 · gaussian_divides_decidableGF0055 · gaussian_associate_symmetricGF0056 · gaussian_associate_transitiveGF0057 · gaussian_associate_of_unit_cofactorGF005A · gaussian_mutual_divisibility_associateGF005B · gaussian_divisor_norm_factorGF005C · gaussian_divisor_norm_boundGF0062 · gaussian_gcd_euclidean_backwardGF0063 · gaussian_bezout_euclidean_backwardGF0064 · gaussian_gcd_bezout_bounded_existsGF0067 · gaussian_bezout_unit_divisor_cancelGF0068 · gaussian_nonzero_product_divisor_unit_cofactorGF0069 · gaussian_irreducible_dvd_productGF007B · gaussian_nonunit_factor_is_proper_norm_divisorGF007D · gaussian_proper_norm_divisor_splitGF0082 · gaussian_nonunit_divisor_strict_quotientGF0083 · gaussian_irreducible_factor_reductionGF0089 · gaussian_product_successor_decomposeGF008A · gaussian_product_successor_introGF008D · gaussian_product_functionalGF008E · gaussian_product_result_validGF0093 · gaussian_factorization_append_irreducibleGF0094 · gaussian_irreducible_factorization_bounded_normGF009A · gaussian_all_irreducible_product_existsGF009B · gaussian_all_irreducible_product_nonzeroGF009C · gaussian_all_irreducible_product_unit_length_zeroGF009F · gaussian_irreducible_divisor_product_memberGF00A0 · gaussian_product_replace_balanceGF00A1 · gaussian_product_replace_balance_iffGF00A2 · gaussian_product_swap_last_invariantGF00A5 · gaussian_factor_associate_cancel_productsGF00A6 · gaussian_product_decompose_at_lastGF00AF · gaussian_irreducible_products_associate_unique