GF0089

gaussian_product_successor_decompose

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

Every nonempty actual Gaussian product exposes its final factor, the actual shorter prefix product, and the genuine final multiplication.

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 b c l Q. (exists gr_product_trace_successor_product gr_product_scale_successor_product. ((((exists ff_h_gprod_successor_productstart. ff_h_gprod_successor_productstart + S (6) = S ((S (0)) * gr_product_scale_successor_product)) /\ exists ff_q_gprod_successor_productstart. gr_product_trace_successor_product = ff_q_gprod_successor_productstart * S ((S (0)) * gr_product_scale_successor_product) + (6))) /\ ((((exists ff_h_gprod_successor_productend. ff_h_gprod_successor_productend + S (Q) = S ((S (S l)) * gr_product_scale_successor_product)) /\ exists ff_q_gprod_successor_productend. gr_product_trace_successor_product = ff_q_gprod_successor_productend * S ((S (S l)) * gr_product_scale_successor_product) + (Q))) /\ (forall gr_product_index_successor_productsteps. (exists ge_gap_successor_productstepsindex_bound. ge_gap_successor_productstepsindex_bound + S (gr_product_index_successor_productsteps) = (S l)) -> exists gr_product_factor_successor_productsteps gr_product_before_successor_productsteps gr_product_after_successor_productsteps. ((((exists ff_h_gprod_successor_productstepsfactor. ff_h_gprod_successor_productstepsfactor + S (gr_product_factor_successor_productsteps) = S ((S (gr_product_index_successor_productsteps)) * c)) /\ exists ff_q_gprod_successor_productstepsfactor. b = ff_q_gprod_successor_productstepsfactor * S ((S (gr_product_index_successor_productsteps)) * c) + (gr_product_factor_successor_productsteps))) /\ ((((exists ff_h_gprod_successor_productstepsbefore. ff_h_gprod_successor_productstepsbefore + S (gr_product_before_successor_productsteps) = S ((S (gr_product_index_successor_productsteps)) * gr_product_scale_successor_product)) /\ exists ff_q_gprod_successor_productstepsbefore. gr_product_trace_successor_product = ff_q_gprod_successor_productstepsbefore * S ((S (gr_product_index_successor_productsteps)) * gr_product_scale_successor_product) + (gr_product_before_successor_productsteps))) /\ ((((exists ff_h_gprod_successor_productstepsafter. ff_h_gprod_successor_productstepsafter + S (gr_product_after_successor_productsteps) = S ((S (S (gr_product_index_successor_productsteps))) * gr_product_scale_successor_product)) /\ exists ff_q_gprod_successor_productstepsafter. gr_product_trace_successor_product = ff_q_gprod_successor_productstepsafter * S ((S (S (gr_product_index_successor_productsteps))) * gr_product_scale_successor_product) + (gr_product_after_successor_productsteps))) /\ (exists ge_first_rp_successor_productstepsmultiply ge_first_rn_successor_productstepsmultiply ge_first_ip_successor_productstepsmultiply ge_first_in_successor_productstepsmultiply ge_second_rp_successor_productstepsmultiply ge_second_rn_successor_productstepsmultiply ge_second_ip_successor_productstepsmultiply ge_second_in_successor_productstepsmultiply. ((exists ge_representation_real_code_successor_productstepsmultiplyfirst ge_representation_imaginary_code_successor_productstepsmultiplyfirst. (((gr_product_before_successor_productsteps) = ((ge_representation_real_code_successor_productstepsmultiplyfirst) + (ge_representation_imaginary_code_successor_productstepsmultiplyfirst)) * S ((ge_representation_real_code_successor_productstepsmultiplyfirst) + (ge_representation_imaginary_code_successor_productstepsmultiplyfirst)) + ((ge_representation_imaginary_code_successor_productstepsmultiplyfirst) + (ge_representation_imaginary_code_successor_productstepsmultiplyfirst))) /\ ((exists ge_balance_positive_successor_productstepsmultiplyfirstreal ge_balance_negative_successor_productstepsmultiplyfirstreal. (((((ge_representation_real_code_successor_productstepsmultiplyfirst) = 2 * (ge_balance_positive_successor_productstepsmultiplyfirstreal) /\ (ge_balance_negative_successor_productstepsmultiplyfirstreal) = 0) \/ exists ge_signed_half_successor_productstepsmultiplyfirstrealdecode. (((ge_representation_real_code_successor_productstepsmultiplyfirst) = 2 * ge_signed_half_successor_productstepsmultiplyfirstrealdecode + 1 /\ (ge_balance_positive_successor_productstepsmultiplyfirstreal) = 0) /\ (ge_balance_negative_successor_productstepsmultiplyfirstreal) = S ge_signed_half_successor_productstepsmultiplyfirstrealdecode))) /\ ((ge_first_rp_successor_productstepsmultiply) + ge_balance_negative_successor_productstepsmultiplyfirstreal = (ge_first_rn_successor_productstepsmultiply) + ge_balance_positive_successor_productstepsmultiplyfirstreal))) /\ (exists ge_balance_positive_successor_productstepsmultiplyfirstimaginary ge_balance_negative_successor_productstepsmultiplyfirstimaginary. (((((ge_representation_imaginary_code_successor_productstepsmultiplyfirst) = 2 * (ge_balance_positive_successor_productstepsmultiplyfirstimaginary) /\ (ge_balance_negative_successor_productstepsmultiplyfirstimaginary) = 0) \/ exists ge_signed_half_successor_productstepsmultiplyfirstimaginarydecode. (((ge_representation_imaginary_code_successor_productstepsmultiplyfirst) = 2 * ge_signed_half_successor_productstepsmultiplyfirstimaginarydecode + 1 /\ (ge_balance_positive_successor_productstepsmultiplyfirstimaginary) = 0) /\ (ge_balance_negative_successor_productstepsmultiplyfirstimaginary) = S ge_signed_half_successor_productstepsmultiplyfirstimaginarydecode))) /\ ((ge_first_ip_successor_productstepsmultiply) + ge_balance_negative_successor_productstepsmultiplyfirstimaginary = (ge_first_in_successor_productstepsmultiply) + ge_balance_positive_successor_productstepsmultiplyfirstimaginary)))))) /\ ((exists ge_representation_real_code_successor_productstepsmultiplysecond ge_representation_imaginary_code_successor_productstepsmultiplysecond. (((gr_product_factor_successor_productsteps) = ((ge_representation_real_code_successor_productstepsmultiplysecond) + (ge_representation_imaginary_code_successor_productstepsmultiplysecond)) * S ((ge_representation_real_code_successor_productstepsmultiplysecond) + (ge_representation_imaginary_code_successor_productstepsmultiplysecond)) + ((ge_representation_imaginary_code_successor_productstepsmultiplysecond) + (ge_representation_imaginary_code_successor_productstepsmultiplysecond))) /\ ((exists ge_balance_positive_successor_productstepsmultiplysecondreal ge_balance_negative_successor_productstepsmultiplysecondreal. (((((ge_representation_real_code_successor_productstepsmultiplysecond) = 2 * (ge_balance_positive_successor_productstepsmultiplysecondreal) /\ (ge_balance_negative_successor_productstepsmultiplysecondreal) = 0) \/ exists ge_signed_half_successor_productstepsmultiplysecondrealdecode. (((ge_representation_real_code_successor_productstepsmultiplysecond) = 2 * ge_signed_half_successor_productstepsmultiplysecondrealdecode + 1 /\ (ge_balance_positive_successor_productstepsmultiplysecondreal) = 0) /\ (ge_balance_negative_successor_productstepsmultiplysecondreal) = S ge_signed_half_successor_productstepsmultiplysecondrealdecode))) /\ ((ge_second_rp_successor_productstepsmultiply) + ge_balance_negative_successor_productstepsmultiplysecondreal = (ge_second_rn_successor_productstepsmultiply) + ge_balance_positive_successor_productstepsmultiplysecondreal))) /\ (exists ge_balance_positive_successor_productstepsmultiplysecondimaginary ge_balance_negative_successor_productstepsmultiplysecondimaginary. (((((ge_representation_imaginary_code_successor_productstepsmultiplysecond) = 2 * (ge_balance_positive_successor_productstepsmultiplysecondimaginary) /\ (ge_balance_negative_successor_productstepsmultiplysecondimaginary) = 0) \/ exists ge_signed_half_successor_productstepsmultiplysecondimaginarydecode. (((ge_representation_imaginary_code_successor_productstepsmultiplysecond) = 2 * ge_signed_half_successor_productstepsmultiplysecondimaginarydecode + 1 /\ (ge_balance_positive_successor_productstepsmultiplysecondimaginary) = 0) /\ (ge_balance_negative_successor_productstepsmultiplysecondimaginary) = S ge_signed_half_successor_productstepsmultiplysecondimaginarydecode))) /\ ((ge_second_ip_successor_productstepsmultiply) + ge_balance_negative_successor_productstepsmultiplysecondimaginary = (ge_second_in_successor_productstepsmultiply) + ge_balance_positive_successor_productstepsmultiplysecondimaginary)))))) /\ (exists ge_representation_real_code_successor_productstepsmultiplyoutput ge_representation_imaginary_code_successor_productstepsmultiplyoutput. (((gr_product_after_successor_productsteps) = ((ge_representation_real_code_successor_productstepsmultiplyoutput) + (ge_representation_imaginary_code_successor_productstepsmultiplyoutput)) * S ((ge_representation_real_code_successor_productstepsmultiplyoutput) + (ge_representation_imaginary_code_successor_productstepsmultiplyoutput)) + ((ge_representation_imaginary_code_successor_productstepsmultiplyoutput) + (ge_representation_imaginary_code_successor_productstepsmultiplyoutput))) /\ ((exists ge_balance_positive_successor_productstepsmultiplyoutputreal ge_balance_negative_successor_productstepsmultiplyoutputreal. (((((ge_representation_real_code_successor_productstepsmultiplyoutput) = 2 * (ge_balance_positive_successor_productstepsmultiplyoutputreal) /\ (ge_balance_negative_successor_productstepsmultiplyoutputreal) = 0) \/ exists ge_signed_half_successor_productstepsmultiplyoutputrealdecode. (((ge_representation_real_code_successor_productstepsmultiplyoutput) = 2 * ge_signed_half_successor_productstepsmultiplyoutputrealdecode + 1 /\ (ge_balance_positive_successor_productstepsmultiplyoutputreal) = 0) /\ (ge_balance_negative_successor_productstepsmultiplyoutputreal) = S ge_signed_half_successor_productstepsmultiplyoutputrealdecode))) /\ ((((((((ge_first_rp_successor_productstepsmultiply) * (ge_second_rp_successor_productstepsmultiply))) + (((ge_first_rn_successor_productstepsmultiply) * (ge_second_rn_successor_productstepsmultiply))))) + (((((ge_first_ip_successor_productstepsmultiply) * (ge_second_in_successor_productstepsmultiply))) + (((ge_first_in_successor_productstepsmultiply) * (ge_second_ip_successor_productstepsmultiply))))))) + ge_balance_negative_successor_productstepsmultiplyoutputreal = (((((((ge_first_rp_successor_productstepsmultiply) * (ge_second_rn_successor_productstepsmultiply))) + (((ge_first_rn_successor_productstepsmultiply) * (ge_second_rp_successor_productstepsmultiply))))) + (((((ge_first_ip_successor_productstepsmultiply) * (ge_second_ip_successor_productstepsmultiply))) + (((ge_first_in_successor_productstepsmultiply) * (ge_second_in_successor_productstepsmultiply))))))) + ge_balance_positive_successor_productstepsmultiplyoutputreal))) /\ (exists ge_balance_positive_successor_productstepsmultiplyoutputimaginary ge_balance_negative_successor_productstepsmultiplyoutputimaginary. (((((ge_representation_imaginary_code_successor_productstepsmultiplyoutput) = 2 * (ge_balance_positive_successor_productstepsmultiplyoutputimaginary) /\ (ge_balance_negative_successor_productstepsmultiplyoutputimaginary) = 0) \/ exists ge_signed_half_successor_productstepsmultiplyoutputimaginarydecode. (((ge_representation_imaginary_code_successor_productstepsmultiplyoutput) = 2 * ge_signed_half_successor_productstepsmultiplyoutputimaginarydecode + 1 /\ (ge_balance_positive_successor_productstepsmultiplyoutputimaginary) = 0) /\ (ge_balance_negative_successor_productstepsmultiplyoutputimaginary) = S ge_signed_half_successor_productstepsmultiplyoutputimaginarydecode))) /\ ((((((((ge_first_rp_successor_productstepsmultiply) * (ge_second_ip_successor_productstepsmultiply))) + (((ge_first_rn_successor_productstepsmultiply) * (ge_second_in_successor_productstepsmultiply))))) + (((((ge_first_ip_successor_productstepsmultiply) * (ge_second_rp_successor_productstepsmultiply))) + (((ge_first_in_successor_productstepsmultiply) * (ge_second_rn_successor_productstepsmultiply))))))) + ge_balance_negative_successor_productstepsmultiplyoutputimaginary = (((((((ge_first_rp_successor_productstepsmultiply) * (ge_second_in_successor_productstepsmultiply))) + (((ge_first_rn_successor_productstepsmultiply) * (ge_second_ip_successor_productstepsmultiply))))) + (((((ge_first_ip_successor_productstepsmultiply) * (ge_second_rn_successor_productstepsmultiply))) + (((ge_first_in_successor_productstepsmultiply) * (ge_second_rp_successor_productstepsmultiply))))))) + ge_balance_positive_successor_productstepsmultiplyoutputimaginary)))))))))))))))) -> exists a P. ((((exists ff_h_gprod_successor_factor. ff_h_gprod_successor_factor + S (a) = S ((S (l)) * c)) /\ exists ff_q_gprod_successor_factor. b = ff_q_gprod_successor_factor * S ((S (l)) * c) + (a))) /\ ((exists gr_product_trace_successor_prefix gr_product_scale_successor_prefix. ((((exists ff_h_gprod_successor_prefixstart. ff_h_gprod_successor_prefixstart + S (6) = S ((S (0)) * gr_product_scale_successor_prefix)) /\ exists ff_q_gprod_successor_prefixstart. gr_product_trace_successor_prefix = ff_q_gprod_successor_prefixstart * S ((S (0)) * gr_product_scale_successor_prefix) + (6))) /\ ((((exists ff_h_gprod_successor_prefixend. ff_h_gprod_successor_prefixend + S (P) = S ((S (l)) * gr_product_scale_successor_prefix)) /\ exists ff_q_gprod_successor_prefixend. gr_product_trace_successor_prefix = ff_q_gprod_successor_prefixend * S ((S (l)) * gr_product_scale_successor_prefix) + (P))) /\ (forall gr_product_index_successor_prefixsteps. (exists ge_gap_successor_prefixstepsindex_bound. ge_gap_successor_prefixstepsindex_bound + S (gr_product_index_successor_prefixsteps) = (l)) -> exists gr_product_factor_successor_prefixsteps gr_product_before_successor_prefixsteps gr_product_after_successor_prefixsteps. ((((exists ff_h_gprod_successor_prefixstepsfactor. ff_h_gprod_successor_prefixstepsfactor + S (gr_product_factor_successor_prefixsteps) = S ((S (gr_product_index_successor_prefixsteps)) * c)) /\ exists ff_q_gprod_successor_prefixstepsfactor. b = ff_q_gprod_successor_prefixstepsfactor * S ((S (gr_product_index_successor_prefixsteps)) * c) + (gr_product_factor_successor_prefixsteps))) /\ ((((exists ff_h_gprod_successor_prefixstepsbefore. ff_h_gprod_successor_prefixstepsbefore + S (gr_product_before_successor_prefixsteps) = S ((S (gr_product_index_successor_prefixsteps)) * gr_product_scale_successor_prefix)) /\ exists ff_q_gprod_successor_prefixstepsbefore. gr_product_trace_successor_prefix = ff_q_gprod_successor_prefixstepsbefore * S ((S (gr_product_index_successor_prefixsteps)) * gr_product_scale_successor_prefix) + (gr_product_before_successor_prefixsteps))) /\ ((((exists ff_h_gprod_successor_prefixstepsafter. ff_h_gprod_successor_prefixstepsafter + S (gr_product_after_successor_prefixsteps) = S ((S (S (gr_product_index_successor_prefixsteps))) * gr_product_scale_successor_prefix)) /\ exists ff_q_gprod_successor_prefixstepsafter. gr_product_trace_successor_prefix = ff_q_gprod_successor_prefixstepsafter * S ((S (S (gr_product_index_successor_prefixsteps))) * gr_product_scale_successor_prefix) + (gr_product_after_successor_prefixsteps))) /\ (exists ge_first_rp_successor_prefixstepsmultiply ge_first_rn_successor_prefixstepsmultiply ge_first_ip_successor_prefixstepsmultiply ge_first_in_successor_prefixstepsmultiply ge_second_rp_successor_prefixstepsmultiply ge_second_rn_successor_prefixstepsmultiply ge_second_ip_successor_prefixstepsmultiply ge_second_in_successor_prefixstepsmultiply. ((exists ge_representation_real_code_successor_prefixstepsmultiplyfirst ge_representation_imaginary_code_successor_prefixstepsmultiplyfirst. (((gr_product_before_successor_prefixsteps) = ((ge_representation_real_code_successor_prefixstepsmultiplyfirst) + (ge_representation_imaginary_code_successor_prefixstepsmultiplyfirst)) * S ((ge_representation_real_code_successor_prefixstepsmultiplyfirst) + (ge_representation_imaginary_code_successor_prefixstepsmultiplyfirst)) + ((ge_representation_imaginary_code_successor_prefixstepsmultiplyfirst) + (ge_representation_imaginary_code_successor_prefixstepsmultiplyfirst))) /\ ((exists ge_balance_positive_successor_prefixstepsmultiplyfirstreal ge_balance_negative_successor_prefixstepsmultiplyfirstreal. (((((ge_representation_real_code_successor_prefixstepsmultiplyfirst) = 2 * (ge_balance_positive_successor_prefixstepsmultiplyfirstreal) /\ (ge_balance_negative_successor_prefixstepsmultiplyfirstreal) = 0) \/ exists ge_signed_half_successor_prefixstepsmultiplyfirstrealdecode. (((ge_representation_real_code_successor_prefixstepsmultiplyfirst) = 2 * ge_signed_half_successor_prefixstepsmultiplyfirstrealdecode + 1 /\ (ge_balance_positive_successor_prefixstepsmultiplyfirstreal) = 0) /\ (ge_balance_negative_successor_prefixstepsmultiplyfirstreal) = S ge_signed_half_successor_prefixstepsmultiplyfirstrealdecode))) /\ ((ge_first_rp_successor_prefixstepsmultiply) + ge_balance_negative_successor_prefixstepsmultiplyfirstreal = (ge_first_rn_successor_prefixstepsmultiply) + ge_balance_positive_successor_prefixstepsmultiplyfirstreal))) /\ (exists ge_balance_positive_successor_prefixstepsmultiplyfirstimaginary ge_balance_negative_successor_prefixstepsmultiplyfirstimaginary. (((((ge_representation_imaginary_code_successor_prefixstepsmultiplyfirst) = 2 * (ge_balance_positive_successor_prefixstepsmultiplyfirstimaginary) /\ (ge_balance_negative_successor_prefixstepsmultiplyfirstimaginary) = 0) \/ exists ge_signed_half_successor_prefixstepsmultiplyfirstimaginarydecode. (((ge_representation_imaginary_code_successor_prefixstepsmultiplyfirst) = 2 * ge_signed_half_successor_prefixstepsmultiplyfirstimaginarydecode + 1 /\ (ge_balance_positive_successor_prefixstepsmultiplyfirstimaginary) = 0) /\ (ge_balance_negative_successor_prefixstepsmultiplyfirstimaginary) = S ge_signed_half_successor_prefixstepsmultiplyfirstimaginarydecode))) /\ ((ge_first_ip_successor_prefixstepsmultiply) + ge_balance_negative_successor_prefixstepsmultiplyfirstimaginary = (ge_first_in_successor_prefixstepsmultiply) + ge_balance_positive_successor_prefixstepsmultiplyfirstimaginary)))))) /\ ((exists ge_representation_real_code_successor_prefixstepsmultiplysecond ge_representation_imaginary_code_successor_prefixstepsmultiplysecond. (((gr_product_factor_successor_prefixsteps) = ((ge_representation_real_code_successor_prefixstepsmultiplysecond) + (ge_representation_imaginary_code_successor_prefixstepsmultiplysecond)) * S ((ge_representation_real_code_successor_prefixstepsmultiplysecond) + (ge_representation_imaginary_code_successor_prefixstepsmultiplysecond)) + ((ge_representation_imaginary_code_successor_prefixstepsmultiplysecond) + (ge_representation_imaginary_code_successor_prefixstepsmultiplysecond))) /\ ((exists ge_balance_positive_successor_prefixstepsmultiplysecondreal ge_balance_negative_successor_prefixstepsmultiplysecondreal. (((((ge_representation_real_code_successor_prefixstepsmultiplysecond) = 2 * (ge_balance_positive_successor_prefixstepsmultiplysecondreal) /\ (ge_balance_negative_successor_prefixstepsmultiplysecondreal) = 0) \/ exists ge_signed_half_successor_prefixstepsmultiplysecondrealdecode. (((ge_representation_real_code_successor_prefixstepsmultiplysecond) = 2 * ge_signed_half_successor_prefixstepsmultiplysecondrealdecode + 1 /\ (ge_balance_positive_successor_prefixstepsmultiplysecondreal) = 0) /\ (ge_balance_negative_successor_prefixstepsmultiplysecondreal) = S ge_signed_half_successor_prefixstepsmultiplysecondrealdecode))) /\ ((ge_second_rp_successor_prefixstepsmultiply) + ge_balance_negative_successor_prefixstepsmultiplysecondreal = (ge_second_rn_successor_prefixstepsmultiply) + ge_balance_positive_successor_prefixstepsmultiplysecondreal))) /\ (exists ge_balance_positive_successor_prefixstepsmultiplysecondimaginary ge_balance_negative_successor_prefixstepsmultiplysecondimaginary. (((((ge_representation_imaginary_code_successor_prefixstepsmultiplysecond) = 2 * (ge_balance_positive_successor_prefixstepsmultiplysecondimaginary) /\ (ge_balance_negative_successor_prefixstepsmultiplysecondimaginary) = 0) \/ exists ge_signed_half_successor_prefixstepsmultiplysecondimaginarydecode. (((ge_representation_imaginary_code_successor_prefixstepsmultiplysecond) = 2 * ge_signed_half_successor_prefixstepsmultiplysecondimaginarydecode + 1 /\ (ge_balance_positive_successor_prefixstepsmultiplysecondimaginary) = 0) /\ (ge_balance_negative_successor_prefixstepsmultiplysecondimaginary) = S ge_signed_half_successor_prefixstepsmultiplysecondimaginarydecode))) /\ ((ge_second_ip_successor_prefixstepsmultiply) + ge_balance_negative_successor_prefixstepsmultiplysecondimaginary = (ge_second_in_successor_prefixstepsmultiply) + ge_balance_positive_successor_prefixstepsmultiplysecondimaginary)))))) /\ (exists ge_representation_real_code_successor_prefixstepsmultiplyoutput ge_representation_imaginary_code_successor_prefixstepsmultiplyoutput. (((gr_product_after_successor_prefixsteps) = ((ge_representation_real_code_successor_prefixstepsmultiplyoutput) + (ge_representation_imaginary_code_successor_prefixstepsmultiplyoutput)) * S ((ge_representation_real_code_successor_prefixstepsmultiplyoutput) + (ge_representation_imaginary_code_successor_prefixstepsmultiplyoutput)) + ((ge_representation_imaginary_code_successor_prefixstepsmultiplyoutput) + (ge_representation_imaginary_code_successor_prefixstepsmultiplyoutput))) /\ ((exists ge_balance_positive_successor_prefixstepsmultiplyoutputreal ge_balance_negative_successor_prefixstepsmultiplyoutputreal. (((((ge_representation_real_code_successor_prefixstepsmultiplyoutput) = 2 * (ge_balance_positive_successor_prefixstepsmultiplyoutputreal) /\ (ge_balance_negative_successor_prefixstepsmultiplyoutputreal) = 0) \/ exists ge_signed_half_successor_prefixstepsmultiplyoutputrealdecode. (((ge_representation_real_code_successor_prefixstepsmultiplyoutput) = 2 * ge_signed_half_successor_prefixstepsmultiplyoutputrealdecode + 1 /\ (ge_balance_positive_successor_prefixstepsmultiplyoutputreal) = 0) /\ (ge_balance_negative_successor_prefixstepsmultiplyoutputreal) = S ge_signed_half_successor_prefixstepsmultiplyoutputrealdecode))) /\ ((((((((ge_first_rp_successor_prefixstepsmultiply) * (ge_second_rp_successor_prefixstepsmultiply))) + (((ge_first_rn_successor_prefixstepsmultiply) * (ge_second_rn_successor_prefixstepsmultiply))))) + (((((ge_first_ip_successor_prefixstepsmultiply) * (ge_second_in_successor_prefixstepsmultiply))) + (((ge_first_in_successor_prefixstepsmultiply) * (ge_second_ip_successor_prefixstepsmultiply))))))) + ge_balance_negative_successor_prefixstepsmultiplyoutputreal = (((((((ge_first_rp_successor_prefixstepsmultiply) * (ge_second_rn_successor_prefixstepsmultiply))) + (((ge_first_rn_successor_prefixstepsmultiply) * (ge_second_rp_successor_prefixstepsmultiply))))) + (((((ge_first_ip_successor_prefixstepsmultiply) * (ge_second_ip_successor_prefixstepsmultiply))) + (((ge_first_in_successor_prefixstepsmultiply) * (ge_second_in_successor_prefixstepsmultiply))))))) + ge_balance_positive_successor_prefixstepsmultiplyoutputreal))) /\ (exists ge_balance_positive_successor_prefixstepsmultiplyoutputimaginary ge_balance_negative_successor_prefixstepsmultiplyoutputimaginary. (((((ge_representation_imaginary_code_successor_prefixstepsmultiplyoutput) = 2 * (ge_balance_positive_successor_prefixstepsmultiplyoutputimaginary) /\ (ge_balance_negative_successor_prefixstepsmultiplyoutputimaginary) = 0) \/ exists ge_signed_half_successor_prefixstepsmultiplyoutputimaginarydecode. (((ge_representation_imaginary_code_successor_prefixstepsmultiplyoutput) = 2 * ge_signed_half_successor_prefixstepsmultiplyoutputimaginarydecode + 1 /\ (ge_balance_positive_successor_prefixstepsmultiplyoutputimaginary) = 0) /\ (ge_balance_negative_successor_prefixstepsmultiplyoutputimaginary) = S ge_signed_half_successor_prefixstepsmultiplyoutputimaginarydecode))) /\ ((((((((ge_first_rp_successor_prefixstepsmultiply) * (ge_second_ip_successor_prefixstepsmultiply))) + (((ge_first_rn_successor_prefixstepsmultiply) * (ge_second_in_successor_prefixstepsmultiply))))) + (((((ge_first_ip_successor_prefixstepsmultiply) * (ge_second_rp_successor_prefixstepsmultiply))) + (((ge_first_in_successor_prefixstepsmultiply) * (ge_second_rn_successor_prefixstepsmultiply))))))) + ge_balance_negative_successor_prefixstepsmultiplyoutputimaginary = (((((((ge_first_rp_successor_prefixstepsmultiply) * (ge_second_in_successor_prefixstepsmultiply))) + (((ge_first_rn_successor_prefixstepsmultiply) * (ge_second_ip_successor_prefixstepsmultiply))))) + (((((ge_first_ip_successor_prefixstepsmultiply) * (ge_second_rn_successor_prefixstepsmultiply))) + (((ge_first_in_successor_prefixstepsmultiply) * (ge_second_rp_successor_prefixstepsmultiply))))))) + ge_balance_positive_successor_prefixstepsmultiplyoutputimaginary)))))))))))))))) /\ (exists ge_first_rp_successor_multiply ge_first_rn_successor_multiply ge_first_ip_successor_multiply ge_first_in_successor_multiply ge_second_rp_successor_multiply ge_second_rn_successor_multiply ge_second_ip_successor_multiply ge_second_in_successor_multiply. ((exists ge_representation_real_code_successor_multiplyfirst ge_representation_imaginary_code_successor_multiplyfirst. (((P) = ((ge_representation_real_code_successor_multiplyfirst) + (ge_representation_imaginary_code_successor_multiplyfirst)) * S ((ge_representation_real_code_successor_multiplyfirst) + (ge_representation_imaginary_code_successor_multiplyfirst)) + ((ge_representation_imaginary_code_successor_multiplyfirst) + (ge_representation_imaginary_code_successor_multiplyfirst))) /\ ((exists ge_balance_positive_successor_multiplyfirstreal ge_balance_negative_successor_multiplyfirstreal. (((((ge_representation_real_code_successor_multiplyfirst) = 2 * (ge_balance_positive_successor_multiplyfirstreal) /\ (ge_balance_negative_successor_multiplyfirstreal) = 0) \/ exists ge_signed_half_successor_multiplyfirstrealdecode. (((ge_representation_real_code_successor_multiplyfirst) = 2 * ge_signed_half_successor_multiplyfirstrealdecode + 1 /\ (ge_balance_positive_successor_multiplyfirstreal) = 0) /\ (ge_balance_negative_successor_multiplyfirstreal) = S ge_signed_half_successor_multiplyfirstrealdecode))) /\ ((ge_first_rp_successor_multiply) + ge_balance_negative_successor_multiplyfirstreal = (ge_first_rn_successor_multiply) + ge_balance_positive_successor_multiplyfirstreal))) /\ (exists ge_balance_positive_successor_multiplyfirstimaginary ge_balance_negative_successor_multiplyfirstimaginary. (((((ge_representation_imaginary_code_successor_multiplyfirst) = 2 * (ge_balance_positive_successor_multiplyfirstimaginary) /\ (ge_balance_negative_successor_multiplyfirstimaginary) = 0) \/ exists ge_signed_half_successor_multiplyfirstimaginarydecode. (((ge_representation_imaginary_code_successor_multiplyfirst) = 2 * ge_signed_half_successor_multiplyfirstimaginarydecode + 1 /\ (ge_balance_positive_successor_multiplyfirstimaginary) = 0) /\ (ge_balance_negative_successor_multiplyfirstimaginary) = S ge_signed_half_successor_multiplyfirstimaginarydecode))) /\ ((ge_first_ip_successor_multiply) + ge_balance_negative_successor_multiplyfirstimaginary = (ge_first_in_successor_multiply) + ge_balance_positive_successor_multiplyfirstimaginary)))))) /\ ((exists ge_representation_real_code_successor_multiplysecond ge_representation_imaginary_code_successor_multiplysecond. (((a) = ((ge_representation_real_code_successor_multiplysecond) + (ge_representation_imaginary_code_successor_multiplysecond)) * S ((ge_representation_real_code_successor_multiplysecond) + (ge_representation_imaginary_code_successor_multiplysecond)) + ((ge_representation_imaginary_code_successor_multiplysecond) + (ge_representation_imaginary_code_successor_multiplysecond))) /\ ((exists ge_balance_positive_successor_multiplysecondreal ge_balance_negative_successor_multiplysecondreal. (((((ge_representation_real_code_successor_multiplysecond) = 2 * (ge_balance_positive_successor_multiplysecondreal) /\ (ge_balance_negative_successor_multiplysecondreal) = 0) \/ exists ge_signed_half_successor_multiplysecondrealdecode. (((ge_representation_real_code_successor_multiplysecond) = 2 * ge_signed_half_successor_multiplysecondrealdecode + 1 /\ (ge_balance_positive_successor_multiplysecondreal) = 0) /\ (ge_balance_negative_successor_multiplysecondreal) = S ge_signed_half_successor_multiplysecondrealdecode))) /\ ((ge_second_rp_successor_multiply) + ge_balance_negative_successor_multiplysecondreal = (ge_second_rn_successor_multiply) + ge_balance_positive_successor_multiplysecondreal))) /\ (exists ge_balance_positive_successor_multiplysecondimaginary ge_balance_negative_successor_multiplysecondimaginary. (((((ge_representation_imaginary_code_successor_multiplysecond) = 2 * (ge_balance_positive_successor_multiplysecondimaginary) /\ (ge_balance_negative_successor_multiplysecondimaginary) = 0) \/ exists ge_signed_half_successor_multiplysecondimaginarydecode. (((ge_representation_imaginary_code_successor_multiplysecond) = 2 * ge_signed_half_successor_multiplysecondimaginarydecode + 1 /\ (ge_balance_positive_successor_multiplysecondimaginary) = 0) /\ (ge_balance_negative_successor_multiplysecondimaginary) = S ge_signed_half_successor_multiplysecondimaginarydecode))) /\ ((ge_second_ip_successor_multiply) + ge_balance_negative_successor_multiplysecondimaginary = (ge_second_in_successor_multiply) + ge_balance_positive_successor_multiplysecondimaginary)))))) /\ (exists ge_representation_real_code_successor_multiplyoutput ge_representation_imaginary_code_successor_multiplyoutput. (((Q) = ((ge_representation_real_code_successor_multiplyoutput) + (ge_representation_imaginary_code_successor_multiplyoutput)) * S ((ge_representation_real_code_successor_multiplyoutput) + (ge_representation_imaginary_code_successor_multiplyoutput)) + ((ge_representation_imaginary_code_successor_multiplyoutput) + (ge_representation_imaginary_code_successor_multiplyoutput))) /\ ((exists ge_balance_positive_successor_multiplyoutputreal ge_balance_negative_successor_multiplyoutputreal. (((((ge_representation_real_code_successor_multiplyoutput) = 2 * (ge_balance_positive_successor_multiplyoutputreal) /\ (ge_balance_negative_successor_multiplyoutputreal) = 0) \/ exists ge_signed_half_successor_multiplyoutputrealdecode. (((ge_representation_real_code_successor_multiplyoutput) = 2 * ge_signed_half_successor_multiplyoutputrealdecode + 1 /\ (ge_balance_positive_successor_multiplyoutputreal) = 0) /\ (ge_balance_negative_successor_multiplyoutputreal) = S ge_signed_half_successor_multiplyoutputrealdecode))) /\ ((((((((ge_first_rp_successor_multiply) * (ge_second_rp_successor_multiply))) + (((ge_first_rn_successor_multiply) * (ge_second_rn_successor_multiply))))) + (((((ge_first_ip_successor_multiply) * (ge_second_in_successor_multiply))) + (((ge_first_in_successor_multiply) * (ge_second_ip_successor_multiply))))))) + ge_balance_negative_successor_multiplyoutputreal = (((((((ge_first_rp_successor_multiply) * (ge_second_rn_successor_multiply))) + (((ge_first_rn_successor_multiply) * (ge_second_rp_successor_multiply))))) + (((((ge_first_ip_successor_multiply) * (ge_second_ip_successor_multiply))) + (((ge_first_in_successor_multiply) * (ge_second_in_successor_multiply))))))) + ge_balance_positive_successor_multiplyoutputreal))) /\ (exists ge_balance_positive_successor_multiplyoutputimaginary ge_balance_negative_successor_multiplyoutputimaginary. (((((ge_representation_imaginary_code_successor_multiplyoutput) = 2 * (ge_balance_positive_successor_multiplyoutputimaginary) /\ (ge_balance_negative_successor_multiplyoutputimaginary) = 0) \/ exists ge_signed_half_successor_multiplyoutputimaginarydecode. (((ge_representation_imaginary_code_successor_multiplyoutput) = 2 * ge_signed_half_successor_multiplyoutputimaginarydecode + 1 /\ (ge_balance_positive_successor_multiplyoutputimaginary) = 0) /\ (ge_balance_negative_successor_multiplyoutputimaginary) = S ge_signed_half_successor_multiplyoutputimaginarydecode))) /\ ((((((((ge_first_rp_successor_multiply) * (ge_second_ip_successor_multiply))) + (((ge_first_rn_successor_multiply) * (ge_second_in_successor_multiply))))) + (((((ge_first_ip_successor_multiply) * (ge_second_rp_successor_multiply))) + (((ge_first_in_successor_multiply) * (ge_second_rn_successor_multiply))))))) + ge_balance_negative_successor_multiplyoutputimaginary = (((((((ge_first_rp_successor_multiply) * (ge_second_in_successor_multiply))) + (((ge_first_rn_successor_multiply) * (ge_second_ip_successor_multiply))))) + (((((ge_first_ip_successor_multiply) * (ge_second_rn_successor_multiply))) + (((ge_first_in_successor_multiply) * (ge_second_rp_successor_multiply))))))) + ge_balance_positive_successor_multiplyoutputimaginary)))))))))))

Constructive proof overview

Generated structural guide

Every nonempty actual Gaussian product exposes its final factor, the actual shorter prefix product, and the genuine final multiplication.

The unchanged tactic script uses 5 declared prerequisites and contains 58 exact native proof lines.

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

Proof neighborhood

Direct dependencies

le_refl Stable theorem; checked-use authorized beta_at_unique Stable theorem; checked-use authorized GF002F gaussian_multiply_output_transport lt_of_lt_of_le Stable theorem; checked-use authorized le_succ_self Stable 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

58 script commands · 17 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 (1)

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–5

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

  1. L1
    intro b
  2. L2
    intro c
  3. L3
    intro l
  4. L4
    intro Q
  5. L5
    intro hp
02Separate the logical casesL6–9

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

  1. L6
    cases hp
  2. L7
    cases hp_witness
  3. L8
    cases hp_witness_witness
  4. L9
    cases hp_witness_witness_right
03Establish hsL10–14

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

  1. L10
    have hs : GProductStep(b,c,x,x1,l)Definitions: GProductStep
  2. L11
    specialize hp_witness_witness_right_right (l)
  3. L12
    apply hp_witness_witness_right_right
  4. L13
    specialize le_refl (S l)
  5. L14
    apply le_refl
04Separate the logical casesL15–20

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

  1. L15
    cases hs
  2. L16
    cases hs_witness
  3. L17
    cases hs_witness_witness
  4. L18
    cases hs_witness_witness_witness
  5. L19
    cases hs_witness_witness_witness_right
  6. L20
    cases hs_witness_witness_witness_right_right
05Establish heqL21–29

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

  1. L21
    have heq : x4=Q
  2. L22
    specialize beta_at_unique (x)
  3. L23
    specialize beta_at_unique (x1)
  4. L24
    specialize beta_at_unique (S l)
  5. L25
    specialize beta_at_unique (x4)
  6. L26
    specialize beta_at_unique (Q)
  7. L27
    apply beta_at_unique
  8. L28
    exact hs_witness_witness_witness_right_right_left
  9. L29
    exact hp_witness_witness_right_left
06Construct an explicit witnessL30–31

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

  1. L30
    exists (x2)
  2. L31
    exists (x3)
07Separate the logical casesL32–32

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

  1. L32
    split
08Use earlier factsL33–33

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

  1. L33
    exact hs_witness_witness_witness_left
09Separate the logical casesL34–34

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

  1. L34
    split
10Construct an explicit witnessL35–36

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

  1. L35
    exists (x)
  2. L36
    exists (x1)
11Separate the logical casesL37–37

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

  1. L37
    split
12Use earlier factsL38–38

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

  1. L38
    exact hp_witness_witness_left
13Separate the logical casesL39–39

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

  1. L39
    split
14Use earlier factsL40–40

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

  1. L40
    exact hs_witness_witness_witness_right_left
15Fix variables and assumptionsL41–42

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

  1. L41
    intro i
  2. L42
    intro hi
16Use earlier factsL43–52

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

  1. L43
    specialize hp_witness_witness_right_right (i)
  2. L44
    apply hp_witness_witness_right_right
  3. L45
    specialize lt_of_lt_of_le (i)
  4. L46
    specialize lt_of_lt_of_le (l)
  5. L47
    specialize lt_of_lt_of_le (S l)
  6. L48
    apply lt_of_lt_of_le
  7. L49
    exact hi
  8. L50
    specialize le_succ_self (l)
  9. L51
    apply le_succ_self
  10. L52
    specialize gaussian_multiply_output_transport (x3)
17Use earlier factsL53–58

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

  1. L53
    specialize gaussian_multiply_output_transport (x2)
  2. L54
    specialize gaussian_multiply_output_transport (x4)
  3. L55
    specialize gaussian_multiply_output_transport (Q)
  4. L56
    apply gaussian_multiply_output_transport
  5. L57
    exact heq
  6. L58
    exact hs_witness_witness_witness_right_right_right

Library-wide reading audit

Original exact command ledger · 58 lines
  1. 0001intro b
  2. 0002intro c
  3. 0003intro l
  4. 0004intro Q
  5. 0005intro hp
  6. 0006cases hp
  7. 0007cases hp_witness
  8. 0008cases hp_witness_witness
  9. 0009cases hp_witness_witness_right
  10. 0010have hs : exists a P T. ((((exists ff_h_gprod_decompose_factor. ff_h_gprod_decompose_factor + S (a) = S ((S (l)) * c)) /\ exists ff_q_gprod_decompose_factor. b = ff_q_gprod_decompose_factor * S ((S (l)) * c) + (a))) /\ ((((exists ff_h_gprod_decompose_before. ff_h_gprod_decompose_before + S (P) = S ((S (l)) * x1)) /\ exists ff_q_gprod_decompose_before. x = ff_q_gprod_decompose_before * S ((S (l)) * x1) + (P))) /\ ((((exists ff_h_gprod_decompose_after. ff_h_gprod_decompose_after + S (T) = S ((S (S l)) * x1)) /\ exists ff_q_gprod_decompose_after. x = ff_q_gprod_decompose_after * S ((S (S l)) * x1) + (T))) /\ (exists ge_first_rp_decompose_multiply ge_first_rn_decompose_multiply ge_first_ip_decompose_multiply ge_first_in_decompose_multiply ge_second_rp_decompose_multiply ge_second_rn_decompose_multiply ge_second_ip_decompose_multiply ge_second_in_decompose_multiply. ((exists ge_representation_real_code_decompose_multiplyfirst ge_representation_imaginary_code_decompose_multiplyfirst. (((P) = ((ge_representation_real_code_decompose_multiplyfirst) + (ge_representation_imaginary_code_decompose_multiplyfirst)) * S ((ge_representation_real_code_decompose_multiplyfirst) + (ge_representation_imaginary_code_decompose_multiplyfirst)) + ((ge_representation_imaginary_code_decompose_multiplyfirst) + (ge_representation_imaginary_code_decompose_multiplyfirst))) /\ ((exists ge_balance_positive_decompose_multiplyfirstreal ge_balance_negative_decompose_multiplyfirstreal. (((((ge_representation_real_code_decompose_multiplyfirst) = 2 * (ge_balance_positive_decompose_multiplyfirstreal) /\ (ge_balance_negative_decompose_multiplyfirstreal) = 0) \/ exists ge_signed_half_decompose_multiplyfirstrealdecode. (((ge_representation_real_code_decompose_multiplyfirst) = 2 * ge_signed_half_decompose_multiplyfirstrealdecode + 1 /\ (ge_balance_positive_decompose_multiplyfirstreal) = 0) /\ (ge_balance_negative_decompose_multiplyfirstreal) = S ge_signed_half_decompose_multiplyfirstrealdecode))) /\ ((ge_first_rp_decompose_multiply) + ge_balance_negative_decompose_multiplyfirstreal = (ge_first_rn_decompose_multiply) + ge_balance_positive_decompose_multiplyfirstreal))) /\ (exists ge_balance_positive_decompose_multiplyfirstimaginary ge_balance_negative_decompose_multiplyfirstimaginary. (((((ge_representation_imaginary_code_decompose_multiplyfirst) = 2 * (ge_balance_positive_decompose_multiplyfirstimaginary) /\ (ge_balance_negative_decompose_multiplyfirstimaginary) = 0) \/ exists ge_signed_half_decompose_multiplyfirstimaginarydecode. (((ge_representation_imaginary_code_decompose_multiplyfirst) = 2 * ge_signed_half_decompose_multiplyfirstimaginarydecode + 1 /\ (ge_balance_positive_decompose_multiplyfirstimaginary) = 0) /\ (ge_balance_negative_decompose_multiplyfirstimaginary) = S ge_signed_half_decompose_multiplyfirstimaginarydecode))) /\ ((ge_first_ip_decompose_multiply) + ge_balance_negative_decompose_multiplyfirstimaginary = (ge_first_in_decompose_multiply) + ge_balance_positive_decompose_multiplyfirstimaginary)))))) /\ ((exists ge_representation_real_code_decompose_multiplysecond ge_representation_imaginary_code_decompose_multiplysecond. (((a) = ((ge_representation_real_code_decompose_multiplysecond) + (ge_representation_imaginary_code_decompose_multiplysecond)) * S ((ge_representation_real_code_decompose_multiplysecond) + (ge_representation_imaginary_code_decompose_multiplysecond)) + ((ge_representation_imaginary_code_decompose_multiplysecond) + (ge_representation_imaginary_code_decompose_multiplysecond))) /\ ((exists ge_balance_positive_decompose_multiplysecondreal ge_balance_negative_decompose_multiplysecondreal. (((((ge_representation_real_code_decompose_multiplysecond) = 2 * (ge_balance_positive_decompose_multiplysecondreal) /\ (ge_balance_negative_decompose_multiplysecondreal) = 0) \/ exists ge_signed_half_decompose_multiplysecondrealdecode. (((ge_representation_real_code_decompose_multiplysecond) = 2 * ge_signed_half_decompose_multiplysecondrealdecode + 1 /\ (ge_balance_positive_decompose_multiplysecondreal) = 0) /\ (ge_balance_negative_decompose_multiplysecondreal) = S ge_signed_half_decompose_multiplysecondrealdecode))) /\ ((ge_second_rp_decompose_multiply) + ge_balance_negative_decompose_multiplysecondreal = (ge_second_rn_decompose_multiply) + ge_balance_positive_decompose_multiplysecondreal))) /\ (exists ge_balance_positive_decompose_multiplysecondimaginary ge_balance_negative_decompose_multiplysecondimaginary. (((((ge_representation_imaginary_code_decompose_multiplysecond) = 2 * (ge_balance_positive_decompose_multiplysecondimaginary) /\ (ge_balance_negative_decompose_multiplysecondimaginary) = 0) \/ exists ge_signed_half_decompose_multiplysecondimaginarydecode. (((ge_representation_imaginary_code_decompose_multiplysecond) = 2 * ge_signed_half_decompose_multiplysecondimaginarydecode + 1 /\ (ge_balance_positive_decompose_multiplysecondimaginary) = 0) /\ (ge_balance_negative_decompose_multiplysecondimaginary) = S ge_signed_half_decompose_multiplysecondimaginarydecode))) /\ ((ge_second_ip_decompose_multiply) + ge_balance_negative_decompose_multiplysecondimaginary = (ge_second_in_decompose_multiply) + ge_balance_positive_decompose_multiplysecondimaginary)))))) /\ (exists ge_representation_real_code_decompose_multiplyoutput ge_representation_imaginary_code_decompose_multiplyoutput. (((T) = ((ge_representation_real_code_decompose_multiplyoutput) + (ge_representation_imaginary_code_decompose_multiplyoutput)) * S ((ge_representation_real_code_decompose_multiplyoutput) + (ge_representation_imaginary_code_decompose_multiplyoutput)) + ((ge_representation_imaginary_code_decompose_multiplyoutput) + (ge_representation_imaginary_code_decompose_multiplyoutput))) /\ ((exists ge_balance_positive_decompose_multiplyoutputreal ge_balance_negative_decompose_multiplyoutputreal. (((((ge_representation_real_code_decompose_multiplyoutput) = 2 * (ge_balance_positive_decompose_multiplyoutputreal) /\ (ge_balance_negative_decompose_multiplyoutputreal) = 0) \/ exists ge_signed_half_decompose_multiplyoutputrealdecode. (((ge_representation_real_code_decompose_multiplyoutput) = 2 * ge_signed_half_decompose_multiplyoutputrealdecode + 1 /\ (ge_balance_positive_decompose_multiplyoutputreal) = 0) /\ (ge_balance_negative_decompose_multiplyoutputreal) = S ge_signed_half_decompose_multiplyoutputrealdecode))) /\ ((((((((ge_first_rp_decompose_multiply) * (ge_second_rp_decompose_multiply))) + (((ge_first_rn_decompose_multiply) * (ge_second_rn_decompose_multiply))))) + (((((ge_first_ip_decompose_multiply) * (ge_second_in_decompose_multiply))) + (((ge_first_in_decompose_multiply) * (ge_second_ip_decompose_multiply))))))) + ge_balance_negative_decompose_multiplyoutputreal = (((((((ge_first_rp_decompose_multiply) * (ge_second_rn_decompose_multiply))) + (((ge_first_rn_decompose_multiply) * (ge_second_rp_decompose_multiply))))) + (((((ge_first_ip_decompose_multiply) * (ge_second_ip_decompose_multiply))) + (((ge_first_in_decompose_multiply) * (ge_second_in_decompose_multiply))))))) + ge_balance_positive_decompose_multiplyoutputreal))) /\ (exists ge_balance_positive_decompose_multiplyoutputimaginary ge_balance_negative_decompose_multiplyoutputimaginary. (((((ge_representation_imaginary_code_decompose_multiplyoutput) = 2 * (ge_balance_positive_decompose_multiplyoutputimaginary) /\ (ge_balance_negative_decompose_multiplyoutputimaginary) = 0) \/ exists ge_signed_half_decompose_multiplyoutputimaginarydecode. (((ge_representation_imaginary_code_decompose_multiplyoutput) = 2 * ge_signed_half_decompose_multiplyoutputimaginarydecode + 1 /\ (ge_balance_positive_decompose_multiplyoutputimaginary) = 0) /\ (ge_balance_negative_decompose_multiplyoutputimaginary) = S ge_signed_half_decompose_multiplyoutputimaginarydecode))) /\ ((((((((ge_first_rp_decompose_multiply) * (ge_second_ip_decompose_multiply))) + (((ge_first_rn_decompose_multiply) * (ge_second_in_decompose_multiply))))) + (((((ge_first_ip_decompose_multiply) * (ge_second_rp_decompose_multiply))) + (((ge_first_in_decompose_multiply) * (ge_second_rn_decompose_multiply))))))) + ge_balance_negative_decompose_multiplyoutputimaginary = (((((((ge_first_rp_decompose_multiply) * (ge_second_in_decompose_multiply))) + (((ge_first_rn_decompose_multiply) * (ge_second_ip_decompose_multiply))))) + (((((ge_first_ip_decompose_multiply) * (ge_second_rn_decompose_multiply))) + (((ge_first_in_decompose_multiply) * (ge_second_rp_decompose_multiply))))))) + ge_balance_positive_decompose_multiplyoutputimaginary))))))))))))
  11. 0011specialize hp_witness_witness_right_right (l)
  12. 0012apply hp_witness_witness_right_right
  13. 0013specialize le_refl (S l)
  14. 0014apply le_refl
  15. 0015cases hs
  16. 0016cases hs_witness
  17. 0017cases hs_witness_witness
  18. 0018cases hs_witness_witness_witness
  19. 0019cases hs_witness_witness_witness_right
  20. 0020cases hs_witness_witness_witness_right_right
  21. 0021have heq : x4=Q
  22. 0022specialize beta_at_unique (x)
  23. 0023specialize beta_at_unique (x1)
  24. 0024specialize beta_at_unique (S l)
  25. 0025specialize beta_at_unique (x4)
  26. 0026specialize beta_at_unique (Q)
  27. 0027apply beta_at_unique
  28. 0028exact hs_witness_witness_witness_right_right_left
  29. 0029exact hp_witness_witness_right_left
  30. 0030exists (x2)
  31. 0031exists (x3)
  32. 0032split
  33. 0033exact hs_witness_witness_witness_left
  34. 0034split
  35. 0035exists (x)
  36. 0036exists (x1)
  37. 0037split
  38. 0038exact hp_witness_witness_left
  39. 0039split
  40. 0040exact hs_witness_witness_witness_right_left
  41. 0041intro i
  42. 0042intro hi
  43. 0043specialize hp_witness_witness_right_right (i)
  44. 0044apply hp_witness_witness_right_right
  45. 0045specialize lt_of_lt_of_le (i)
  46. 0046specialize lt_of_lt_of_le (l)
  47. 0047specialize lt_of_lt_of_le (S l)
  48. 0048apply lt_of_lt_of_le
  49. 0049exact hi
  50. 0050specialize le_succ_self (l)
  51. 0051apply le_succ_self
  52. 0052specialize gaussian_multiply_output_transport (x3)
  53. 0053specialize gaussian_multiply_output_transport (x2)
  54. 0054specialize gaussian_multiply_output_transport (x4)
  55. 0055specialize gaussian_multiply_output_transport (Q)
  56. 0056apply gaussian_multiply_output_transport
  57. 0057exact heq
  58. 0058exact hs_witness_witness_witness_right_right_right