GF008D

gaussian_product_functional

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

Two actual Gaussian multiplication traces on the same finite beta prefix have literally equal canonical endpoint codes.

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 l b c P Q. (exists gr_product_trace_functional_first gr_product_scale_functional_first. ((((exists ff_h_gprod_functional_firststart. ff_h_gprod_functional_firststart + S (6) = S ((S (0)) * gr_product_scale_functional_first)) /\ exists ff_q_gprod_functional_firststart. gr_product_trace_functional_first = ff_q_gprod_functional_firststart * S ((S (0)) * gr_product_scale_functional_first) + (6))) /\ ((((exists ff_h_gprod_functional_firstend. ff_h_gprod_functional_firstend + S (P) = S ((S (l)) * gr_product_scale_functional_first)) /\ exists ff_q_gprod_functional_firstend. gr_product_trace_functional_first = ff_q_gprod_functional_firstend * S ((S (l)) * gr_product_scale_functional_first) + (P))) /\ (forall gr_product_index_functional_firststeps. (exists ge_gap_functional_firststepsindex_bound. ge_gap_functional_firststepsindex_bound + S (gr_product_index_functional_firststeps) = (l)) -> exists gr_product_factor_functional_firststeps gr_product_before_functional_firststeps gr_product_after_functional_firststeps. ((((exists ff_h_gprod_functional_firststepsfactor. ff_h_gprod_functional_firststepsfactor + S (gr_product_factor_functional_firststeps) = S ((S (gr_product_index_functional_firststeps)) * c)) /\ exists ff_q_gprod_functional_firststepsfactor. b = ff_q_gprod_functional_firststepsfactor * S ((S (gr_product_index_functional_firststeps)) * c) + (gr_product_factor_functional_firststeps))) /\ ((((exists ff_h_gprod_functional_firststepsbefore. ff_h_gprod_functional_firststepsbefore + S (gr_product_before_functional_firststeps) = S ((S (gr_product_index_functional_firststeps)) * gr_product_scale_functional_first)) /\ exists ff_q_gprod_functional_firststepsbefore. gr_product_trace_functional_first = ff_q_gprod_functional_firststepsbefore * S ((S (gr_product_index_functional_firststeps)) * gr_product_scale_functional_first) + (gr_product_before_functional_firststeps))) /\ ((((exists ff_h_gprod_functional_firststepsafter. ff_h_gprod_functional_firststepsafter + S (gr_product_after_functional_firststeps) = S ((S (S (gr_product_index_functional_firststeps))) * gr_product_scale_functional_first)) /\ exists ff_q_gprod_functional_firststepsafter. gr_product_trace_functional_first = ff_q_gprod_functional_firststepsafter * S ((S (S (gr_product_index_functional_firststeps))) * gr_product_scale_functional_first) + (gr_product_after_functional_firststeps))) /\ (exists ge_first_rp_functional_firststepsmultiply ge_first_rn_functional_firststepsmultiply ge_first_ip_functional_firststepsmultiply ge_first_in_functional_firststepsmultiply ge_second_rp_functional_firststepsmultiply ge_second_rn_functional_firststepsmultiply ge_second_ip_functional_firststepsmultiply ge_second_in_functional_firststepsmultiply. ((exists ge_representation_real_code_functional_firststepsmultiplyfirst ge_representation_imaginary_code_functional_firststepsmultiplyfirst. (((gr_product_before_functional_firststeps) = ((ge_representation_real_code_functional_firststepsmultiplyfirst) + (ge_representation_imaginary_code_functional_firststepsmultiplyfirst)) * S ((ge_representation_real_code_functional_firststepsmultiplyfirst) + (ge_representation_imaginary_code_functional_firststepsmultiplyfirst)) + ((ge_representation_imaginary_code_functional_firststepsmultiplyfirst) + (ge_representation_imaginary_code_functional_firststepsmultiplyfirst))) /\ ((exists ge_balance_positive_functional_firststepsmultiplyfirstreal ge_balance_negative_functional_firststepsmultiplyfirstreal. (((((ge_representation_real_code_functional_firststepsmultiplyfirst) = 2 * (ge_balance_positive_functional_firststepsmultiplyfirstreal) /\ (ge_balance_negative_functional_firststepsmultiplyfirstreal) = 0) \/ exists ge_signed_half_functional_firststepsmultiplyfirstrealdecode. (((ge_representation_real_code_functional_firststepsmultiplyfirst) = 2 * ge_signed_half_functional_firststepsmultiplyfirstrealdecode + 1 /\ (ge_balance_positive_functional_firststepsmultiplyfirstreal) = 0) /\ (ge_balance_negative_functional_firststepsmultiplyfirstreal) = S ge_signed_half_functional_firststepsmultiplyfirstrealdecode))) /\ ((ge_first_rp_functional_firststepsmultiply) + ge_balance_negative_functional_firststepsmultiplyfirstreal = (ge_first_rn_functional_firststepsmultiply) + ge_balance_positive_functional_firststepsmultiplyfirstreal))) /\ (exists ge_balance_positive_functional_firststepsmultiplyfirstimaginary ge_balance_negative_functional_firststepsmultiplyfirstimaginary. (((((ge_representation_imaginary_code_functional_firststepsmultiplyfirst) = 2 * (ge_balance_positive_functional_firststepsmultiplyfirstimaginary) /\ (ge_balance_negative_functional_firststepsmultiplyfirstimaginary) = 0) \/ exists ge_signed_half_functional_firststepsmultiplyfirstimaginarydecode. (((ge_representation_imaginary_code_functional_firststepsmultiplyfirst) = 2 * ge_signed_half_functional_firststepsmultiplyfirstimaginarydecode + 1 /\ (ge_balance_positive_functional_firststepsmultiplyfirstimaginary) = 0) /\ (ge_balance_negative_functional_firststepsmultiplyfirstimaginary) = S ge_signed_half_functional_firststepsmultiplyfirstimaginarydecode))) /\ ((ge_first_ip_functional_firststepsmultiply) + ge_balance_negative_functional_firststepsmultiplyfirstimaginary = (ge_first_in_functional_firststepsmultiply) + ge_balance_positive_functional_firststepsmultiplyfirstimaginary)))))) /\ ((exists ge_representation_real_code_functional_firststepsmultiplysecond ge_representation_imaginary_code_functional_firststepsmultiplysecond. (((gr_product_factor_functional_firststeps) = ((ge_representation_real_code_functional_firststepsmultiplysecond) + (ge_representation_imaginary_code_functional_firststepsmultiplysecond)) * S ((ge_representation_real_code_functional_firststepsmultiplysecond) + (ge_representation_imaginary_code_functional_firststepsmultiplysecond)) + ((ge_representation_imaginary_code_functional_firststepsmultiplysecond) + (ge_representation_imaginary_code_functional_firststepsmultiplysecond))) /\ ((exists ge_balance_positive_functional_firststepsmultiplysecondreal ge_balance_negative_functional_firststepsmultiplysecondreal. (((((ge_representation_real_code_functional_firststepsmultiplysecond) = 2 * (ge_balance_positive_functional_firststepsmultiplysecondreal) /\ (ge_balance_negative_functional_firststepsmultiplysecondreal) = 0) \/ exists ge_signed_half_functional_firststepsmultiplysecondrealdecode. (((ge_representation_real_code_functional_firststepsmultiplysecond) = 2 * ge_signed_half_functional_firststepsmultiplysecondrealdecode + 1 /\ (ge_balance_positive_functional_firststepsmultiplysecondreal) = 0) /\ (ge_balance_negative_functional_firststepsmultiplysecondreal) = S ge_signed_half_functional_firststepsmultiplysecondrealdecode))) /\ ((ge_second_rp_functional_firststepsmultiply) + ge_balance_negative_functional_firststepsmultiplysecondreal = (ge_second_rn_functional_firststepsmultiply) + ge_balance_positive_functional_firststepsmultiplysecondreal))) /\ (exists ge_balance_positive_functional_firststepsmultiplysecondimaginary ge_balance_negative_functional_firststepsmultiplysecondimaginary. (((((ge_representation_imaginary_code_functional_firststepsmultiplysecond) = 2 * (ge_balance_positive_functional_firststepsmultiplysecondimaginary) /\ (ge_balance_negative_functional_firststepsmultiplysecondimaginary) = 0) \/ exists ge_signed_half_functional_firststepsmultiplysecondimaginarydecode. (((ge_representation_imaginary_code_functional_firststepsmultiplysecond) = 2 * ge_signed_half_functional_firststepsmultiplysecondimaginarydecode + 1 /\ (ge_balance_positive_functional_firststepsmultiplysecondimaginary) = 0) /\ (ge_balance_negative_functional_firststepsmultiplysecondimaginary) = S ge_signed_half_functional_firststepsmultiplysecondimaginarydecode))) /\ ((ge_second_ip_functional_firststepsmultiply) + ge_balance_negative_functional_firststepsmultiplysecondimaginary = (ge_second_in_functional_firststepsmultiply) + ge_balance_positive_functional_firststepsmultiplysecondimaginary)))))) /\ (exists ge_representation_real_code_functional_firststepsmultiplyoutput ge_representation_imaginary_code_functional_firststepsmultiplyoutput. (((gr_product_after_functional_firststeps) = ((ge_representation_real_code_functional_firststepsmultiplyoutput) + (ge_representation_imaginary_code_functional_firststepsmultiplyoutput)) * S ((ge_representation_real_code_functional_firststepsmultiplyoutput) + (ge_representation_imaginary_code_functional_firststepsmultiplyoutput)) + ((ge_representation_imaginary_code_functional_firststepsmultiplyoutput) + (ge_representation_imaginary_code_functional_firststepsmultiplyoutput))) /\ ((exists ge_balance_positive_functional_firststepsmultiplyoutputreal ge_balance_negative_functional_firststepsmultiplyoutputreal. (((((ge_representation_real_code_functional_firststepsmultiplyoutput) = 2 * (ge_balance_positive_functional_firststepsmultiplyoutputreal) /\ (ge_balance_negative_functional_firststepsmultiplyoutputreal) = 0) \/ exists ge_signed_half_functional_firststepsmultiplyoutputrealdecode. (((ge_representation_real_code_functional_firststepsmultiplyoutput) = 2 * ge_signed_half_functional_firststepsmultiplyoutputrealdecode + 1 /\ (ge_balance_positive_functional_firststepsmultiplyoutputreal) = 0) /\ (ge_balance_negative_functional_firststepsmultiplyoutputreal) = S ge_signed_half_functional_firststepsmultiplyoutputrealdecode))) /\ ((((((((ge_first_rp_functional_firststepsmultiply) * (ge_second_rp_functional_firststepsmultiply))) + (((ge_first_rn_functional_firststepsmultiply) * (ge_second_rn_functional_firststepsmultiply))))) + (((((ge_first_ip_functional_firststepsmultiply) * (ge_second_in_functional_firststepsmultiply))) + (((ge_first_in_functional_firststepsmultiply) * (ge_second_ip_functional_firststepsmultiply))))))) + ge_balance_negative_functional_firststepsmultiplyoutputreal = (((((((ge_first_rp_functional_firststepsmultiply) * (ge_second_rn_functional_firststepsmultiply))) + (((ge_first_rn_functional_firststepsmultiply) * (ge_second_rp_functional_firststepsmultiply))))) + (((((ge_first_ip_functional_firststepsmultiply) * (ge_second_ip_functional_firststepsmultiply))) + (((ge_first_in_functional_firststepsmultiply) * (ge_second_in_functional_firststepsmultiply))))))) + ge_balance_positive_functional_firststepsmultiplyoutputreal))) /\ (exists ge_balance_positive_functional_firststepsmultiplyoutputimaginary ge_balance_negative_functional_firststepsmultiplyoutputimaginary. (((((ge_representation_imaginary_code_functional_firststepsmultiplyoutput) = 2 * (ge_balance_positive_functional_firststepsmultiplyoutputimaginary) /\ (ge_balance_negative_functional_firststepsmultiplyoutputimaginary) = 0) \/ exists ge_signed_half_functional_firststepsmultiplyoutputimaginarydecode. (((ge_representation_imaginary_code_functional_firststepsmultiplyoutput) = 2 * ge_signed_half_functional_firststepsmultiplyoutputimaginarydecode + 1 /\ (ge_balance_positive_functional_firststepsmultiplyoutputimaginary) = 0) /\ (ge_balance_negative_functional_firststepsmultiplyoutputimaginary) = S ge_signed_half_functional_firststepsmultiplyoutputimaginarydecode))) /\ ((((((((ge_first_rp_functional_firststepsmultiply) * (ge_second_ip_functional_firststepsmultiply))) + (((ge_first_rn_functional_firststepsmultiply) * (ge_second_in_functional_firststepsmultiply))))) + (((((ge_first_ip_functional_firststepsmultiply) * (ge_second_rp_functional_firststepsmultiply))) + (((ge_first_in_functional_firststepsmultiply) * (ge_second_rn_functional_firststepsmultiply))))))) + ge_balance_negative_functional_firststepsmultiplyoutputimaginary = (((((((ge_first_rp_functional_firststepsmultiply) * (ge_second_in_functional_firststepsmultiply))) + (((ge_first_rn_functional_firststepsmultiply) * (ge_second_ip_functional_firststepsmultiply))))) + (((((ge_first_ip_functional_firststepsmultiply) * (ge_second_rn_functional_firststepsmultiply))) + (((ge_first_in_functional_firststepsmultiply) * (ge_second_rp_functional_firststepsmultiply))))))) + ge_balance_positive_functional_firststepsmultiplyoutputimaginary)))))))))))))))) -> (exists gr_product_trace_functional_second gr_product_scale_functional_second. ((((exists ff_h_gprod_functional_secondstart. ff_h_gprod_functional_secondstart + S (6) = S ((S (0)) * gr_product_scale_functional_second)) /\ exists ff_q_gprod_functional_secondstart. gr_product_trace_functional_second = ff_q_gprod_functional_secondstart * S ((S (0)) * gr_product_scale_functional_second) + (6))) /\ ((((exists ff_h_gprod_functional_secondend. ff_h_gprod_functional_secondend + S (Q) = S ((S (l)) * gr_product_scale_functional_second)) /\ exists ff_q_gprod_functional_secondend. gr_product_trace_functional_second = ff_q_gprod_functional_secondend * S ((S (l)) * gr_product_scale_functional_second) + (Q))) /\ (forall gr_product_index_functional_secondsteps. (exists ge_gap_functional_secondstepsindex_bound. ge_gap_functional_secondstepsindex_bound + S (gr_product_index_functional_secondsteps) = (l)) -> exists gr_product_factor_functional_secondsteps gr_product_before_functional_secondsteps gr_product_after_functional_secondsteps. ((((exists ff_h_gprod_functional_secondstepsfactor. ff_h_gprod_functional_secondstepsfactor + S (gr_product_factor_functional_secondsteps) = S ((S (gr_product_index_functional_secondsteps)) * c)) /\ exists ff_q_gprod_functional_secondstepsfactor. b = ff_q_gprod_functional_secondstepsfactor * S ((S (gr_product_index_functional_secondsteps)) * c) + (gr_product_factor_functional_secondsteps))) /\ ((((exists ff_h_gprod_functional_secondstepsbefore. ff_h_gprod_functional_secondstepsbefore + S (gr_product_before_functional_secondsteps) = S ((S (gr_product_index_functional_secondsteps)) * gr_product_scale_functional_second)) /\ exists ff_q_gprod_functional_secondstepsbefore. gr_product_trace_functional_second = ff_q_gprod_functional_secondstepsbefore * S ((S (gr_product_index_functional_secondsteps)) * gr_product_scale_functional_second) + (gr_product_before_functional_secondsteps))) /\ ((((exists ff_h_gprod_functional_secondstepsafter. ff_h_gprod_functional_secondstepsafter + S (gr_product_after_functional_secondsteps) = S ((S (S (gr_product_index_functional_secondsteps))) * gr_product_scale_functional_second)) /\ exists ff_q_gprod_functional_secondstepsafter. gr_product_trace_functional_second = ff_q_gprod_functional_secondstepsafter * S ((S (S (gr_product_index_functional_secondsteps))) * gr_product_scale_functional_second) + (gr_product_after_functional_secondsteps))) /\ (exists ge_first_rp_functional_secondstepsmultiply ge_first_rn_functional_secondstepsmultiply ge_first_ip_functional_secondstepsmultiply ge_first_in_functional_secondstepsmultiply ge_second_rp_functional_secondstepsmultiply ge_second_rn_functional_secondstepsmultiply ge_second_ip_functional_secondstepsmultiply ge_second_in_functional_secondstepsmultiply. ((exists ge_representation_real_code_functional_secondstepsmultiplyfirst ge_representation_imaginary_code_functional_secondstepsmultiplyfirst. (((gr_product_before_functional_secondsteps) = ((ge_representation_real_code_functional_secondstepsmultiplyfirst) + (ge_representation_imaginary_code_functional_secondstepsmultiplyfirst)) * S ((ge_representation_real_code_functional_secondstepsmultiplyfirst) + (ge_representation_imaginary_code_functional_secondstepsmultiplyfirst)) + ((ge_representation_imaginary_code_functional_secondstepsmultiplyfirst) + (ge_representation_imaginary_code_functional_secondstepsmultiplyfirst))) /\ ((exists ge_balance_positive_functional_secondstepsmultiplyfirstreal ge_balance_negative_functional_secondstepsmultiplyfirstreal. (((((ge_representation_real_code_functional_secondstepsmultiplyfirst) = 2 * (ge_balance_positive_functional_secondstepsmultiplyfirstreal) /\ (ge_balance_negative_functional_secondstepsmultiplyfirstreal) = 0) \/ exists ge_signed_half_functional_secondstepsmultiplyfirstrealdecode. (((ge_representation_real_code_functional_secondstepsmultiplyfirst) = 2 * ge_signed_half_functional_secondstepsmultiplyfirstrealdecode + 1 /\ (ge_balance_positive_functional_secondstepsmultiplyfirstreal) = 0) /\ (ge_balance_negative_functional_secondstepsmultiplyfirstreal) = S ge_signed_half_functional_secondstepsmultiplyfirstrealdecode))) /\ ((ge_first_rp_functional_secondstepsmultiply) + ge_balance_negative_functional_secondstepsmultiplyfirstreal = (ge_first_rn_functional_secondstepsmultiply) + ge_balance_positive_functional_secondstepsmultiplyfirstreal))) /\ (exists ge_balance_positive_functional_secondstepsmultiplyfirstimaginary ge_balance_negative_functional_secondstepsmultiplyfirstimaginary. (((((ge_representation_imaginary_code_functional_secondstepsmultiplyfirst) = 2 * (ge_balance_positive_functional_secondstepsmultiplyfirstimaginary) /\ (ge_balance_negative_functional_secondstepsmultiplyfirstimaginary) = 0) \/ exists ge_signed_half_functional_secondstepsmultiplyfirstimaginarydecode. (((ge_representation_imaginary_code_functional_secondstepsmultiplyfirst) = 2 * ge_signed_half_functional_secondstepsmultiplyfirstimaginarydecode + 1 /\ (ge_balance_positive_functional_secondstepsmultiplyfirstimaginary) = 0) /\ (ge_balance_negative_functional_secondstepsmultiplyfirstimaginary) = S ge_signed_half_functional_secondstepsmultiplyfirstimaginarydecode))) /\ ((ge_first_ip_functional_secondstepsmultiply) + ge_balance_negative_functional_secondstepsmultiplyfirstimaginary = (ge_first_in_functional_secondstepsmultiply) + ge_balance_positive_functional_secondstepsmultiplyfirstimaginary)))))) /\ ((exists ge_representation_real_code_functional_secondstepsmultiplysecond ge_representation_imaginary_code_functional_secondstepsmultiplysecond. (((gr_product_factor_functional_secondsteps) = ((ge_representation_real_code_functional_secondstepsmultiplysecond) + (ge_representation_imaginary_code_functional_secondstepsmultiplysecond)) * S ((ge_representation_real_code_functional_secondstepsmultiplysecond) + (ge_representation_imaginary_code_functional_secondstepsmultiplysecond)) + ((ge_representation_imaginary_code_functional_secondstepsmultiplysecond) + (ge_representation_imaginary_code_functional_secondstepsmultiplysecond))) /\ ((exists ge_balance_positive_functional_secondstepsmultiplysecondreal ge_balance_negative_functional_secondstepsmultiplysecondreal. (((((ge_representation_real_code_functional_secondstepsmultiplysecond) = 2 * (ge_balance_positive_functional_secondstepsmultiplysecondreal) /\ (ge_balance_negative_functional_secondstepsmultiplysecondreal) = 0) \/ exists ge_signed_half_functional_secondstepsmultiplysecondrealdecode. (((ge_representation_real_code_functional_secondstepsmultiplysecond) = 2 * ge_signed_half_functional_secondstepsmultiplysecondrealdecode + 1 /\ (ge_balance_positive_functional_secondstepsmultiplysecondreal) = 0) /\ (ge_balance_negative_functional_secondstepsmultiplysecondreal) = S ge_signed_half_functional_secondstepsmultiplysecondrealdecode))) /\ ((ge_second_rp_functional_secondstepsmultiply) + ge_balance_negative_functional_secondstepsmultiplysecondreal = (ge_second_rn_functional_secondstepsmultiply) + ge_balance_positive_functional_secondstepsmultiplysecondreal))) /\ (exists ge_balance_positive_functional_secondstepsmultiplysecondimaginary ge_balance_negative_functional_secondstepsmultiplysecondimaginary. (((((ge_representation_imaginary_code_functional_secondstepsmultiplysecond) = 2 * (ge_balance_positive_functional_secondstepsmultiplysecondimaginary) /\ (ge_balance_negative_functional_secondstepsmultiplysecondimaginary) = 0) \/ exists ge_signed_half_functional_secondstepsmultiplysecondimaginarydecode. (((ge_representation_imaginary_code_functional_secondstepsmultiplysecond) = 2 * ge_signed_half_functional_secondstepsmultiplysecondimaginarydecode + 1 /\ (ge_balance_positive_functional_secondstepsmultiplysecondimaginary) = 0) /\ (ge_balance_negative_functional_secondstepsmultiplysecondimaginary) = S ge_signed_half_functional_secondstepsmultiplysecondimaginarydecode))) /\ ((ge_second_ip_functional_secondstepsmultiply) + ge_balance_negative_functional_secondstepsmultiplysecondimaginary = (ge_second_in_functional_secondstepsmultiply) + ge_balance_positive_functional_secondstepsmultiplysecondimaginary)))))) /\ (exists ge_representation_real_code_functional_secondstepsmultiplyoutput ge_representation_imaginary_code_functional_secondstepsmultiplyoutput. (((gr_product_after_functional_secondsteps) = ((ge_representation_real_code_functional_secondstepsmultiplyoutput) + (ge_representation_imaginary_code_functional_secondstepsmultiplyoutput)) * S ((ge_representation_real_code_functional_secondstepsmultiplyoutput) + (ge_representation_imaginary_code_functional_secondstepsmultiplyoutput)) + ((ge_representation_imaginary_code_functional_secondstepsmultiplyoutput) + (ge_representation_imaginary_code_functional_secondstepsmultiplyoutput))) /\ ((exists ge_balance_positive_functional_secondstepsmultiplyoutputreal ge_balance_negative_functional_secondstepsmultiplyoutputreal. (((((ge_representation_real_code_functional_secondstepsmultiplyoutput) = 2 * (ge_balance_positive_functional_secondstepsmultiplyoutputreal) /\ (ge_balance_negative_functional_secondstepsmultiplyoutputreal) = 0) \/ exists ge_signed_half_functional_secondstepsmultiplyoutputrealdecode. (((ge_representation_real_code_functional_secondstepsmultiplyoutput) = 2 * ge_signed_half_functional_secondstepsmultiplyoutputrealdecode + 1 /\ (ge_balance_positive_functional_secondstepsmultiplyoutputreal) = 0) /\ (ge_balance_negative_functional_secondstepsmultiplyoutputreal) = S ge_signed_half_functional_secondstepsmultiplyoutputrealdecode))) /\ ((((((((ge_first_rp_functional_secondstepsmultiply) * (ge_second_rp_functional_secondstepsmultiply))) + (((ge_first_rn_functional_secondstepsmultiply) * (ge_second_rn_functional_secondstepsmultiply))))) + (((((ge_first_ip_functional_secondstepsmultiply) * (ge_second_in_functional_secondstepsmultiply))) + (((ge_first_in_functional_secondstepsmultiply) * (ge_second_ip_functional_secondstepsmultiply))))))) + ge_balance_negative_functional_secondstepsmultiplyoutputreal = (((((((ge_first_rp_functional_secondstepsmultiply) * (ge_second_rn_functional_secondstepsmultiply))) + (((ge_first_rn_functional_secondstepsmultiply) * (ge_second_rp_functional_secondstepsmultiply))))) + (((((ge_first_ip_functional_secondstepsmultiply) * (ge_second_ip_functional_secondstepsmultiply))) + (((ge_first_in_functional_secondstepsmultiply) * (ge_second_in_functional_secondstepsmultiply))))))) + ge_balance_positive_functional_secondstepsmultiplyoutputreal))) /\ (exists ge_balance_positive_functional_secondstepsmultiplyoutputimaginary ge_balance_negative_functional_secondstepsmultiplyoutputimaginary. (((((ge_representation_imaginary_code_functional_secondstepsmultiplyoutput) = 2 * (ge_balance_positive_functional_secondstepsmultiplyoutputimaginary) /\ (ge_balance_negative_functional_secondstepsmultiplyoutputimaginary) = 0) \/ exists ge_signed_half_functional_secondstepsmultiplyoutputimaginarydecode. (((ge_representation_imaginary_code_functional_secondstepsmultiplyoutput) = 2 * ge_signed_half_functional_secondstepsmultiplyoutputimaginarydecode + 1 /\ (ge_balance_positive_functional_secondstepsmultiplyoutputimaginary) = 0) /\ (ge_balance_negative_functional_secondstepsmultiplyoutputimaginary) = S ge_signed_half_functional_secondstepsmultiplyoutputimaginarydecode))) /\ ((((((((ge_first_rp_functional_secondstepsmultiply) * (ge_second_ip_functional_secondstepsmultiply))) + (((ge_first_rn_functional_secondstepsmultiply) * (ge_second_in_functional_secondstepsmultiply))))) + (((((ge_first_ip_functional_secondstepsmultiply) * (ge_second_rp_functional_secondstepsmultiply))) + (((ge_first_in_functional_secondstepsmultiply) * (ge_second_rn_functional_secondstepsmultiply))))))) + ge_balance_negative_functional_secondstepsmultiplyoutputimaginary = (((((((ge_first_rp_functional_secondstepsmultiply) * (ge_second_in_functional_secondstepsmultiply))) + (((ge_first_rn_functional_secondstepsmultiply) * (ge_second_ip_functional_secondstepsmultiply))))) + (((((ge_first_ip_functional_secondstepsmultiply) * (ge_second_rn_functional_secondstepsmultiply))) + (((ge_first_in_functional_secondstepsmultiply) * (ge_second_rp_functional_secondstepsmultiply))))))) + ge_balance_positive_functional_secondstepsmultiplyoutputimaginary)))))))))))))))) -> P=Q

Constructive proof overview

Generated structural guide

Two actual Gaussian multiplication traces on the same finite beta prefix have literally equal canonical endpoint codes.

The unchanged tactic script uses 4 declared prerequisites and contains 75 exact native proof lines.

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

Proof neighborhood

Direct dependencies

GF0087 gaussian_product_empty_value GF0089 gaussian_product_successor_decompose beta_at_unique Stable theorem; checked-use authorized gaussian_multiply_functional Alpha theorem; checked-use authorized

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

75 script commands · 11 reading checkpoints · 5 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 (2)

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.

01Induction on lL1–10

Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.

  1. L1
    induction l
  2. L2
    intro b
  3. L3
    intro c
  4. L4
    intro P
  5. L5
    intro Q
  6. L6
    intro hP
  7. L7
    intro hQ
  8. L8
    trans 6
  9. L9
    specialize gaussian_product_empty_value (b)
  10. L10
    specialize gaussian_product_empty_value (c)
02Use earlier factsL11–13

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

  1. L11
    specialize gaussian_product_empty_value (P)
  2. L12
    apply gaussian_product_empty_value
  3. L13
    exact hP
03Establish heqL14–23

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

  1. L14
    have heq : Q=6
  2. L15
    specialize gaussian_product_empty_value (b)
  3. L16
    specialize gaussian_product_empty_value (c)
  4. L17
    specialize gaussian_product_empty_value (Q)
  5. L18
    apply gaussian_product_empty_value
  6. L19
    exact hQ
  7. L20
    symm
  8. L21
    exact heq
  9. L22
    intro b
  10. L23
    intro c
04Fix variables and assumptionsL24–27

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

  1. L24
    intro P
  2. L25
    intro Q
  3. L26
    intro hP
  4. L27
    intro hQ
05Establish hsL28–34

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

  1. L28
    have hs : ∃ a. ∃ R. BetaAt(b,c,l,a) ∧ (GProduct(b,c,l,R) ∧ GMul(R,a,P))Definitions: GMulGProductBetaAt
  2. L29
    specialize gaussian_product_successor_decompose (b)
  3. L30
    specialize gaussian_product_successor_decompose (c)
  4. L31
    specialize gaussian_product_successor_decompose (l)
  5. L32
    specialize gaussian_product_successor_decompose (P)
  6. L33
    apply gaussian_product_successor_decompose
  7. L34
    exact hP
06Separate the logical casesL35–38

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

  1. L35
    cases hs
  2. L36
    cases hs_witness
  3. L37
    cases hs_witness_witness
  4. L38
    cases hs_witness_witness_right
07Establish htL39–45

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

  1. L39
    have ht : ∃ a. ∃ R. BetaAt(b,c,l,a) ∧ (GProduct(b,c,l,R) ∧ GMul(R,a,Q))Definitions: GMulGProductBetaAt
  2. L40
    specialize gaussian_product_successor_decompose (b)
  3. L41
    specialize gaussian_product_successor_decompose (c)
  4. L42
    specialize gaussian_product_successor_decompose (l)
  5. L43
    specialize gaussian_product_successor_decompose (Q)
  6. L44
    apply gaussian_product_successor_decompose
  7. L45
    exact hQ
08Separate the logical casesL46–49

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

  1. L46
    cases ht
  2. L47
    cases ht_witness
  3. L48
    cases ht_witness_witness
  4. L49
    cases ht_witness_witness_right
09Establish hfactorL50–58

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.

  1. L50
    have hfactor : x=x2
  2. L51
    specialize beta_at_unique (b)
  3. L52
    specialize beta_at_unique (c)
  4. L53
    specialize beta_at_unique (l)
  5. L54
    specialize beta_at_unique (x)
  6. L55
    specialize beta_at_unique (x2)
  7. L56
    apply beta_at_unique
  8. L57
    exact hs_witness_witness_left
  9. L58
    exact ht_witness_witness_left
10Establish hprefixL59–68

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

  1. L59
    have hprefix : x1=x3
  2. L60
    specialize IH (b)
  3. L61
    specialize IH (c)
  4. L62
    specialize IH (x1)
  5. L63
    specialize IH (x3)
  6. L64
    apply IH
  7. L65
    exact hs_witness_witness_right_left
  8. L66
    exact ht_witness_witness_right_left
  9. L67
    rewrite hfactor at hs_witness_witness_right_right
  10. L68
    rewrite hprefix at hs_witness_witness_right_right
11Use earlier factsL69–75

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

  1. L69
    specialize gaussian_multiply_functional (x3)
  2. L70
    specialize gaussian_multiply_functional (x2)
  3. L71
    specialize gaussian_multiply_functional (P)
  4. L72
    specialize gaussian_multiply_functional (Q)
  5. L73
    apply gaussian_multiply_functional
  6. L74
    exact hs_witness_witness_right_right
  7. L75
    exact ht_witness_witness_right_right

Library-wide reading audit

Original exact command ledger · 75 lines
  1. 0001induction l
  2. 0002intro b
  3. 0003intro c
  4. 0004intro P
  5. 0005intro Q
  6. 0006intro hP
  7. 0007intro hQ
  8. 0008trans 6
  9. 0009specialize gaussian_product_empty_value (b)
  10. 0010specialize gaussian_product_empty_value (c)
  11. 0011specialize gaussian_product_empty_value (P)
  12. 0012apply gaussian_product_empty_value
  13. 0013exact hP
  14. 0014have heq : Q=6
  15. 0015specialize gaussian_product_empty_value (b)
  16. 0016specialize gaussian_product_empty_value (c)
  17. 0017specialize gaussian_product_empty_value (Q)
  18. 0018apply gaussian_product_empty_value
  19. 0019exact hQ
  20. 0020symm
  21. 0021exact heq
  22. 0022intro b
  23. 0023intro c
  24. 0024intro P
  25. 0025intro Q
  26. 0026intro hP
  27. 0027intro hQ
  28. 0028have hs : exists a R. ((((exists ff_h_gprod_functional_first_factor. ff_h_gprod_functional_first_factor + S (a) = S ((S (l)) * c)) /\ exists ff_q_gprod_functional_first_factor. b = ff_q_gprod_functional_first_factor * S ((S (l)) * c) + (a))) /\ ((exists gr_product_trace_functional_first_prefix gr_product_scale_functional_first_prefix. ((((exists ff_h_gprod_functional_first_prefixstart. ff_h_gprod_functional_first_prefixstart + S (6) = S ((S (0)) * gr_product_scale_functional_first_prefix)) /\ exists ff_q_gprod_functional_first_prefixstart. gr_product_trace_functional_first_prefix = ff_q_gprod_functional_first_prefixstart * S ((S (0)) * gr_product_scale_functional_first_prefix) + (6))) /\ ((((exists ff_h_gprod_functional_first_prefixend. ff_h_gprod_functional_first_prefixend + S (R) = S ((S (l)) * gr_product_scale_functional_first_prefix)) /\ exists ff_q_gprod_functional_first_prefixend. gr_product_trace_functional_first_prefix = ff_q_gprod_functional_first_prefixend * S ((S (l)) * gr_product_scale_functional_first_prefix) + (R))) /\ (forall gr_product_index_functional_first_prefixsteps. (exists ge_gap_functional_first_prefixstepsindex_bound. ge_gap_functional_first_prefixstepsindex_bound + S (gr_product_index_functional_first_prefixsteps) = (l)) -> exists gr_product_factor_functional_first_prefixsteps gr_product_before_functional_first_prefixsteps gr_product_after_functional_first_prefixsteps. ((((exists ff_h_gprod_functional_first_prefixstepsfactor. ff_h_gprod_functional_first_prefixstepsfactor + S (gr_product_factor_functional_first_prefixsteps) = S ((S (gr_product_index_functional_first_prefixsteps)) * c)) /\ exists ff_q_gprod_functional_first_prefixstepsfactor. b = ff_q_gprod_functional_first_prefixstepsfactor * S ((S (gr_product_index_functional_first_prefixsteps)) * c) + (gr_product_factor_functional_first_prefixsteps))) /\ ((((exists ff_h_gprod_functional_first_prefixstepsbefore. ff_h_gprod_functional_first_prefixstepsbefore + S (gr_product_before_functional_first_prefixsteps) = S ((S (gr_product_index_functional_first_prefixsteps)) * gr_product_scale_functional_first_prefix)) /\ exists ff_q_gprod_functional_first_prefixstepsbefore. gr_product_trace_functional_first_prefix = ff_q_gprod_functional_first_prefixstepsbefore * S ((S (gr_product_index_functional_first_prefixsteps)) * gr_product_scale_functional_first_prefix) + (gr_product_before_functional_first_prefixsteps))) /\ ((((exists ff_h_gprod_functional_first_prefixstepsafter. ff_h_gprod_functional_first_prefixstepsafter + S (gr_product_after_functional_first_prefixsteps) = S ((S (S (gr_product_index_functional_first_prefixsteps))) * gr_product_scale_functional_first_prefix)) /\ exists ff_q_gprod_functional_first_prefixstepsafter. gr_product_trace_functional_first_prefix = ff_q_gprod_functional_first_prefixstepsafter * S ((S (S (gr_product_index_functional_first_prefixsteps))) * gr_product_scale_functional_first_prefix) + (gr_product_after_functional_first_prefixsteps))) /\ (exists ge_first_rp_functional_first_prefixstepsmultiply ge_first_rn_functional_first_prefixstepsmultiply ge_first_ip_functional_first_prefixstepsmultiply ge_first_in_functional_first_prefixstepsmultiply ge_second_rp_functional_first_prefixstepsmultiply ge_second_rn_functional_first_prefixstepsmultiply ge_second_ip_functional_first_prefixstepsmultiply ge_second_in_functional_first_prefixstepsmultiply. ((exists ge_representation_real_code_functional_first_prefixstepsmultiplyfirst ge_representation_imaginary_code_functional_first_prefixstepsmultiplyfirst. (((gr_product_before_functional_first_prefixsteps) = ((ge_representation_real_code_functional_first_prefixstepsmultiplyfirst) + (ge_representation_imaginary_code_functional_first_prefixstepsmultiplyfirst)) * S ((ge_representation_real_code_functional_first_prefixstepsmultiplyfirst) + (ge_representation_imaginary_code_functional_first_prefixstepsmultiplyfirst)) + ((ge_representation_imaginary_code_functional_first_prefixstepsmultiplyfirst) + (ge_representation_imaginary_code_functional_first_prefixstepsmultiplyfirst))) /\ ((exists ge_balance_positive_functional_first_prefixstepsmultiplyfirstreal ge_balance_negative_functional_first_prefixstepsmultiplyfirstreal. (((((ge_representation_real_code_functional_first_prefixstepsmultiplyfirst) = 2 * (ge_balance_positive_functional_first_prefixstepsmultiplyfirstreal) /\ (ge_balance_negative_functional_first_prefixstepsmultiplyfirstreal) = 0) \/ exists ge_signed_half_functional_first_prefixstepsmultiplyfirstrealdecode. (((ge_representation_real_code_functional_first_prefixstepsmultiplyfirst) = 2 * ge_signed_half_functional_first_prefixstepsmultiplyfirstrealdecode + 1 /\ (ge_balance_positive_functional_first_prefixstepsmultiplyfirstreal) = 0) /\ (ge_balance_negative_functional_first_prefixstepsmultiplyfirstreal) = S ge_signed_half_functional_first_prefixstepsmultiplyfirstrealdecode))) /\ ((ge_first_rp_functional_first_prefixstepsmultiply) + ge_balance_negative_functional_first_prefixstepsmultiplyfirstreal = (ge_first_rn_functional_first_prefixstepsmultiply) + ge_balance_positive_functional_first_prefixstepsmultiplyfirstreal))) /\ (exists ge_balance_positive_functional_first_prefixstepsmultiplyfirstimaginary ge_balance_negative_functional_first_prefixstepsmultiplyfirstimaginary. (((((ge_representation_imaginary_code_functional_first_prefixstepsmultiplyfirst) = 2 * (ge_balance_positive_functional_first_prefixstepsmultiplyfirstimaginary) /\ (ge_balance_negative_functional_first_prefixstepsmultiplyfirstimaginary) = 0) \/ exists ge_signed_half_functional_first_prefixstepsmultiplyfirstimaginarydecode. (((ge_representation_imaginary_code_functional_first_prefixstepsmultiplyfirst) = 2 * ge_signed_half_functional_first_prefixstepsmultiplyfirstimaginarydecode + 1 /\ (ge_balance_positive_functional_first_prefixstepsmultiplyfirstimaginary) = 0) /\ (ge_balance_negative_functional_first_prefixstepsmultiplyfirstimaginary) = S ge_signed_half_functional_first_prefixstepsmultiplyfirstimaginarydecode))) /\ ((ge_first_ip_functional_first_prefixstepsmultiply) + ge_balance_negative_functional_first_prefixstepsmultiplyfirstimaginary = (ge_first_in_functional_first_prefixstepsmultiply) + ge_balance_positive_functional_first_prefixstepsmultiplyfirstimaginary)))))) /\ ((exists ge_representation_real_code_functional_first_prefixstepsmultiplysecond ge_representation_imaginary_code_functional_first_prefixstepsmultiplysecond. (((gr_product_factor_functional_first_prefixsteps) = ((ge_representation_real_code_functional_first_prefixstepsmultiplysecond) + (ge_representation_imaginary_code_functional_first_prefixstepsmultiplysecond)) * S ((ge_representation_real_code_functional_first_prefixstepsmultiplysecond) + (ge_representation_imaginary_code_functional_first_prefixstepsmultiplysecond)) + ((ge_representation_imaginary_code_functional_first_prefixstepsmultiplysecond) + (ge_representation_imaginary_code_functional_first_prefixstepsmultiplysecond))) /\ ((exists ge_balance_positive_functional_first_prefixstepsmultiplysecondreal ge_balance_negative_functional_first_prefixstepsmultiplysecondreal. (((((ge_representation_real_code_functional_first_prefixstepsmultiplysecond) = 2 * (ge_balance_positive_functional_first_prefixstepsmultiplysecondreal) /\ (ge_balance_negative_functional_first_prefixstepsmultiplysecondreal) = 0) \/ exists ge_signed_half_functional_first_prefixstepsmultiplysecondrealdecode. (((ge_representation_real_code_functional_first_prefixstepsmultiplysecond) = 2 * ge_signed_half_functional_first_prefixstepsmultiplysecondrealdecode + 1 /\ (ge_balance_positive_functional_first_prefixstepsmultiplysecondreal) = 0) /\ (ge_balance_negative_functional_first_prefixstepsmultiplysecondreal) = S ge_signed_half_functional_first_prefixstepsmultiplysecondrealdecode))) /\ ((ge_second_rp_functional_first_prefixstepsmultiply) + ge_balance_negative_functional_first_prefixstepsmultiplysecondreal = (ge_second_rn_functional_first_prefixstepsmultiply) + ge_balance_positive_functional_first_prefixstepsmultiplysecondreal))) /\ (exists ge_balance_positive_functional_first_prefixstepsmultiplysecondimaginary ge_balance_negative_functional_first_prefixstepsmultiplysecondimaginary. (((((ge_representation_imaginary_code_functional_first_prefixstepsmultiplysecond) = 2 * (ge_balance_positive_functional_first_prefixstepsmultiplysecondimaginary) /\ (ge_balance_negative_functional_first_prefixstepsmultiplysecondimaginary) = 0) \/ exists ge_signed_half_functional_first_prefixstepsmultiplysecondimaginarydecode. (((ge_representation_imaginary_code_functional_first_prefixstepsmultiplysecond) = 2 * ge_signed_half_functional_first_prefixstepsmultiplysecondimaginarydecode + 1 /\ (ge_balance_positive_functional_first_prefixstepsmultiplysecondimaginary) = 0) /\ (ge_balance_negative_functional_first_prefixstepsmultiplysecondimaginary) = S ge_signed_half_functional_first_prefixstepsmultiplysecondimaginarydecode))) /\ ((ge_second_ip_functional_first_prefixstepsmultiply) + ge_balance_negative_functional_first_prefixstepsmultiplysecondimaginary = (ge_second_in_functional_first_prefixstepsmultiply) + ge_balance_positive_functional_first_prefixstepsmultiplysecondimaginary)))))) /\ (exists ge_representation_real_code_functional_first_prefixstepsmultiplyoutput ge_representation_imaginary_code_functional_first_prefixstepsmultiplyoutput. (((gr_product_after_functional_first_prefixsteps) = ((ge_representation_real_code_functional_first_prefixstepsmultiplyoutput) + (ge_representation_imaginary_code_functional_first_prefixstepsmultiplyoutput)) * S ((ge_representation_real_code_functional_first_prefixstepsmultiplyoutput) + (ge_representation_imaginary_code_functional_first_prefixstepsmultiplyoutput)) + ((ge_representation_imaginary_code_functional_first_prefixstepsmultiplyoutput) + (ge_representation_imaginary_code_functional_first_prefixstepsmultiplyoutput))) /\ ((exists ge_balance_positive_functional_first_prefixstepsmultiplyoutputreal ge_balance_negative_functional_first_prefixstepsmultiplyoutputreal. (((((ge_representation_real_code_functional_first_prefixstepsmultiplyoutput) = 2 * (ge_balance_positive_functional_first_prefixstepsmultiplyoutputreal) /\ (ge_balance_negative_functional_first_prefixstepsmultiplyoutputreal) = 0) \/ exists ge_signed_half_functional_first_prefixstepsmultiplyoutputrealdecode. (((ge_representation_real_code_functional_first_prefixstepsmultiplyoutput) = 2 * ge_signed_half_functional_first_prefixstepsmultiplyoutputrealdecode + 1 /\ (ge_balance_positive_functional_first_prefixstepsmultiplyoutputreal) = 0) /\ (ge_balance_negative_functional_first_prefixstepsmultiplyoutputreal) = S ge_signed_half_functional_first_prefixstepsmultiplyoutputrealdecode))) /\ ((((((((ge_first_rp_functional_first_prefixstepsmultiply) * (ge_second_rp_functional_first_prefixstepsmultiply))) + (((ge_first_rn_functional_first_prefixstepsmultiply) * (ge_second_rn_functional_first_prefixstepsmultiply))))) + (((((ge_first_ip_functional_first_prefixstepsmultiply) * (ge_second_in_functional_first_prefixstepsmultiply))) + (((ge_first_in_functional_first_prefixstepsmultiply) * (ge_second_ip_functional_first_prefixstepsmultiply))))))) + ge_balance_negative_functional_first_prefixstepsmultiplyoutputreal = (((((((ge_first_rp_functional_first_prefixstepsmultiply) * (ge_second_rn_functional_first_prefixstepsmultiply))) + (((ge_first_rn_functional_first_prefixstepsmultiply) * (ge_second_rp_functional_first_prefixstepsmultiply))))) + (((((ge_first_ip_functional_first_prefixstepsmultiply) * (ge_second_ip_functional_first_prefixstepsmultiply))) + (((ge_first_in_functional_first_prefixstepsmultiply) * (ge_second_in_functional_first_prefixstepsmultiply))))))) + ge_balance_positive_functional_first_prefixstepsmultiplyoutputreal))) /\ (exists ge_balance_positive_functional_first_prefixstepsmultiplyoutputimaginary ge_balance_negative_functional_first_prefixstepsmultiplyoutputimaginary. (((((ge_representation_imaginary_code_functional_first_prefixstepsmultiplyoutput) = 2 * (ge_balance_positive_functional_first_prefixstepsmultiplyoutputimaginary) /\ (ge_balance_negative_functional_first_prefixstepsmultiplyoutputimaginary) = 0) \/ exists ge_signed_half_functional_first_prefixstepsmultiplyoutputimaginarydecode. (((ge_representation_imaginary_code_functional_first_prefixstepsmultiplyoutput) = 2 * ge_signed_half_functional_first_prefixstepsmultiplyoutputimaginarydecode + 1 /\ (ge_balance_positive_functional_first_prefixstepsmultiplyoutputimaginary) = 0) /\ (ge_balance_negative_functional_first_prefixstepsmultiplyoutputimaginary) = S ge_signed_half_functional_first_prefixstepsmultiplyoutputimaginarydecode))) /\ ((((((((ge_first_rp_functional_first_prefixstepsmultiply) * (ge_second_ip_functional_first_prefixstepsmultiply))) + (((ge_first_rn_functional_first_prefixstepsmultiply) * (ge_second_in_functional_first_prefixstepsmultiply))))) + (((((ge_first_ip_functional_first_prefixstepsmultiply) * (ge_second_rp_functional_first_prefixstepsmultiply))) + (((ge_first_in_functional_first_prefixstepsmultiply) * (ge_second_rn_functional_first_prefixstepsmultiply))))))) + ge_balance_negative_functional_first_prefixstepsmultiplyoutputimaginary = (((((((ge_first_rp_functional_first_prefixstepsmultiply) * (ge_second_in_functional_first_prefixstepsmultiply))) + (((ge_first_rn_functional_first_prefixstepsmultiply) * (ge_second_ip_functional_first_prefixstepsmultiply))))) + (((((ge_first_ip_functional_first_prefixstepsmultiply) * (ge_second_rn_functional_first_prefixstepsmultiply))) + (((ge_first_in_functional_first_prefixstepsmultiply) * (ge_second_rp_functional_first_prefixstepsmultiply))))))) + ge_balance_positive_functional_first_prefixstepsmultiplyoutputimaginary)))))))))))))))) /\ (exists ge_first_rp_functional_first_multiply ge_first_rn_functional_first_multiply ge_first_ip_functional_first_multiply ge_first_in_functional_first_multiply ge_second_rp_functional_first_multiply ge_second_rn_functional_first_multiply ge_second_ip_functional_first_multiply ge_second_in_functional_first_multiply. ((exists ge_representation_real_code_functional_first_multiplyfirst ge_representation_imaginary_code_functional_first_multiplyfirst. (((R) = ((ge_representation_real_code_functional_first_multiplyfirst) + (ge_representation_imaginary_code_functional_first_multiplyfirst)) * S ((ge_representation_real_code_functional_first_multiplyfirst) + (ge_representation_imaginary_code_functional_first_multiplyfirst)) + ((ge_representation_imaginary_code_functional_first_multiplyfirst) + (ge_representation_imaginary_code_functional_first_multiplyfirst))) /\ ((exists ge_balance_positive_functional_first_multiplyfirstreal ge_balance_negative_functional_first_multiplyfirstreal. (((((ge_representation_real_code_functional_first_multiplyfirst) = 2 * (ge_balance_positive_functional_first_multiplyfirstreal) /\ (ge_balance_negative_functional_first_multiplyfirstreal) = 0) \/ exists ge_signed_half_functional_first_multiplyfirstrealdecode. (((ge_representation_real_code_functional_first_multiplyfirst) = 2 * ge_signed_half_functional_first_multiplyfirstrealdecode + 1 /\ (ge_balance_positive_functional_first_multiplyfirstreal) = 0) /\ (ge_balance_negative_functional_first_multiplyfirstreal) = S ge_signed_half_functional_first_multiplyfirstrealdecode))) /\ ((ge_first_rp_functional_first_multiply) + ge_balance_negative_functional_first_multiplyfirstreal = (ge_first_rn_functional_first_multiply) + ge_balance_positive_functional_first_multiplyfirstreal))) /\ (exists ge_balance_positive_functional_first_multiplyfirstimaginary ge_balance_negative_functional_first_multiplyfirstimaginary. (((((ge_representation_imaginary_code_functional_first_multiplyfirst) = 2 * (ge_balance_positive_functional_first_multiplyfirstimaginary) /\ (ge_balance_negative_functional_first_multiplyfirstimaginary) = 0) \/ exists ge_signed_half_functional_first_multiplyfirstimaginarydecode. (((ge_representation_imaginary_code_functional_first_multiplyfirst) = 2 * ge_signed_half_functional_first_multiplyfirstimaginarydecode + 1 /\ (ge_balance_positive_functional_first_multiplyfirstimaginary) = 0) /\ (ge_balance_negative_functional_first_multiplyfirstimaginary) = S ge_signed_half_functional_first_multiplyfirstimaginarydecode))) /\ ((ge_first_ip_functional_first_multiply) + ge_balance_negative_functional_first_multiplyfirstimaginary = (ge_first_in_functional_first_multiply) + ge_balance_positive_functional_first_multiplyfirstimaginary)))))) /\ ((exists ge_representation_real_code_functional_first_multiplysecond ge_representation_imaginary_code_functional_first_multiplysecond. (((a) = ((ge_representation_real_code_functional_first_multiplysecond) + (ge_representation_imaginary_code_functional_first_multiplysecond)) * S ((ge_representation_real_code_functional_first_multiplysecond) + (ge_representation_imaginary_code_functional_first_multiplysecond)) + ((ge_representation_imaginary_code_functional_first_multiplysecond) + (ge_representation_imaginary_code_functional_first_multiplysecond))) /\ ((exists ge_balance_positive_functional_first_multiplysecondreal ge_balance_negative_functional_first_multiplysecondreal. (((((ge_representation_real_code_functional_first_multiplysecond) = 2 * (ge_balance_positive_functional_first_multiplysecondreal) /\ (ge_balance_negative_functional_first_multiplysecondreal) = 0) \/ exists ge_signed_half_functional_first_multiplysecondrealdecode. (((ge_representation_real_code_functional_first_multiplysecond) = 2 * ge_signed_half_functional_first_multiplysecondrealdecode + 1 /\ (ge_balance_positive_functional_first_multiplysecondreal) = 0) /\ (ge_balance_negative_functional_first_multiplysecondreal) = S ge_signed_half_functional_first_multiplysecondrealdecode))) /\ ((ge_second_rp_functional_first_multiply) + ge_balance_negative_functional_first_multiplysecondreal = (ge_second_rn_functional_first_multiply) + ge_balance_positive_functional_first_multiplysecondreal))) /\ (exists ge_balance_positive_functional_first_multiplysecondimaginary ge_balance_negative_functional_first_multiplysecondimaginary. (((((ge_representation_imaginary_code_functional_first_multiplysecond) = 2 * (ge_balance_positive_functional_first_multiplysecondimaginary) /\ (ge_balance_negative_functional_first_multiplysecondimaginary) = 0) \/ exists ge_signed_half_functional_first_multiplysecondimaginarydecode. (((ge_representation_imaginary_code_functional_first_multiplysecond) = 2 * ge_signed_half_functional_first_multiplysecondimaginarydecode + 1 /\ (ge_balance_positive_functional_first_multiplysecondimaginary) = 0) /\ (ge_balance_negative_functional_first_multiplysecondimaginary) = S ge_signed_half_functional_first_multiplysecondimaginarydecode))) /\ ((ge_second_ip_functional_first_multiply) + ge_balance_negative_functional_first_multiplysecondimaginary = (ge_second_in_functional_first_multiply) + ge_balance_positive_functional_first_multiplysecondimaginary)))))) /\ (exists ge_representation_real_code_functional_first_multiplyoutput ge_representation_imaginary_code_functional_first_multiplyoutput. (((P) = ((ge_representation_real_code_functional_first_multiplyoutput) + (ge_representation_imaginary_code_functional_first_multiplyoutput)) * S ((ge_representation_real_code_functional_first_multiplyoutput) + (ge_representation_imaginary_code_functional_first_multiplyoutput)) + ((ge_representation_imaginary_code_functional_first_multiplyoutput) + (ge_representation_imaginary_code_functional_first_multiplyoutput))) /\ ((exists ge_balance_positive_functional_first_multiplyoutputreal ge_balance_negative_functional_first_multiplyoutputreal. (((((ge_representation_real_code_functional_first_multiplyoutput) = 2 * (ge_balance_positive_functional_first_multiplyoutputreal) /\ (ge_balance_negative_functional_first_multiplyoutputreal) = 0) \/ exists ge_signed_half_functional_first_multiplyoutputrealdecode. (((ge_representation_real_code_functional_first_multiplyoutput) = 2 * ge_signed_half_functional_first_multiplyoutputrealdecode + 1 /\ (ge_balance_positive_functional_first_multiplyoutputreal) = 0) /\ (ge_balance_negative_functional_first_multiplyoutputreal) = S ge_signed_half_functional_first_multiplyoutputrealdecode))) /\ ((((((((ge_first_rp_functional_first_multiply) * (ge_second_rp_functional_first_multiply))) + (((ge_first_rn_functional_first_multiply) * (ge_second_rn_functional_first_multiply))))) + (((((ge_first_ip_functional_first_multiply) * (ge_second_in_functional_first_multiply))) + (((ge_first_in_functional_first_multiply) * (ge_second_ip_functional_first_multiply))))))) + ge_balance_negative_functional_first_multiplyoutputreal = (((((((ge_first_rp_functional_first_multiply) * (ge_second_rn_functional_first_multiply))) + (((ge_first_rn_functional_first_multiply) * (ge_second_rp_functional_first_multiply))))) + (((((ge_first_ip_functional_first_multiply) * (ge_second_ip_functional_first_multiply))) + (((ge_first_in_functional_first_multiply) * (ge_second_in_functional_first_multiply))))))) + ge_balance_positive_functional_first_multiplyoutputreal))) /\ (exists ge_balance_positive_functional_first_multiplyoutputimaginary ge_balance_negative_functional_first_multiplyoutputimaginary. (((((ge_representation_imaginary_code_functional_first_multiplyoutput) = 2 * (ge_balance_positive_functional_first_multiplyoutputimaginary) /\ (ge_balance_negative_functional_first_multiplyoutputimaginary) = 0) \/ exists ge_signed_half_functional_first_multiplyoutputimaginarydecode. (((ge_representation_imaginary_code_functional_first_multiplyoutput) = 2 * ge_signed_half_functional_first_multiplyoutputimaginarydecode + 1 /\ (ge_balance_positive_functional_first_multiplyoutputimaginary) = 0) /\ (ge_balance_negative_functional_first_multiplyoutputimaginary) = S ge_signed_half_functional_first_multiplyoutputimaginarydecode))) /\ ((((((((ge_first_rp_functional_first_multiply) * (ge_second_ip_functional_first_multiply))) + (((ge_first_rn_functional_first_multiply) * (ge_second_in_functional_first_multiply))))) + (((((ge_first_ip_functional_first_multiply) * (ge_second_rp_functional_first_multiply))) + (((ge_first_in_functional_first_multiply) * (ge_second_rn_functional_first_multiply))))))) + ge_balance_negative_functional_first_multiplyoutputimaginary = (((((((ge_first_rp_functional_first_multiply) * (ge_second_in_functional_first_multiply))) + (((ge_first_rn_functional_first_multiply) * (ge_second_ip_functional_first_multiply))))) + (((((ge_first_ip_functional_first_multiply) * (ge_second_rn_functional_first_multiply))) + (((ge_first_in_functional_first_multiply) * (ge_second_rp_functional_first_multiply))))))) + ge_balance_positive_functional_first_multiplyoutputimaginary)))))))))))
  29. 0029specialize gaussian_product_successor_decompose (b)
  30. 0030specialize gaussian_product_successor_decompose (c)
  31. 0031specialize gaussian_product_successor_decompose (l)
  32. 0032specialize gaussian_product_successor_decompose (P)
  33. 0033apply gaussian_product_successor_decompose
  34. 0034exact hP
  35. 0035cases hs
  36. 0036cases hs_witness
  37. 0037cases hs_witness_witness
  38. 0038cases hs_witness_witness_right
  39. 0039have ht : exists a R. ((((exists ff_h_gprod_functional_second_factor. ff_h_gprod_functional_second_factor + S (a) = S ((S (l)) * c)) /\ exists ff_q_gprod_functional_second_factor. b = ff_q_gprod_functional_second_factor * S ((S (l)) * c) + (a))) /\ ((exists gr_product_trace_functional_second_prefix gr_product_scale_functional_second_prefix. ((((exists ff_h_gprod_functional_second_prefixstart. ff_h_gprod_functional_second_prefixstart + S (6) = S ((S (0)) * gr_product_scale_functional_second_prefix)) /\ exists ff_q_gprod_functional_second_prefixstart. gr_product_trace_functional_second_prefix = ff_q_gprod_functional_second_prefixstart * S ((S (0)) * gr_product_scale_functional_second_prefix) + (6))) /\ ((((exists ff_h_gprod_functional_second_prefixend. ff_h_gprod_functional_second_prefixend + S (R) = S ((S (l)) * gr_product_scale_functional_second_prefix)) /\ exists ff_q_gprod_functional_second_prefixend. gr_product_trace_functional_second_prefix = ff_q_gprod_functional_second_prefixend * S ((S (l)) * gr_product_scale_functional_second_prefix) + (R))) /\ (forall gr_product_index_functional_second_prefixsteps. (exists ge_gap_functional_second_prefixstepsindex_bound. ge_gap_functional_second_prefixstepsindex_bound + S (gr_product_index_functional_second_prefixsteps) = (l)) -> exists gr_product_factor_functional_second_prefixsteps gr_product_before_functional_second_prefixsteps gr_product_after_functional_second_prefixsteps. ((((exists ff_h_gprod_functional_second_prefixstepsfactor. ff_h_gprod_functional_second_prefixstepsfactor + S (gr_product_factor_functional_second_prefixsteps) = S ((S (gr_product_index_functional_second_prefixsteps)) * c)) /\ exists ff_q_gprod_functional_second_prefixstepsfactor. b = ff_q_gprod_functional_second_prefixstepsfactor * S ((S (gr_product_index_functional_second_prefixsteps)) * c) + (gr_product_factor_functional_second_prefixsteps))) /\ ((((exists ff_h_gprod_functional_second_prefixstepsbefore. ff_h_gprod_functional_second_prefixstepsbefore + S (gr_product_before_functional_second_prefixsteps) = S ((S (gr_product_index_functional_second_prefixsteps)) * gr_product_scale_functional_second_prefix)) /\ exists ff_q_gprod_functional_second_prefixstepsbefore. gr_product_trace_functional_second_prefix = ff_q_gprod_functional_second_prefixstepsbefore * S ((S (gr_product_index_functional_second_prefixsteps)) * gr_product_scale_functional_second_prefix) + (gr_product_before_functional_second_prefixsteps))) /\ ((((exists ff_h_gprod_functional_second_prefixstepsafter. ff_h_gprod_functional_second_prefixstepsafter + S (gr_product_after_functional_second_prefixsteps) = S ((S (S (gr_product_index_functional_second_prefixsteps))) * gr_product_scale_functional_second_prefix)) /\ exists ff_q_gprod_functional_second_prefixstepsafter. gr_product_trace_functional_second_prefix = ff_q_gprod_functional_second_prefixstepsafter * S ((S (S (gr_product_index_functional_second_prefixsteps))) * gr_product_scale_functional_second_prefix) + (gr_product_after_functional_second_prefixsteps))) /\ (exists ge_first_rp_functional_second_prefixstepsmultiply ge_first_rn_functional_second_prefixstepsmultiply ge_first_ip_functional_second_prefixstepsmultiply ge_first_in_functional_second_prefixstepsmultiply ge_second_rp_functional_second_prefixstepsmultiply ge_second_rn_functional_second_prefixstepsmultiply ge_second_ip_functional_second_prefixstepsmultiply ge_second_in_functional_second_prefixstepsmultiply. ((exists ge_representation_real_code_functional_second_prefixstepsmultiplyfirst ge_representation_imaginary_code_functional_second_prefixstepsmultiplyfirst. (((gr_product_before_functional_second_prefixsteps) = ((ge_representation_real_code_functional_second_prefixstepsmultiplyfirst) + (ge_representation_imaginary_code_functional_second_prefixstepsmultiplyfirst)) * S ((ge_representation_real_code_functional_second_prefixstepsmultiplyfirst) + (ge_representation_imaginary_code_functional_second_prefixstepsmultiplyfirst)) + ((ge_representation_imaginary_code_functional_second_prefixstepsmultiplyfirst) + (ge_representation_imaginary_code_functional_second_prefixstepsmultiplyfirst))) /\ ((exists ge_balance_positive_functional_second_prefixstepsmultiplyfirstreal ge_balance_negative_functional_second_prefixstepsmultiplyfirstreal. (((((ge_representation_real_code_functional_second_prefixstepsmultiplyfirst) = 2 * (ge_balance_positive_functional_second_prefixstepsmultiplyfirstreal) /\ (ge_balance_negative_functional_second_prefixstepsmultiplyfirstreal) = 0) \/ exists ge_signed_half_functional_second_prefixstepsmultiplyfirstrealdecode. (((ge_representation_real_code_functional_second_prefixstepsmultiplyfirst) = 2 * ge_signed_half_functional_second_prefixstepsmultiplyfirstrealdecode + 1 /\ (ge_balance_positive_functional_second_prefixstepsmultiplyfirstreal) = 0) /\ (ge_balance_negative_functional_second_prefixstepsmultiplyfirstreal) = S ge_signed_half_functional_second_prefixstepsmultiplyfirstrealdecode))) /\ ((ge_first_rp_functional_second_prefixstepsmultiply) + ge_balance_negative_functional_second_prefixstepsmultiplyfirstreal = (ge_first_rn_functional_second_prefixstepsmultiply) + ge_balance_positive_functional_second_prefixstepsmultiplyfirstreal))) /\ (exists ge_balance_positive_functional_second_prefixstepsmultiplyfirstimaginary ge_balance_negative_functional_second_prefixstepsmultiplyfirstimaginary. (((((ge_representation_imaginary_code_functional_second_prefixstepsmultiplyfirst) = 2 * (ge_balance_positive_functional_second_prefixstepsmultiplyfirstimaginary) /\ (ge_balance_negative_functional_second_prefixstepsmultiplyfirstimaginary) = 0) \/ exists ge_signed_half_functional_second_prefixstepsmultiplyfirstimaginarydecode. (((ge_representation_imaginary_code_functional_second_prefixstepsmultiplyfirst) = 2 * ge_signed_half_functional_second_prefixstepsmultiplyfirstimaginarydecode + 1 /\ (ge_balance_positive_functional_second_prefixstepsmultiplyfirstimaginary) = 0) /\ (ge_balance_negative_functional_second_prefixstepsmultiplyfirstimaginary) = S ge_signed_half_functional_second_prefixstepsmultiplyfirstimaginarydecode))) /\ ((ge_first_ip_functional_second_prefixstepsmultiply) + ge_balance_negative_functional_second_prefixstepsmultiplyfirstimaginary = (ge_first_in_functional_second_prefixstepsmultiply) + ge_balance_positive_functional_second_prefixstepsmultiplyfirstimaginary)))))) /\ ((exists ge_representation_real_code_functional_second_prefixstepsmultiplysecond ge_representation_imaginary_code_functional_second_prefixstepsmultiplysecond. (((gr_product_factor_functional_second_prefixsteps) = ((ge_representation_real_code_functional_second_prefixstepsmultiplysecond) + (ge_representation_imaginary_code_functional_second_prefixstepsmultiplysecond)) * S ((ge_representation_real_code_functional_second_prefixstepsmultiplysecond) + (ge_representation_imaginary_code_functional_second_prefixstepsmultiplysecond)) + ((ge_representation_imaginary_code_functional_second_prefixstepsmultiplysecond) + (ge_representation_imaginary_code_functional_second_prefixstepsmultiplysecond))) /\ ((exists ge_balance_positive_functional_second_prefixstepsmultiplysecondreal ge_balance_negative_functional_second_prefixstepsmultiplysecondreal. (((((ge_representation_real_code_functional_second_prefixstepsmultiplysecond) = 2 * (ge_balance_positive_functional_second_prefixstepsmultiplysecondreal) /\ (ge_balance_negative_functional_second_prefixstepsmultiplysecondreal) = 0) \/ exists ge_signed_half_functional_second_prefixstepsmultiplysecondrealdecode. (((ge_representation_real_code_functional_second_prefixstepsmultiplysecond) = 2 * ge_signed_half_functional_second_prefixstepsmultiplysecondrealdecode + 1 /\ (ge_balance_positive_functional_second_prefixstepsmultiplysecondreal) = 0) /\ (ge_balance_negative_functional_second_prefixstepsmultiplysecondreal) = S ge_signed_half_functional_second_prefixstepsmultiplysecondrealdecode))) /\ ((ge_second_rp_functional_second_prefixstepsmultiply) + ge_balance_negative_functional_second_prefixstepsmultiplysecondreal = (ge_second_rn_functional_second_prefixstepsmultiply) + ge_balance_positive_functional_second_prefixstepsmultiplysecondreal))) /\ (exists ge_balance_positive_functional_second_prefixstepsmultiplysecondimaginary ge_balance_negative_functional_second_prefixstepsmultiplysecondimaginary. (((((ge_representation_imaginary_code_functional_second_prefixstepsmultiplysecond) = 2 * (ge_balance_positive_functional_second_prefixstepsmultiplysecondimaginary) /\ (ge_balance_negative_functional_second_prefixstepsmultiplysecondimaginary) = 0) \/ exists ge_signed_half_functional_second_prefixstepsmultiplysecondimaginarydecode. (((ge_representation_imaginary_code_functional_second_prefixstepsmultiplysecond) = 2 * ge_signed_half_functional_second_prefixstepsmultiplysecondimaginarydecode + 1 /\ (ge_balance_positive_functional_second_prefixstepsmultiplysecondimaginary) = 0) /\ (ge_balance_negative_functional_second_prefixstepsmultiplysecondimaginary) = S ge_signed_half_functional_second_prefixstepsmultiplysecondimaginarydecode))) /\ ((ge_second_ip_functional_second_prefixstepsmultiply) + ge_balance_negative_functional_second_prefixstepsmultiplysecondimaginary = (ge_second_in_functional_second_prefixstepsmultiply) + ge_balance_positive_functional_second_prefixstepsmultiplysecondimaginary)))))) /\ (exists ge_representation_real_code_functional_second_prefixstepsmultiplyoutput ge_representation_imaginary_code_functional_second_prefixstepsmultiplyoutput. (((gr_product_after_functional_second_prefixsteps) = ((ge_representation_real_code_functional_second_prefixstepsmultiplyoutput) + (ge_representation_imaginary_code_functional_second_prefixstepsmultiplyoutput)) * S ((ge_representation_real_code_functional_second_prefixstepsmultiplyoutput) + (ge_representation_imaginary_code_functional_second_prefixstepsmultiplyoutput)) + ((ge_representation_imaginary_code_functional_second_prefixstepsmultiplyoutput) + (ge_representation_imaginary_code_functional_second_prefixstepsmultiplyoutput))) /\ ((exists ge_balance_positive_functional_second_prefixstepsmultiplyoutputreal ge_balance_negative_functional_second_prefixstepsmultiplyoutputreal. (((((ge_representation_real_code_functional_second_prefixstepsmultiplyoutput) = 2 * (ge_balance_positive_functional_second_prefixstepsmultiplyoutputreal) /\ (ge_balance_negative_functional_second_prefixstepsmultiplyoutputreal) = 0) \/ exists ge_signed_half_functional_second_prefixstepsmultiplyoutputrealdecode. (((ge_representation_real_code_functional_second_prefixstepsmultiplyoutput) = 2 * ge_signed_half_functional_second_prefixstepsmultiplyoutputrealdecode + 1 /\ (ge_balance_positive_functional_second_prefixstepsmultiplyoutputreal) = 0) /\ (ge_balance_negative_functional_second_prefixstepsmultiplyoutputreal) = S ge_signed_half_functional_second_prefixstepsmultiplyoutputrealdecode))) /\ ((((((((ge_first_rp_functional_second_prefixstepsmultiply) * (ge_second_rp_functional_second_prefixstepsmultiply))) + (((ge_first_rn_functional_second_prefixstepsmultiply) * (ge_second_rn_functional_second_prefixstepsmultiply))))) + (((((ge_first_ip_functional_second_prefixstepsmultiply) * (ge_second_in_functional_second_prefixstepsmultiply))) + (((ge_first_in_functional_second_prefixstepsmultiply) * (ge_second_ip_functional_second_prefixstepsmultiply))))))) + ge_balance_negative_functional_second_prefixstepsmultiplyoutputreal = (((((((ge_first_rp_functional_second_prefixstepsmultiply) * (ge_second_rn_functional_second_prefixstepsmultiply))) + (((ge_first_rn_functional_second_prefixstepsmultiply) * (ge_second_rp_functional_second_prefixstepsmultiply))))) + (((((ge_first_ip_functional_second_prefixstepsmultiply) * (ge_second_ip_functional_second_prefixstepsmultiply))) + (((ge_first_in_functional_second_prefixstepsmultiply) * (ge_second_in_functional_second_prefixstepsmultiply))))))) + ge_balance_positive_functional_second_prefixstepsmultiplyoutputreal))) /\ (exists ge_balance_positive_functional_second_prefixstepsmultiplyoutputimaginary ge_balance_negative_functional_second_prefixstepsmultiplyoutputimaginary. (((((ge_representation_imaginary_code_functional_second_prefixstepsmultiplyoutput) = 2 * (ge_balance_positive_functional_second_prefixstepsmultiplyoutputimaginary) /\ (ge_balance_negative_functional_second_prefixstepsmultiplyoutputimaginary) = 0) \/ exists ge_signed_half_functional_second_prefixstepsmultiplyoutputimaginarydecode. (((ge_representation_imaginary_code_functional_second_prefixstepsmultiplyoutput) = 2 * ge_signed_half_functional_second_prefixstepsmultiplyoutputimaginarydecode + 1 /\ (ge_balance_positive_functional_second_prefixstepsmultiplyoutputimaginary) = 0) /\ (ge_balance_negative_functional_second_prefixstepsmultiplyoutputimaginary) = S ge_signed_half_functional_second_prefixstepsmultiplyoutputimaginarydecode))) /\ ((((((((ge_first_rp_functional_second_prefixstepsmultiply) * (ge_second_ip_functional_second_prefixstepsmultiply))) + (((ge_first_rn_functional_second_prefixstepsmultiply) * (ge_second_in_functional_second_prefixstepsmultiply))))) + (((((ge_first_ip_functional_second_prefixstepsmultiply) * (ge_second_rp_functional_second_prefixstepsmultiply))) + (((ge_first_in_functional_second_prefixstepsmultiply) * (ge_second_rn_functional_second_prefixstepsmultiply))))))) + ge_balance_negative_functional_second_prefixstepsmultiplyoutputimaginary = (((((((ge_first_rp_functional_second_prefixstepsmultiply) * (ge_second_in_functional_second_prefixstepsmultiply))) + (((ge_first_rn_functional_second_prefixstepsmultiply) * (ge_second_ip_functional_second_prefixstepsmultiply))))) + (((((ge_first_ip_functional_second_prefixstepsmultiply) * (ge_second_rn_functional_second_prefixstepsmultiply))) + (((ge_first_in_functional_second_prefixstepsmultiply) * (ge_second_rp_functional_second_prefixstepsmultiply))))))) + ge_balance_positive_functional_second_prefixstepsmultiplyoutputimaginary)))))))))))))))) /\ (exists ge_first_rp_functional_second_multiply ge_first_rn_functional_second_multiply ge_first_ip_functional_second_multiply ge_first_in_functional_second_multiply ge_second_rp_functional_second_multiply ge_second_rn_functional_second_multiply ge_second_ip_functional_second_multiply ge_second_in_functional_second_multiply. ((exists ge_representation_real_code_functional_second_multiplyfirst ge_representation_imaginary_code_functional_second_multiplyfirst. (((R) = ((ge_representation_real_code_functional_second_multiplyfirst) + (ge_representation_imaginary_code_functional_second_multiplyfirst)) * S ((ge_representation_real_code_functional_second_multiplyfirst) + (ge_representation_imaginary_code_functional_second_multiplyfirst)) + ((ge_representation_imaginary_code_functional_second_multiplyfirst) + (ge_representation_imaginary_code_functional_second_multiplyfirst))) /\ ((exists ge_balance_positive_functional_second_multiplyfirstreal ge_balance_negative_functional_second_multiplyfirstreal. (((((ge_representation_real_code_functional_second_multiplyfirst) = 2 * (ge_balance_positive_functional_second_multiplyfirstreal) /\ (ge_balance_negative_functional_second_multiplyfirstreal) = 0) \/ exists ge_signed_half_functional_second_multiplyfirstrealdecode. (((ge_representation_real_code_functional_second_multiplyfirst) = 2 * ge_signed_half_functional_second_multiplyfirstrealdecode + 1 /\ (ge_balance_positive_functional_second_multiplyfirstreal) = 0) /\ (ge_balance_negative_functional_second_multiplyfirstreal) = S ge_signed_half_functional_second_multiplyfirstrealdecode))) /\ ((ge_first_rp_functional_second_multiply) + ge_balance_negative_functional_second_multiplyfirstreal = (ge_first_rn_functional_second_multiply) + ge_balance_positive_functional_second_multiplyfirstreal))) /\ (exists ge_balance_positive_functional_second_multiplyfirstimaginary ge_balance_negative_functional_second_multiplyfirstimaginary. (((((ge_representation_imaginary_code_functional_second_multiplyfirst) = 2 * (ge_balance_positive_functional_second_multiplyfirstimaginary) /\ (ge_balance_negative_functional_second_multiplyfirstimaginary) = 0) \/ exists ge_signed_half_functional_second_multiplyfirstimaginarydecode. (((ge_representation_imaginary_code_functional_second_multiplyfirst) = 2 * ge_signed_half_functional_second_multiplyfirstimaginarydecode + 1 /\ (ge_balance_positive_functional_second_multiplyfirstimaginary) = 0) /\ (ge_balance_negative_functional_second_multiplyfirstimaginary) = S ge_signed_half_functional_second_multiplyfirstimaginarydecode))) /\ ((ge_first_ip_functional_second_multiply) + ge_balance_negative_functional_second_multiplyfirstimaginary = (ge_first_in_functional_second_multiply) + ge_balance_positive_functional_second_multiplyfirstimaginary)))))) /\ ((exists ge_representation_real_code_functional_second_multiplysecond ge_representation_imaginary_code_functional_second_multiplysecond. (((a) = ((ge_representation_real_code_functional_second_multiplysecond) + (ge_representation_imaginary_code_functional_second_multiplysecond)) * S ((ge_representation_real_code_functional_second_multiplysecond) + (ge_representation_imaginary_code_functional_second_multiplysecond)) + ((ge_representation_imaginary_code_functional_second_multiplysecond) + (ge_representation_imaginary_code_functional_second_multiplysecond))) /\ ((exists ge_balance_positive_functional_second_multiplysecondreal ge_balance_negative_functional_second_multiplysecondreal. (((((ge_representation_real_code_functional_second_multiplysecond) = 2 * (ge_balance_positive_functional_second_multiplysecondreal) /\ (ge_balance_negative_functional_second_multiplysecondreal) = 0) \/ exists ge_signed_half_functional_second_multiplysecondrealdecode. (((ge_representation_real_code_functional_second_multiplysecond) = 2 * ge_signed_half_functional_second_multiplysecondrealdecode + 1 /\ (ge_balance_positive_functional_second_multiplysecondreal) = 0) /\ (ge_balance_negative_functional_second_multiplysecondreal) = S ge_signed_half_functional_second_multiplysecondrealdecode))) /\ ((ge_second_rp_functional_second_multiply) + ge_balance_negative_functional_second_multiplysecondreal = (ge_second_rn_functional_second_multiply) + ge_balance_positive_functional_second_multiplysecondreal))) /\ (exists ge_balance_positive_functional_second_multiplysecondimaginary ge_balance_negative_functional_second_multiplysecondimaginary. (((((ge_representation_imaginary_code_functional_second_multiplysecond) = 2 * (ge_balance_positive_functional_second_multiplysecondimaginary) /\ (ge_balance_negative_functional_second_multiplysecondimaginary) = 0) \/ exists ge_signed_half_functional_second_multiplysecondimaginarydecode. (((ge_representation_imaginary_code_functional_second_multiplysecond) = 2 * ge_signed_half_functional_second_multiplysecondimaginarydecode + 1 /\ (ge_balance_positive_functional_second_multiplysecondimaginary) = 0) /\ (ge_balance_negative_functional_second_multiplysecondimaginary) = S ge_signed_half_functional_second_multiplysecondimaginarydecode))) /\ ((ge_second_ip_functional_second_multiply) + ge_balance_negative_functional_second_multiplysecondimaginary = (ge_second_in_functional_second_multiply) + ge_balance_positive_functional_second_multiplysecondimaginary)))))) /\ (exists ge_representation_real_code_functional_second_multiplyoutput ge_representation_imaginary_code_functional_second_multiplyoutput. (((Q) = ((ge_representation_real_code_functional_second_multiplyoutput) + (ge_representation_imaginary_code_functional_second_multiplyoutput)) * S ((ge_representation_real_code_functional_second_multiplyoutput) + (ge_representation_imaginary_code_functional_second_multiplyoutput)) + ((ge_representation_imaginary_code_functional_second_multiplyoutput) + (ge_representation_imaginary_code_functional_second_multiplyoutput))) /\ ((exists ge_balance_positive_functional_second_multiplyoutputreal ge_balance_negative_functional_second_multiplyoutputreal. (((((ge_representation_real_code_functional_second_multiplyoutput) = 2 * (ge_balance_positive_functional_second_multiplyoutputreal) /\ (ge_balance_negative_functional_second_multiplyoutputreal) = 0) \/ exists ge_signed_half_functional_second_multiplyoutputrealdecode. (((ge_representation_real_code_functional_second_multiplyoutput) = 2 * ge_signed_half_functional_second_multiplyoutputrealdecode + 1 /\ (ge_balance_positive_functional_second_multiplyoutputreal) = 0) /\ (ge_balance_negative_functional_second_multiplyoutputreal) = S ge_signed_half_functional_second_multiplyoutputrealdecode))) /\ ((((((((ge_first_rp_functional_second_multiply) * (ge_second_rp_functional_second_multiply))) + (((ge_first_rn_functional_second_multiply) * (ge_second_rn_functional_second_multiply))))) + (((((ge_first_ip_functional_second_multiply) * (ge_second_in_functional_second_multiply))) + (((ge_first_in_functional_second_multiply) * (ge_second_ip_functional_second_multiply))))))) + ge_balance_negative_functional_second_multiplyoutputreal = (((((((ge_first_rp_functional_second_multiply) * (ge_second_rn_functional_second_multiply))) + (((ge_first_rn_functional_second_multiply) * (ge_second_rp_functional_second_multiply))))) + (((((ge_first_ip_functional_second_multiply) * (ge_second_ip_functional_second_multiply))) + (((ge_first_in_functional_second_multiply) * (ge_second_in_functional_second_multiply))))))) + ge_balance_positive_functional_second_multiplyoutputreal))) /\ (exists ge_balance_positive_functional_second_multiplyoutputimaginary ge_balance_negative_functional_second_multiplyoutputimaginary. (((((ge_representation_imaginary_code_functional_second_multiplyoutput) = 2 * (ge_balance_positive_functional_second_multiplyoutputimaginary) /\ (ge_balance_negative_functional_second_multiplyoutputimaginary) = 0) \/ exists ge_signed_half_functional_second_multiplyoutputimaginarydecode. (((ge_representation_imaginary_code_functional_second_multiplyoutput) = 2 * ge_signed_half_functional_second_multiplyoutputimaginarydecode + 1 /\ (ge_balance_positive_functional_second_multiplyoutputimaginary) = 0) /\ (ge_balance_negative_functional_second_multiplyoutputimaginary) = S ge_signed_half_functional_second_multiplyoutputimaginarydecode))) /\ ((((((((ge_first_rp_functional_second_multiply) * (ge_second_ip_functional_second_multiply))) + (((ge_first_rn_functional_second_multiply) * (ge_second_in_functional_second_multiply))))) + (((((ge_first_ip_functional_second_multiply) * (ge_second_rp_functional_second_multiply))) + (((ge_first_in_functional_second_multiply) * (ge_second_rn_functional_second_multiply))))))) + ge_balance_negative_functional_second_multiplyoutputimaginary = (((((((ge_first_rp_functional_second_multiply) * (ge_second_in_functional_second_multiply))) + (((ge_first_rn_functional_second_multiply) * (ge_second_ip_functional_second_multiply))))) + (((((ge_first_ip_functional_second_multiply) * (ge_second_rn_functional_second_multiply))) + (((ge_first_in_functional_second_multiply) * (ge_second_rp_functional_second_multiply))))))) + ge_balance_positive_functional_second_multiplyoutputimaginary)))))))))))
  40. 0040specialize gaussian_product_successor_decompose (b)
  41. 0041specialize gaussian_product_successor_decompose (c)
  42. 0042specialize gaussian_product_successor_decompose (l)
  43. 0043specialize gaussian_product_successor_decompose (Q)
  44. 0044apply gaussian_product_successor_decompose
  45. 0045exact hQ
  46. 0046cases ht
  47. 0047cases ht_witness
  48. 0048cases ht_witness_witness
  49. 0049cases ht_witness_witness_right
  50. 0050have hfactor : x=x2
  51. 0051specialize beta_at_unique (b)
  52. 0052specialize beta_at_unique (c)
  53. 0053specialize beta_at_unique (l)
  54. 0054specialize beta_at_unique (x)
  55. 0055specialize beta_at_unique (x2)
  56. 0056apply beta_at_unique
  57. 0057exact hs_witness_witness_left
  58. 0058exact ht_witness_witness_left
  59. 0059have hprefix : x1=x3
  60. 0060specialize IH (b)
  61. 0061specialize IH (c)
  62. 0062specialize IH (x1)
  63. 0063specialize IH (x3)
  64. 0064apply IH
  65. 0065exact hs_witness_witness_right_left
  66. 0066exact ht_witness_witness_right_left
  67. 0067rewrite hfactor at hs_witness_witness_right_right
  68. 0068rewrite hprefix at hs_witness_witness_right_right
  69. 0069specialize gaussian_multiply_functional (x3)
  70. 0070specialize gaussian_multiply_functional (x2)
  71. 0071specialize gaussian_multiply_functional (P)
  72. 0072specialize gaussian_multiply_functional (Q)
  73. 0073apply gaussian_multiply_functional
  74. 0074exact hs_witness_witness_right_right
  75. 0075exact ht_witness_witness_right_right