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 expanded first-order arithmetic statement
forall F G H n a e z. ((((~((a)=0)) /\ (((~((e)=0)) /\ (exists dfg_middle_transpose_source dfg_first_transpose_source dfg_last_transpose_source dfg_value_transpose_source. (((n)=((a)*(e))*dfg_middle_transpose_source) /\ (((exists dst_positive_code_transpose_sourcefirst dst_positive_scale_transpose_sourcefirst dst_negative_code_transpose_sourcefirst dst_negative_scale_transpose_sourcefirst dst_positive_transpose_sourcefirst dst_negative_transpose_sourcefirst. (((F) = (((((dst_positive_code_transpose_sourcefirst) + (dst_positive_scale_transpose_sourcefirst)) * S ((dst_positive_code_transpose_sourcefirst) + (dst_positive_scale_transpose_sourcefirst)) + ((dst_positive_scale_transpose_sourcefirst) + (dst_positive_scale_transpose_sourcefirst))) + (((dst_negative_code_transpose_sourcefirst) + (dst_negative_scale_transpose_sourcefirst)) * S ((dst_negative_code_transpose_sourcefirst) + (dst_negative_scale_transpose_sourcefirst)) + ((dst_negative_scale_transpose_sourcefirst) + (dst_negative_scale_transpose_sourcefirst)))) * S ((((dst_positive_code_transpose_sourcefirst) + (dst_positive_scale_transpose_sourcefirst)) * S ((dst_positive_code_transpose_sourcefirst) + (dst_positive_scale_transpose_sourcefirst)) + ((dst_positive_scale_transpose_sourcefirst) + (dst_positive_scale_transpose_sourcefirst))) + (((dst_negative_code_transpose_sourcefirst) + (dst_negative_scale_transpose_sourcefirst)) * S ((dst_negative_code_transpose_sourcefirst) + (dst_negative_scale_transpose_sourcefirst)) + ((dst_negative_scale_transpose_sourcefirst) + (dst_negative_scale_transpose_sourcefirst)))) + ((((dst_negative_code_transpose_sourcefirst) + (dst_negative_scale_transpose_sourcefirst)) * S ((dst_negative_code_transpose_sourcefirst) + (dst_negative_scale_transpose_sourcefirst)) + ((dst_negative_scale_transpose_sourcefirst) + (dst_negative_scale_transpose_sourcefirst))) + (((dst_negative_code_transpose_sourcefirst) + (dst_negative_scale_transpose_sourcefirst)) * S ((dst_negative_code_transpose_sourcefirst) + (dst_negative_scale_transpose_sourcefirst)) + ((dst_negative_scale_transpose_sourcefirst) + (dst_negative_scale_transpose_sourcefirst)))))) /\ (((((exists ff_h_pvs_transpose_sourcefirstpositive. ff_h_pvs_transpose_sourcefirstpositive + S (dst_positive_transpose_sourcefirst) = S ((S (a)) * dst_positive_scale_transpose_sourcefirst)) /\ exists ff_q_pvs_transpose_sourcefirstpositive. dst_positive_code_transpose_sourcefirst = ff_q_pvs_transpose_sourcefirstpositive * S ((S (a)) * dst_positive_scale_transpose_sourcefirst) + (dst_positive_transpose_sourcefirst))) /\ (((((exists ff_h_pvs_transpose_sourcefirstnegative. ff_h_pvs_transpose_sourcefirstnegative + S (dst_negative_transpose_sourcefirst) = S ((S (a)) * dst_negative_scale_transpose_sourcefirst)) /\ exists ff_q_pvs_transpose_sourcefirstnegative. dst_negative_code_transpose_sourcefirst = ff_q_pvs_transpose_sourcefirstnegative * S ((S (a)) * dst_negative_scale_transpose_sourcefirst) + (dst_negative_transpose_sourcefirst))) /\ (exists ge_balance_positive_transpose_sourcefirstvalue ge_balance_negative_transpose_sourcefirstvalue. (((((dfg_first_transpose_source) = 2 * (ge_balance_positive_transpose_sourcefirstvalue) /\ (ge_balance_negative_transpose_sourcefirstvalue) = 0) \/ exists ge_signed_half_transpose_sourcefirstvaluedecode. (((dfg_first_transpose_source) = 2 * ge_signed_half_transpose_sourcefirstvaluedecode + 1 /\ (ge_balance_positive_transpose_sourcefirstvalue) = 0) /\ (ge_balance_negative_transpose_sourcefirstvalue) = S ge_signed_half_transpose_sourcefirstvaluedecode))) /\ ((dst_positive_transpose_sourcefirst) + ge_balance_negative_transpose_sourcefirstvalue = (dst_negative_transpose_sourcefirst) + ge_balance_positive_transpose_sourcefirstvalue))))))))) /\ (((exists dst_positive_code_transpose_sourcelast dst_positive_scale_transpose_sourcelast dst_negative_code_transpose_sourcelast dst_negative_scale_transpose_sourcelast dst_positive_transpose_sourcelast dst_negative_transpose_sourcelast. (((H) = (((((dst_positive_code_transpose_sourcelast) + (dst_positive_scale_transpose_sourcelast)) * S ((dst_positive_code_transpose_sourcelast) + (dst_positive_scale_transpose_sourcelast)) + ((dst_positive_scale_transpose_sourcelast) + (dst_positive_scale_transpose_sourcelast))) + (((dst_negative_code_transpose_sourcelast) + (dst_negative_scale_transpose_sourcelast)) * S ((dst_negative_code_transpose_sourcelast) + (dst_negative_scale_transpose_sourcelast)) + ((dst_negative_scale_transpose_sourcelast) + (dst_negative_scale_transpose_sourcelast)))) * S ((((dst_positive_code_transpose_sourcelast) + (dst_positive_scale_transpose_sourcelast)) * S ((dst_positive_code_transpose_sourcelast) + (dst_positive_scale_transpose_sourcelast)) + ((dst_positive_scale_transpose_sourcelast) + (dst_positive_scale_transpose_sourcelast))) + (((dst_negative_code_transpose_sourcelast) + (dst_negative_scale_transpose_sourcelast)) * S ((dst_negative_code_transpose_sourcelast) + (dst_negative_scale_transpose_sourcelast)) + ((dst_negative_scale_transpose_sourcelast) + (dst_negative_scale_transpose_sourcelast)))) + ((((dst_negative_code_transpose_sourcelast) + (dst_negative_scale_transpose_sourcelast)) * S ((dst_negative_code_transpose_sourcelast) + (dst_negative_scale_transpose_sourcelast)) + ((dst_negative_scale_transpose_sourcelast) + (dst_negative_scale_transpose_sourcelast))) + (((dst_negative_code_transpose_sourcelast) + (dst_negative_scale_transpose_sourcelast)) * S ((dst_negative_code_transpose_sourcelast) + (dst_negative_scale_transpose_sourcelast)) + ((dst_negative_scale_transpose_sourcelast) + (dst_negative_scale_transpose_sourcelast)))))) /\ (((((exists ff_h_pvs_transpose_sourcelastpositive. ff_h_pvs_transpose_sourcelastpositive + S (dst_positive_transpose_sourcelast) = S ((S (e)) * dst_positive_scale_transpose_sourcelast)) /\ exists ff_q_pvs_transpose_sourcelastpositive. dst_positive_code_transpose_sourcelast = ff_q_pvs_transpose_sourcelastpositive * S ((S (e)) * dst_positive_scale_transpose_sourcelast) + (dst_positive_transpose_sourcelast))) /\ (((((exists ff_h_pvs_transpose_sourcelastnegative. ff_h_pvs_transpose_sourcelastnegative + S (dst_negative_transpose_sourcelast) = S ((S (e)) * dst_negative_scale_transpose_sourcelast)) /\ exists ff_q_pvs_transpose_sourcelastnegative. dst_negative_code_transpose_sourcelast = ff_q_pvs_transpose_sourcelastnegative * S ((S (e)) * dst_negative_scale_transpose_sourcelast) + (dst_negative_transpose_sourcelast))) /\ (exists ge_balance_positive_transpose_sourcelastvalue ge_balance_negative_transpose_sourcelastvalue. (((((dfg_last_transpose_source) = 2 * (ge_balance_positive_transpose_sourcelastvalue) /\ (ge_balance_negative_transpose_sourcelastvalue) = 0) \/ exists ge_signed_half_transpose_sourcelastvaluedecode. (((dfg_last_transpose_source) = 2 * ge_signed_half_transpose_sourcelastvaluedecode + 1 /\ (ge_balance_positive_transpose_sourcelastvalue) = 0) /\ (ge_balance_negative_transpose_sourcelastvalue) = S ge_signed_half_transpose_sourcelastvaluedecode))) /\ ((dst_positive_transpose_sourcelast) + ge_balance_negative_transpose_sourcelastvalue = (dst_negative_transpose_sourcelast) + ge_balance_positive_transpose_sourcelastvalue))))))))) /\ (((exists dst_positive_code_transpose_sourcemiddle dst_positive_scale_transpose_sourcemiddle dst_negative_code_transpose_sourcemiddle dst_negative_scale_transpose_sourcemiddle dst_positive_transpose_sourcemiddle dst_negative_transpose_sourcemiddle. (((G) = (((((dst_positive_code_transpose_sourcemiddle) + (dst_positive_scale_transpose_sourcemiddle)) * S ((dst_positive_code_transpose_sourcemiddle) + (dst_positive_scale_transpose_sourcemiddle)) + ((dst_positive_scale_transpose_sourcemiddle) + (dst_positive_scale_transpose_sourcemiddle))) + (((dst_negative_code_transpose_sourcemiddle) + (dst_negative_scale_transpose_sourcemiddle)) * S ((dst_negative_code_transpose_sourcemiddle) + (dst_negative_scale_transpose_sourcemiddle)) + ((dst_negative_scale_transpose_sourcemiddle) + (dst_negative_scale_transpose_sourcemiddle)))) * S ((((dst_positive_code_transpose_sourcemiddle) + (dst_positive_scale_transpose_sourcemiddle)) * S ((dst_positive_code_transpose_sourcemiddle) + (dst_positive_scale_transpose_sourcemiddle)) + ((dst_positive_scale_transpose_sourcemiddle) + (dst_positive_scale_transpose_sourcemiddle))) + (((dst_negative_code_transpose_sourcemiddle) + (dst_negative_scale_transpose_sourcemiddle)) * S ((dst_negative_code_transpose_sourcemiddle) + (dst_negative_scale_transpose_sourcemiddle)) + ((dst_negative_scale_transpose_sourcemiddle) + (dst_negative_scale_transpose_sourcemiddle)))) + ((((dst_negative_code_transpose_sourcemiddle) + (dst_negative_scale_transpose_sourcemiddle)) * S ((dst_negative_code_transpose_sourcemiddle) + (dst_negative_scale_transpose_sourcemiddle)) + ((dst_negative_scale_transpose_sourcemiddle) + (dst_negative_scale_transpose_sourcemiddle))) + (((dst_negative_code_transpose_sourcemiddle) + (dst_negative_scale_transpose_sourcemiddle)) * S ((dst_negative_code_transpose_sourcemiddle) + (dst_negative_scale_transpose_sourcemiddle)) + ((dst_negative_scale_transpose_sourcemiddle) + (dst_negative_scale_transpose_sourcemiddle)))))) /\ (((((exists ff_h_pvs_transpose_sourcemiddlepositive. ff_h_pvs_transpose_sourcemiddlepositive + S (dst_positive_transpose_sourcemiddle) = S ((S (dfg_middle_transpose_source)) * dst_positive_scale_transpose_sourcemiddle)) /\ exists ff_q_pvs_transpose_sourcemiddlepositive. dst_positive_code_transpose_sourcemiddle = ff_q_pvs_transpose_sourcemiddlepositive * S ((S (dfg_middle_transpose_source)) * dst_positive_scale_transpose_sourcemiddle) + (dst_positive_transpose_sourcemiddle))) /\ (((((exists ff_h_pvs_transpose_sourcemiddlenegative. ff_h_pvs_transpose_sourcemiddlenegative + S (dst_negative_transpose_sourcemiddle) = S ((S (dfg_middle_transpose_source)) * dst_negative_scale_transpose_sourcemiddle)) /\ exists ff_q_pvs_transpose_sourcemiddlenegative. dst_negative_code_transpose_sourcemiddle = ff_q_pvs_transpose_sourcemiddlenegative * S ((S (dfg_middle_transpose_source)) * dst_negative_scale_transpose_sourcemiddle) + (dst_negative_transpose_sourcemiddle))) /\ (exists ge_balance_positive_transpose_sourcemiddlevalue ge_balance_negative_transpose_sourcemiddlevalue. (((((dfg_value_transpose_source) = 2 * (ge_balance_positive_transpose_sourcemiddlevalue) /\ (ge_balance_negative_transpose_sourcemiddlevalue) = 0) \/ exists ge_signed_half_transpose_sourcemiddlevaluedecode. (((dfg_value_transpose_source) = 2 * ge_signed_half_transpose_sourcemiddlevaluedecode + 1 /\ (ge_balance_positive_transpose_sourcemiddlevalue) = 0) /\ (ge_balance_negative_transpose_sourcemiddlevalue) = S ge_signed_half_transpose_sourcemiddlevaluedecode))) /\ ((dst_positive_transpose_sourcemiddle) + ge_balance_negative_transpose_sourcemiddlevalue = (dst_negative_transpose_sourcemiddle) + ge_balance_positive_transpose_sourcemiddlevalue))))))))) /\ (exists dfg_inner_transpose_sourceproduct. ((exists sto_ap_transpose_sourceproductinner sto_an_transpose_sourceproductinner sto_bp_transpose_sourceproductinner sto_bn_transpose_sourceproductinner sto_cp_transpose_sourceproductinner sto_cn_transpose_sourceproductinner. (((((dfg_last_transpose_source) = 2 * (sto_ap_transpose_sourceproductinner) /\ (sto_an_transpose_sourceproductinner) = 0) \/ exists ge_signed_half_transpose_sourceproductinnerleft. (((dfg_last_transpose_source) = 2 * ge_signed_half_transpose_sourceproductinnerleft + 1 /\ (sto_ap_transpose_sourceproductinner) = 0) /\ (sto_an_transpose_sourceproductinner) = S ge_signed_half_transpose_sourceproductinnerleft))) /\ ((((((dfg_value_transpose_source) = 2 * (sto_bp_transpose_sourceproductinner) /\ (sto_bn_transpose_sourceproductinner) = 0) \/ exists ge_signed_half_transpose_sourceproductinnerright. (((dfg_value_transpose_source) = 2 * ge_signed_half_transpose_sourceproductinnerright + 1 /\ (sto_bp_transpose_sourceproductinner) = 0) /\ (sto_bn_transpose_sourceproductinner) = S ge_signed_half_transpose_sourceproductinnerright))) /\ ((((((dfg_inner_transpose_sourceproduct) = 2 * (sto_cp_transpose_sourceproductinner) /\ (sto_cn_transpose_sourceproductinner) = 0) \/ exists ge_signed_half_transpose_sourceproductinneroutput. (((dfg_inner_transpose_sourceproduct) = 2 * ge_signed_half_transpose_sourceproductinneroutput + 1 /\ (sto_cp_transpose_sourceproductinner) = 0) /\ (sto_cn_transpose_sourceproductinner) = S ge_signed_half_transpose_sourceproductinneroutput))) /\ ((sto_ap_transpose_sourceproductinner * sto_bp_transpose_sourceproductinner + sto_an_transpose_sourceproductinner * sto_bn_transpose_sourceproductinner) + sto_cn_transpose_sourceproductinner = (sto_ap_transpose_sourceproductinner * sto_bn_transpose_sourceproductinner + sto_an_transpose_sourceproductinner * sto_bp_transpose_sourceproductinner) + sto_cp_transpose_sourceproductinner))))))) /\ (exists sto_ap_transpose_sourceproductouter sto_an_transpose_sourceproductouter sto_bp_transpose_sourceproductouter sto_bn_transpose_sourceproductouter sto_cp_transpose_sourceproductouter sto_cn_transpose_sourceproductouter. (((((dfg_first_transpose_source) = 2 * (sto_ap_transpose_sourceproductouter) /\ (sto_an_transpose_sourceproductouter) = 0) \/ exists ge_signed_half_transpose_sourceproductouterleft. (((dfg_first_transpose_source) = 2 * ge_signed_half_transpose_sourceproductouterleft + 1 /\ (sto_ap_transpose_sourceproductouter) = 0) /\ (sto_an_transpose_sourceproductouter) = S ge_signed_half_transpose_sourceproductouterleft))) /\ ((((((dfg_inner_transpose_sourceproduct) = 2 * (sto_bp_transpose_sourceproductouter) /\ (sto_bn_transpose_sourceproductouter) = 0) \/ exists ge_signed_half_transpose_sourceproductouterright. (((dfg_inner_transpose_sourceproduct) = 2 * ge_signed_half_transpose_sourceproductouterright + 1 /\ (sto_bp_transpose_sourceproductouter) = 0) /\ (sto_bn_transpose_sourceproductouter) = S ge_signed_half_transpose_sourceproductouterright))) /\ ((((((z) = 2 * (sto_cp_transpose_sourceproductouter) /\ (sto_cn_transpose_sourceproductouter) = 0) \/ exists ge_signed_half_transpose_sourceproductouteroutput. (((z) = 2 * ge_signed_half_transpose_sourceproductouteroutput + 1 /\ (sto_cp_transpose_sourceproductouter) = 0) /\ (sto_cn_transpose_sourceproductouter) = S ge_signed_half_transpose_sourceproductouteroutput))) /\ ((sto_ap_transpose_sourceproductouter * sto_bp_transpose_sourceproductouter + sto_an_transpose_sourceproductouter * sto_bn_transpose_sourceproductouter) + sto_cn_transpose_sourceproductouter = (sto_ap_transpose_sourceproductouter * sto_bn_transpose_sourceproductouter + sto_an_transpose_sourceproductouter * sto_bp_transpose_sourceproductouter) + sto_cp_transpose_sourceproductouter))))))))))))))))))))) \/ ((((a)=0 \/ ((e)=0 \/ ~(exists pvs_factor_transpose_sourceomittednondivisor. (n) = ((a)*(e)) * pvs_factor_transpose_sourceomittednondivisor))) /\ ((z)=0)))) -> ((((~((e)=0)) /\ (((~((a)=0)) /\ (exists dfg_middle_transpose_target dfg_first_transpose_target dfg_last_transpose_target dfg_value_transpose_target. (((n)=((e)*(a))*dfg_middle_transpose_target) /\ (((exists dst_positive_code_transpose_targetfirst dst_positive_scale_transpose_targetfirst dst_negative_code_transpose_targetfirst dst_negative_scale_transpose_targetfirst dst_positive_transpose_targetfirst dst_negative_transpose_targetfirst. (((H) = (((((dst_positive_code_transpose_targetfirst) + (dst_positive_scale_transpose_targetfirst)) * S ((dst_positive_code_transpose_targetfirst) + (dst_positive_scale_transpose_targetfirst)) + ((dst_positive_scale_transpose_targetfirst) + (dst_positive_scale_transpose_targetfirst))) + (((dst_negative_code_transpose_targetfirst) + (dst_negative_scale_transpose_targetfirst)) * S ((dst_negative_code_transpose_targetfirst) + (dst_negative_scale_transpose_targetfirst)) + ((dst_negative_scale_transpose_targetfirst) + (dst_negative_scale_transpose_targetfirst)))) * S ((((dst_positive_code_transpose_targetfirst) + (dst_positive_scale_transpose_targetfirst)) * S ((dst_positive_code_transpose_targetfirst) + (dst_positive_scale_transpose_targetfirst)) + ((dst_positive_scale_transpose_targetfirst) + (dst_positive_scale_transpose_targetfirst))) + (((dst_negative_code_transpose_targetfirst) + (dst_negative_scale_transpose_targetfirst)) * S ((dst_negative_code_transpose_targetfirst) + (dst_negative_scale_transpose_targetfirst)) + ((dst_negative_scale_transpose_targetfirst) + (dst_negative_scale_transpose_targetfirst)))) + ((((dst_negative_code_transpose_targetfirst) + (dst_negative_scale_transpose_targetfirst)) * S ((dst_negative_code_transpose_targetfirst) + (dst_negative_scale_transpose_targetfirst)) + ((dst_negative_scale_transpose_targetfirst) + (dst_negative_scale_transpose_targetfirst))) + (((dst_negative_code_transpose_targetfirst) + (dst_negative_scale_transpose_targetfirst)) * S ((dst_negative_code_transpose_targetfirst) + (dst_negative_scale_transpose_targetfirst)) + ((dst_negative_scale_transpose_targetfirst) + (dst_negative_scale_transpose_targetfirst)))))) /\ (((((exists ff_h_pvs_transpose_targetfirstpositive. ff_h_pvs_transpose_targetfirstpositive + S (dst_positive_transpose_targetfirst) = S ((S (e)) * dst_positive_scale_transpose_targetfirst)) /\ exists ff_q_pvs_transpose_targetfirstpositive. dst_positive_code_transpose_targetfirst = ff_q_pvs_transpose_targetfirstpositive * S ((S (e)) * dst_positive_scale_transpose_targetfirst) + (dst_positive_transpose_targetfirst))) /\ (((((exists ff_h_pvs_transpose_targetfirstnegative. ff_h_pvs_transpose_targetfirstnegative + S (dst_negative_transpose_targetfirst) = S ((S (e)) * dst_negative_scale_transpose_targetfirst)) /\ exists ff_q_pvs_transpose_targetfirstnegative. dst_negative_code_transpose_targetfirst = ff_q_pvs_transpose_targetfirstnegative * S ((S (e)) * dst_negative_scale_transpose_targetfirst) + (dst_negative_transpose_targetfirst))) /\ (exists ge_balance_positive_transpose_targetfirstvalue ge_balance_negative_transpose_targetfirstvalue. (((((dfg_first_transpose_target) = 2 * (ge_balance_positive_transpose_targetfirstvalue) /\ (ge_balance_negative_transpose_targetfirstvalue) = 0) \/ exists ge_signed_half_transpose_targetfirstvaluedecode. (((dfg_first_transpose_target) = 2 * ge_signed_half_transpose_targetfirstvaluedecode + 1 /\ (ge_balance_positive_transpose_targetfirstvalue) = 0) /\ (ge_balance_negative_transpose_targetfirstvalue) = S ge_signed_half_transpose_targetfirstvaluedecode))) /\ ((dst_positive_transpose_targetfirst) + ge_balance_negative_transpose_targetfirstvalue = (dst_negative_transpose_targetfirst) + ge_balance_positive_transpose_targetfirstvalue))))))))) /\ (((exists dst_positive_code_transpose_targetlast dst_positive_scale_transpose_targetlast dst_negative_code_transpose_targetlast dst_negative_scale_transpose_targetlast dst_positive_transpose_targetlast dst_negative_transpose_targetlast. (((F) = (((((dst_positive_code_transpose_targetlast) + (dst_positive_scale_transpose_targetlast)) * S ((dst_positive_code_transpose_targetlast) + (dst_positive_scale_transpose_targetlast)) + ((dst_positive_scale_transpose_targetlast) + (dst_positive_scale_transpose_targetlast))) + (((dst_negative_code_transpose_targetlast) + (dst_negative_scale_transpose_targetlast)) * S ((dst_negative_code_transpose_targetlast) + (dst_negative_scale_transpose_targetlast)) + ((dst_negative_scale_transpose_targetlast) + (dst_negative_scale_transpose_targetlast)))) * S ((((dst_positive_code_transpose_targetlast) + (dst_positive_scale_transpose_targetlast)) * S ((dst_positive_code_transpose_targetlast) + (dst_positive_scale_transpose_targetlast)) + ((dst_positive_scale_transpose_targetlast) + (dst_positive_scale_transpose_targetlast))) + (((dst_negative_code_transpose_targetlast) + (dst_negative_scale_transpose_targetlast)) * S ((dst_negative_code_transpose_targetlast) + (dst_negative_scale_transpose_targetlast)) + ((dst_negative_scale_transpose_targetlast) + (dst_negative_scale_transpose_targetlast)))) + ((((dst_negative_code_transpose_targetlast) + (dst_negative_scale_transpose_targetlast)) * S ((dst_negative_code_transpose_targetlast) + (dst_negative_scale_transpose_targetlast)) + ((dst_negative_scale_transpose_targetlast) + (dst_negative_scale_transpose_targetlast))) + (((dst_negative_code_transpose_targetlast) + (dst_negative_scale_transpose_targetlast)) * S ((dst_negative_code_transpose_targetlast) + (dst_negative_scale_transpose_targetlast)) + ((dst_negative_scale_transpose_targetlast) + (dst_negative_scale_transpose_targetlast)))))) /\ (((((exists ff_h_pvs_transpose_targetlastpositive. ff_h_pvs_transpose_targetlastpositive + S (dst_positive_transpose_targetlast) = S ((S (a)) * dst_positive_scale_transpose_targetlast)) /\ exists ff_q_pvs_transpose_targetlastpositive. dst_positive_code_transpose_targetlast = ff_q_pvs_transpose_targetlastpositive * S ((S (a)) * dst_positive_scale_transpose_targetlast) + (dst_positive_transpose_targetlast))) /\ (((((exists ff_h_pvs_transpose_targetlastnegative. ff_h_pvs_transpose_targetlastnegative + S (dst_negative_transpose_targetlast) = S ((S (a)) * dst_negative_scale_transpose_targetlast)) /\ exists ff_q_pvs_transpose_targetlastnegative. dst_negative_code_transpose_targetlast = ff_q_pvs_transpose_targetlastnegative * S ((S (a)) * dst_negative_scale_transpose_targetlast) + (dst_negative_transpose_targetlast))) /\ (exists ge_balance_positive_transpose_targetlastvalue ge_balance_negative_transpose_targetlastvalue. (((((dfg_last_transpose_target) = 2 * (ge_balance_positive_transpose_targetlastvalue) /\ (ge_balance_negative_transpose_targetlastvalue) = 0) \/ exists ge_signed_half_transpose_targetlastvaluedecode. (((dfg_last_transpose_target) = 2 * ge_signed_half_transpose_targetlastvaluedecode + 1 /\ (ge_balance_positive_transpose_targetlastvalue) = 0) /\ (ge_balance_negative_transpose_targetlastvalue) = S ge_signed_half_transpose_targetlastvaluedecode))) /\ ((dst_positive_transpose_targetlast) + ge_balance_negative_transpose_targetlastvalue = (dst_negative_transpose_targetlast) + ge_balance_positive_transpose_targetlastvalue))))))))) /\ (((exists dst_positive_code_transpose_targetmiddle dst_positive_scale_transpose_targetmiddle dst_negative_code_transpose_targetmiddle dst_negative_scale_transpose_targetmiddle dst_positive_transpose_targetmiddle dst_negative_transpose_targetmiddle. (((G) = (((((dst_positive_code_transpose_targetmiddle) + (dst_positive_scale_transpose_targetmiddle)) * S ((dst_positive_code_transpose_targetmiddle) + (dst_positive_scale_transpose_targetmiddle)) + ((dst_positive_scale_transpose_targetmiddle) + (dst_positive_scale_transpose_targetmiddle))) + (((dst_negative_code_transpose_targetmiddle) + (dst_negative_scale_transpose_targetmiddle)) * S ((dst_negative_code_transpose_targetmiddle) + (dst_negative_scale_transpose_targetmiddle)) + ((dst_negative_scale_transpose_targetmiddle) + (dst_negative_scale_transpose_targetmiddle)))) * S ((((dst_positive_code_transpose_targetmiddle) + (dst_positive_scale_transpose_targetmiddle)) * S ((dst_positive_code_transpose_targetmiddle) + (dst_positive_scale_transpose_targetmiddle)) + ((dst_positive_scale_transpose_targetmiddle) + (dst_positive_scale_transpose_targetmiddle))) + (((dst_negative_code_transpose_targetmiddle) + (dst_negative_scale_transpose_targetmiddle)) * S ((dst_negative_code_transpose_targetmiddle) + (dst_negative_scale_transpose_targetmiddle)) + ((dst_negative_scale_transpose_targetmiddle) + (dst_negative_scale_transpose_targetmiddle)))) + ((((dst_negative_code_transpose_targetmiddle) + (dst_negative_scale_transpose_targetmiddle)) * S ((dst_negative_code_transpose_targetmiddle) + (dst_negative_scale_transpose_targetmiddle)) + ((dst_negative_scale_transpose_targetmiddle) + (dst_negative_scale_transpose_targetmiddle))) + (((dst_negative_code_transpose_targetmiddle) + (dst_negative_scale_transpose_targetmiddle)) * S ((dst_negative_code_transpose_targetmiddle) + (dst_negative_scale_transpose_targetmiddle)) + ((dst_negative_scale_transpose_targetmiddle) + (dst_negative_scale_transpose_targetmiddle)))))) /\ (((((exists ff_h_pvs_transpose_targetmiddlepositive. ff_h_pvs_transpose_targetmiddlepositive + S (dst_positive_transpose_targetmiddle) = S ((S (dfg_middle_transpose_target)) * dst_positive_scale_transpose_targetmiddle)) /\ exists ff_q_pvs_transpose_targetmiddlepositive. dst_positive_code_transpose_targetmiddle = ff_q_pvs_transpose_targetmiddlepositive * S ((S (dfg_middle_transpose_target)) * dst_positive_scale_transpose_targetmiddle) + (dst_positive_transpose_targetmiddle))) /\ (((((exists ff_h_pvs_transpose_targetmiddlenegative. ff_h_pvs_transpose_targetmiddlenegative + S (dst_negative_transpose_targetmiddle) = S ((S (dfg_middle_transpose_target)) * dst_negative_scale_transpose_targetmiddle)) /\ exists ff_q_pvs_transpose_targetmiddlenegative. dst_negative_code_transpose_targetmiddle = ff_q_pvs_transpose_targetmiddlenegative * S ((S (dfg_middle_transpose_target)) * dst_negative_scale_transpose_targetmiddle) + (dst_negative_transpose_targetmiddle))) /\ (exists ge_balance_positive_transpose_targetmiddlevalue ge_balance_negative_transpose_targetmiddlevalue. (((((dfg_value_transpose_target) = 2 * (ge_balance_positive_transpose_targetmiddlevalue) /\ (ge_balance_negative_transpose_targetmiddlevalue) = 0) \/ exists ge_signed_half_transpose_targetmiddlevaluedecode. (((dfg_value_transpose_target) = 2 * ge_signed_half_transpose_targetmiddlevaluedecode + 1 /\ (ge_balance_positive_transpose_targetmiddlevalue) = 0) /\ (ge_balance_negative_transpose_targetmiddlevalue) = S ge_signed_half_transpose_targetmiddlevaluedecode))) /\ ((dst_positive_transpose_targetmiddle) + ge_balance_negative_transpose_targetmiddlevalue = (dst_negative_transpose_targetmiddle) + ge_balance_positive_transpose_targetmiddlevalue))))))))) /\ (exists dfg_inner_transpose_targetproduct. ((exists sto_ap_transpose_targetproductinner sto_an_transpose_targetproductinner sto_bp_transpose_targetproductinner sto_bn_transpose_targetproductinner sto_cp_transpose_targetproductinner sto_cn_transpose_targetproductinner. (((((dfg_last_transpose_target) = 2 * (sto_ap_transpose_targetproductinner) /\ (sto_an_transpose_targetproductinner) = 0) \/ exists ge_signed_half_transpose_targetproductinnerleft. (((dfg_last_transpose_target) = 2 * ge_signed_half_transpose_targetproductinnerleft + 1 /\ (sto_ap_transpose_targetproductinner) = 0) /\ (sto_an_transpose_targetproductinner) = S ge_signed_half_transpose_targetproductinnerleft))) /\ ((((((dfg_value_transpose_target) = 2 * (sto_bp_transpose_targetproductinner) /\ (sto_bn_transpose_targetproductinner) = 0) \/ exists ge_signed_half_transpose_targetproductinnerright. (((dfg_value_transpose_target) = 2 * ge_signed_half_transpose_targetproductinnerright + 1 /\ (sto_bp_transpose_targetproductinner) = 0) /\ (sto_bn_transpose_targetproductinner) = S ge_signed_half_transpose_targetproductinnerright))) /\ ((((((dfg_inner_transpose_targetproduct) = 2 * (sto_cp_transpose_targetproductinner) /\ (sto_cn_transpose_targetproductinner) = 0) \/ exists ge_signed_half_transpose_targetproductinneroutput. (((dfg_inner_transpose_targetproduct) = 2 * ge_signed_half_transpose_targetproductinneroutput + 1 /\ (sto_cp_transpose_targetproductinner) = 0) /\ (sto_cn_transpose_targetproductinner) = S ge_signed_half_transpose_targetproductinneroutput))) /\ ((sto_ap_transpose_targetproductinner * sto_bp_transpose_targetproductinner + sto_an_transpose_targetproductinner * sto_bn_transpose_targetproductinner) + sto_cn_transpose_targetproductinner = (sto_ap_transpose_targetproductinner * sto_bn_transpose_targetproductinner + sto_an_transpose_targetproductinner * sto_bp_transpose_targetproductinner) + sto_cp_transpose_targetproductinner))))))) /\ (exists sto_ap_transpose_targetproductouter sto_an_transpose_targetproductouter sto_bp_transpose_targetproductouter sto_bn_transpose_targetproductouter sto_cp_transpose_targetproductouter sto_cn_transpose_targetproductouter. (((((dfg_first_transpose_target) = 2 * (sto_ap_transpose_targetproductouter) /\ (sto_an_transpose_targetproductouter) = 0) \/ exists ge_signed_half_transpose_targetproductouterleft. (((dfg_first_transpose_target) = 2 * ge_signed_half_transpose_targetproductouterleft + 1 /\ (sto_ap_transpose_targetproductouter) = 0) /\ (sto_an_transpose_targetproductouter) = S ge_signed_half_transpose_targetproductouterleft))) /\ ((((((dfg_inner_transpose_targetproduct) = 2 * (sto_bp_transpose_targetproductouter) /\ (sto_bn_transpose_targetproductouter) = 0) \/ exists ge_signed_half_transpose_targetproductouterright. (((dfg_inner_transpose_targetproduct) = 2 * ge_signed_half_transpose_targetproductouterright + 1 /\ (sto_bp_transpose_targetproductouter) = 0) /\ (sto_bn_transpose_targetproductouter) = S ge_signed_half_transpose_targetproductouterright))) /\ ((((((z) = 2 * (sto_cp_transpose_targetproductouter) /\ (sto_cn_transpose_targetproductouter) = 0) \/ exists ge_signed_half_transpose_targetproductouteroutput. (((z) = 2 * ge_signed_half_transpose_targetproductouteroutput + 1 /\ (sto_cp_transpose_targetproductouter) = 0) /\ (sto_cn_transpose_targetproductouter) = S ge_signed_half_transpose_targetproductouteroutput))) /\ ((sto_ap_transpose_targetproductouter * sto_bp_transpose_targetproductouter + sto_an_transpose_targetproductouter * sto_bn_transpose_targetproductouter) + sto_cn_transpose_targetproductouter = (sto_ap_transpose_targetproductouter * sto_bn_transpose_targetproductouter + sto_an_transpose_targetproductouter * sto_bp_transpose_targetproductouter) + sto_cp_transpose_targetproductouter))))))))))))))))))))) \/ ((((e)=0 \/ ((a)=0 \/ ~(exists pvs_factor_transpose_targetomittednondivisor. (n) = ((e)*(a)) * pvs_factor_transpose_targetomittednondivisor))) /\ ((z)=0))))Constructive proof overview
Generated structural guide
Interchanging the first and last factors preserves an actual cell, by proved signed scalar interchange and a real factor-equation permutation.
The unchanged tactic script uses 5 declared prerequisites and contains 91 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
signed_mul_total Alpha theorem; checked-use authorized signed_weighted_scalar_commute Alpha theorem; checked-use authorized DF0002 dirichlet_grid_entry_from_factorization mul_comm Stable theorem; checked-use authorized DF0001 dirichlet_grid_entry_omittedDirect 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
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)
01Fix variables and assumptionsL1–8
02Separate the logical casesL9–18
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L9
cases hv - L10
cases hv_left - L11
cases hv_left_right - L12
cases hv_left_right_right - L13
cases hv_left_right_right_witness - L14
cases hv_left_right_right_witness_witness - L15
cases hv_left_right_right_witness_witness_witness - L16
cases hv_left_right_right_witness_witness_witness_witness - L17
cases hv_left_right_right_witness_witness_witness_witness_right - L18
cases hv_left_right_right_witness_witness_witness_witness_right_right
03Separate the logical casesL19–21
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
04Establish hiL22–25
05Separate the logical casesL26–26
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L26
cases hi
06Establish hoL27–36
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed weighted scalar commute.
- L27
have ho : SignedMul(x2,x5,z)Definitions: SignedMul - L28
specialize signed_weighted_scalar_commute (x2) - L29
specialize signed_weighted_scalar_commute (x3) - L30
specialize signed_weighted_scalar_commute (x1) - L31
specialize signed_weighted_scalar_commute (x4) - L32
specialize signed_weighted_scalar_commute (x5) - L33
specialize signed_weighted_scalar_commute (z) - L34
apply signed_weighted_scalar_commute - L35
exact hv_left_right_right_witness_witness_witness_witness_right_right_right_right_witness_left - L36
exact hi_witness
07Use earlier factsL37–46
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L37
exact hv_left_right_right_witness_witness_witness_witness_right_right_right_right_witness_right - L38
specialize dirichlet_grid_entry_from_factorization (H) - L39
specialize dirichlet_grid_entry_from_factorization (G) - L40
specialize dirichlet_grid_entry_from_factorization (F) - L41
specialize dirichlet_grid_entry_from_factorization (n) - L42
specialize dirichlet_grid_entry_from_factorization (e) - L43
specialize dirichlet_grid_entry_from_factorization (a) - L44
specialize dirichlet_grid_entry_from_factorization (x) - L45
specialize dirichlet_grid_entry_from_factorization (x2) - L46
specialize dirichlet_grid_entry_from_factorization (x1)
08Use earlier factsL47–52
Instantiate or apply named facts and discharge the corresponding proof obligations.
09Calculate and transport equalitiesL53–53
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L53
trans (a*e)*x
10Use earlier factsL54–54
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L54
exact hv_left_right_right_witness_witness_witness_witness_left
11Calculate and transport equalitiesL55–55
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L55
congr
12Use earlier factsL56–56
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L56
apply mul_comm
13Calculate and transport equalitiesL57–57
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L57
refl
14Use earlier factsL58–62
Instantiate or apply named facts and discharge the corresponding proof obligations.
15Separate the logical casesL63–63
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L63
cases hv_right
16Calculate and transport equalitiesL64–66
17Use earlier factsL67–73
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L67
specialize dirichlet_grid_entry_omitted (H) - L68
specialize dirichlet_grid_entry_omitted (G) - L69
specialize dirichlet_grid_entry_omitted (F) - L70
specialize dirichlet_grid_entry_omitted (n) - L71
specialize dirichlet_grid_entry_omitted (e) - L72
specialize dirichlet_grid_entry_omitted (a) - L73
apply dirichlet_grid_entry_omitted
18Separate the logical casesL74–76
19Use earlier factsL77–77
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L77
exact hv_right_left_left
20Separate the logical casesL78–79
21Use earlier factsL80–80
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L80
exact hv_right_left_right_left
22Separate the logical casesL81–82
23Fix variables and assumptionsL83–83
Work with arbitrary variables or the premises of the current implication.
- L83
intro hd
24Separate the logical casesL84–84
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L84
cases hd
25Use earlier factsL85–85
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L85
apply hv_right_left_right_right
26Construct an explicit witnessL86–86
Supply the displayed value, then prove that it has the required property.
- L86
exists x
27Calculate and transport equalitiesL87–87
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L87
trans (e*a)*x
28Use earlier factsL88–88
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L88
exact hd_witness
29Calculate and transport equalitiesL89–89
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L89
congr
30Use earlier factsL90–90
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L90
apply mul_comm
31Calculate and transport equalitiesL91–91
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L91
refl
Original exact command ledger · 91 lines
- 0001
intro F - 0002
intro G - 0003
intro H - 0004
intro n - 0005
intro a - 0006
intro e - 0007
intro z - 0008
intro hv - 0009
cases hv - 0010
cases hv_left - 0011
cases hv_left_right - 0012
cases hv_left_right_right - 0013
cases hv_left_right_right_witness - 0014
cases hv_left_right_right_witness_witness - 0015
cases hv_left_right_right_witness_witness_witness - 0016
cases hv_left_right_right_witness_witness_witness_witness - 0017
cases hv_left_right_right_witness_witness_witness_witness_right - 0018
cases hv_left_right_right_witness_witness_witness_witness_right_right - 0019
cases hv_left_right_right_witness_witness_witness_witness_right_right_right - 0020
cases hv_left_right_right_witness_witness_witness_witness_right_right_right_right - 0021
cases hv_left_right_right_witness_witness_witness_witness_right_right_right_right_witness - 0022
have hi : exists r. (exists sto_ap_transpose_inner sto_an_transpose_inner sto_bp_transpose_inner sto_bn_transpose_inner sto_cp_transpose_inner sto_cn_transpose_inner. (((((x1) = 2 * (sto_ap_transpose_inner) /\ (sto_an_transpose_inner) = 0) \/ exists ge_signed_half_transpose_innerleft. (((x1) = 2 * ge_signed_half_transpose_innerleft + 1 /\ (sto_ap_transpose_inner) = 0) /\ (sto_an_transpose_inner) = S ge_signed_half_transpose_innerleft))) /\ ((((((x3) = 2 * (sto_bp_transpose_inner) /\ (sto_bn_transpose_inner) = 0) \/ exists ge_signed_half_transpose_innerright. (((x3) = 2 * ge_signed_half_transpose_innerright + 1 /\ (sto_bp_transpose_inner) = 0) /\ (sto_bn_transpose_inner) = S ge_signed_half_transpose_innerright))) /\ ((((((r) = 2 * (sto_cp_transpose_inner) /\ (sto_cn_transpose_inner) = 0) \/ exists ge_signed_half_transpose_inneroutput. (((r) = 2 * ge_signed_half_transpose_inneroutput + 1 /\ (sto_cp_transpose_inner) = 0) /\ (sto_cn_transpose_inner) = S ge_signed_half_transpose_inneroutput))) /\ ((sto_ap_transpose_inner * sto_bp_transpose_inner + sto_an_transpose_inner * sto_bn_transpose_inner) + sto_cn_transpose_inner = (sto_ap_transpose_inner * sto_bn_transpose_inner + sto_an_transpose_inner * sto_bp_transpose_inner) + sto_cp_transpose_inner))))))) - 0023
specialize signed_mul_total (x1) - 0024
specialize signed_mul_total (x3) - 0025
apply signed_mul_total - 0026
cases hi - 0027
have ho : exists sto_ap_transpose_outer sto_an_transpose_outer sto_bp_transpose_outer sto_bn_transpose_outer sto_cp_transpose_outer sto_cn_transpose_outer. (((((x2) = 2 * (sto_ap_transpose_outer) /\ (sto_an_transpose_outer) = 0) \/ exists ge_signed_half_transpose_outerleft. (((x2) = 2 * ge_signed_half_transpose_outerleft + 1 /\ (sto_ap_transpose_outer) = 0) /\ (sto_an_transpose_outer) = S ge_signed_half_transpose_outerleft))) /\ ((((((x5) = 2 * (sto_bp_transpose_outer) /\ (sto_bn_transpose_outer) = 0) \/ exists ge_signed_half_transpose_outerright. (((x5) = 2 * ge_signed_half_transpose_outerright + 1 /\ (sto_bp_transpose_outer) = 0) /\ (sto_bn_transpose_outer) = S ge_signed_half_transpose_outerright))) /\ ((((((z) = 2 * (sto_cp_transpose_outer) /\ (sto_cn_transpose_outer) = 0) \/ exists ge_signed_half_transpose_outeroutput. (((z) = 2 * ge_signed_half_transpose_outeroutput + 1 /\ (sto_cp_transpose_outer) = 0) /\ (sto_cn_transpose_outer) = S ge_signed_half_transpose_outeroutput))) /\ ((sto_ap_transpose_outer * sto_bp_transpose_outer + sto_an_transpose_outer * sto_bn_transpose_outer) + sto_cn_transpose_outer = (sto_ap_transpose_outer * sto_bn_transpose_outer + sto_an_transpose_outer * sto_bp_transpose_outer) + sto_cp_transpose_outer)))))) - 0028
specialize signed_weighted_scalar_commute (x2) - 0029
specialize signed_weighted_scalar_commute (x3) - 0030
specialize signed_weighted_scalar_commute (x1) - 0031
specialize signed_weighted_scalar_commute (x4) - 0032
specialize signed_weighted_scalar_commute (x5) - 0033
specialize signed_weighted_scalar_commute (z) - 0034
apply signed_weighted_scalar_commute - 0035
exact hv_left_right_right_witness_witness_witness_witness_right_right_right_right_witness_left - 0036
exact hi_witness - 0037
exact hv_left_right_right_witness_witness_witness_witness_right_right_right_right_witness_right - 0038
specialize dirichlet_grid_entry_from_factorization (H) - 0039
specialize dirichlet_grid_entry_from_factorization (G) - 0040
specialize dirichlet_grid_entry_from_factorization (F) - 0041
specialize dirichlet_grid_entry_from_factorization (n) - 0042
specialize dirichlet_grid_entry_from_factorization (e) - 0043
specialize dirichlet_grid_entry_from_factorization (a) - 0044
specialize dirichlet_grid_entry_from_factorization (x) - 0045
specialize dirichlet_grid_entry_from_factorization (x2) - 0046
specialize dirichlet_grid_entry_from_factorization (x1) - 0047
specialize dirichlet_grid_entry_from_factorization (x3) - 0048
specialize dirichlet_grid_entry_from_factorization (x5) - 0049
specialize dirichlet_grid_entry_from_factorization (z) - 0050
apply dirichlet_grid_entry_from_factorization - 0051
exact hv_left_right_left - 0052
exact hv_left_left - 0053
trans (a*e)*x - 0054
exact hv_left_right_right_witness_witness_witness_witness_left - 0055
congr - 0056
apply mul_comm - 0057
refl - 0058
exact hv_left_right_right_witness_witness_witness_witness_right_right_left - 0059
exact hv_left_right_right_witness_witness_witness_witness_right_left - 0060
exact hv_left_right_right_witness_witness_witness_witness_right_right_right_left - 0061
exact hi_witness - 0062
exact ho - 0063
cases hv_right - 0064
rewrite hv_right_right - 0065
rewrite hv_right_right - 0066
rewrite hv_right_right - 0067
specialize dirichlet_grid_entry_omitted (H) - 0068
specialize dirichlet_grid_entry_omitted (G) - 0069
specialize dirichlet_grid_entry_omitted (F) - 0070
specialize dirichlet_grid_entry_omitted (n) - 0071
specialize dirichlet_grid_entry_omitted (e) - 0072
specialize dirichlet_grid_entry_omitted (a) - 0073
apply dirichlet_grid_entry_omitted - 0074
cases hv_right_left - 0075
right - 0076
left - 0077
exact hv_right_left_left - 0078
cases hv_right_left_right - 0079
left - 0080
exact hv_right_left_right_left - 0081
right - 0082
right - 0083
intro hd - 0084
cases hd - 0085
apply hv_right_left_right_right - 0086
exists x - 0087
trans (e*a)*x - 0088
exact hd_witness - 0089
congr - 0090
apply mul_comm - 0091
refl