Exact expanded PA statement
forall m a b c z d l P Q A. (forall fsp_index_pointwise fsp_source_pointwise fsp_target_pointwise. (exists fsp_gap_pointwise. fsp_gap_pointwise + S fsp_index_pointwise = l) -> (((exists fsp_source_height_pointwise. fsp_source_height_pointwise + S (fsp_source_pointwise) = S ((S (fsp_index_pointwise)) * c)) /\ exists fsp_source_quotient_pointwise. b = fsp_source_quotient_pointwise * S ((S (fsp_index_pointwise)) * c) + (fsp_source_pointwise))) -> (((exists fsp_target_height_pointwise. fsp_target_height_pointwise + S (fsp_target_pointwise) = S ((S (fsp_index_pointwise)) * d)) /\ exists fsp_target_quotient_pointwise. z = fsp_target_quotient_pointwise * S ((S (fsp_index_pointwise)) * d) + (fsp_target_pointwise))) -> (exists fsp_mod_left_pointwise fsp_mod_right_pointwise. a * fsp_source_pointwise + m * fsp_mod_left_pointwise = fsp_target_pointwise + m * fsp_mod_right_pointwise)) -> (exists ff_u_source ff_v_source. ((((exists ff_h_source_start. ff_h_source_start + S (1) = S ((S (0)) * ff_v_source)) /\ exists ff_q_source_start. ff_u_source = ff_q_source_start * S ((S (0)) * ff_v_source) + (1))) /\ ((((exists ff_h_source_terminal. ff_h_source_terminal + S (P) = S ((S (l)) * ff_v_source)) /\ exists ff_q_source_terminal. ff_u_source = ff_q_source_terminal * S ((S (l)) * ff_v_source) + (P))) /\ forall ff_i_source. (exists ff_lt_source_bound. ff_lt_source_bound + S ff_i_source = l) -> exists ff_p_source ff_r_source ff_s_source. ((((exists ff_h_source_factor. ff_h_source_factor + S (ff_p_source) = S ((S (ff_i_source)) * c)) /\ exists ff_q_source_factor. b = ff_q_source_factor * S ((S (ff_i_source)) * c) + (ff_p_source))) /\ ((((exists ff_h_source_partial. ff_h_source_partial + S (ff_r_source) = S ((S (ff_i_source)) * ff_v_source)) /\ exists ff_q_source_partial. ff_u_source = ff_q_source_partial * S ((S (ff_i_source)) * ff_v_source) + (ff_r_source))) /\ ((((exists ff_h_source_successor. ff_h_source_successor + S (ff_s_source) = S ((S (S ff_i_source)) * ff_v_source)) /\ exists ff_q_source_successor. ff_u_source = ff_q_source_successor * S ((S (S ff_i_source)) * ff_v_source) + (ff_s_source))) /\ ff_s_source = ff_r_source * ff_p_source)))))) -> (exists ff_u_target ff_v_target. ((((exists ff_h_target_start. ff_h_target_start + S (1) = S ((S (0)) * ff_v_target)) /\ exists ff_q_target_start. ff_u_target = ff_q_target_start * S ((S (0)) * ff_v_target) + (1))) /\ ((((exists ff_h_target_terminal. ff_h_target_terminal + S (Q) = S ((S (l)) * ff_v_target)) /\ exists ff_q_target_terminal. ff_u_target = ff_q_target_terminal * S ((S (l)) * ff_v_target) + (Q))) /\ forall ff_i_target. (exists ff_lt_target_bound. ff_lt_target_bound + S ff_i_target = l) -> exists ff_p_target ff_r_target ff_s_target. ((((exists ff_h_target_factor. ff_h_target_factor + S (ff_p_target) = S ((S (ff_i_target)) * d)) /\ exists ff_q_target_factor. z = ff_q_target_factor * S ((S (ff_i_target)) * d) + (ff_p_target))) /\ ((((exists ff_h_target_partial. ff_h_target_partial + S (ff_r_target) = S ((S (ff_i_target)) * ff_v_target)) /\ exists ff_q_target_partial. ff_u_target = ff_q_target_partial * S ((S (ff_i_target)) * ff_v_target) + (ff_r_target))) /\ ((((exists ff_h_target_successor. ff_h_target_successor + S (ff_s_target) = S ((S (S ff_i_target)) * ff_v_target)) /\ exists ff_q_target_successor. ff_u_target = ff_q_target_successor * S ((S (S ff_i_target)) * ff_v_target) + (ff_s_target))) /\ ff_s_target = ff_r_target * ff_p_target)))))) -> (exists ff_b_scale_power ff_c_scale_power. ((forall ff_i_scale_power_repeat. (exists ff_lt_scale_power_repeat_bound. ff_lt_scale_power_repeat_bound + S ff_i_scale_power_repeat = l) -> (((exists ff_h_scale_power_repeat_decoded. ff_h_scale_power_repeat_decoded + S (a) = S ((S (ff_i_scale_power_repeat)) * ff_c_scale_power)) /\ exists ff_q_scale_power_repeat_decoded. ff_b_scale_power = ff_q_scale_power_repeat_decoded * S ((S (ff_i_scale_power_repeat)) * ff_c_scale_power) + (a)))) /\ (exists ff_u_scale_power_product ff_v_scale_power_product. ((((exists ff_h_scale_power_product_start. ff_h_scale_power_product_start + S (1) = S ((S (0)) * ff_v_scale_power_product)) /\ exists ff_q_scale_power_product_start. ff_u_scale_power_product = ff_q_scale_power_product_start * S ((S (0)) * ff_v_scale_power_product) + (1))) /\ ((((exists ff_h_scale_power_product_terminal. ff_h_scale_power_product_terminal + S (A) = S ((S (l)) * ff_v_scale_power_product)) /\ exists ff_q_scale_power_product_terminal. ff_u_scale_power_product = ff_q_scale_power_product_terminal * S ((S (l)) * ff_v_scale_power_product) + (A))) /\ forall ff_i_scale_power_product. (exists ff_lt_scale_power_product_bound. ff_lt_scale_power_product_bound + S ff_i_scale_power_product = l) -> exists ff_p_scale_power_product ff_r_scale_power_product ff_s_scale_power_product. ((((exists ff_h_scale_power_product_factor. ff_h_scale_power_product_factor + S (ff_p_scale_power_product) = S ((S (ff_i_scale_power_product)) * ff_c_scale_power)) /\ exists ff_q_scale_power_product_factor. ff_b_scale_power = ff_q_scale_power_product_factor * S ((S (ff_i_scale_power_product)) * ff_c_scale_power) + (ff_p_scale_power_product))) /\ ((((exists ff_h_scale_power_product_partial. ff_h_scale_power_product_partial + S (ff_r_scale_power_product) = S ((S (ff_i_scale_power_product)) * ff_v_scale_power_product)) /\ exists ff_q_scale_power_product_partial. ff_u_scale_power_product = ff_q_scale_power_product_partial * S ((S (ff_i_scale_power_product)) * ff_v_scale_power_product) + (ff_r_scale_power_product))) /\ ((((exists ff_h_scale_power_product_successor. ff_h_scale_power_product_successor + S (ff_s_scale_power_product) = S ((S (S ff_i_scale_power_product)) * ff_v_scale_power_product)) /\ exists ff_q_scale_power_product_successor. ff_u_scale_power_product = ff_q_scale_power_product_successor * S ((S (S ff_i_scale_power_product)) * ff_v_scale_power_product) + (ff_s_scale_power_product))) /\ ff_s_scale_power_product = ff_r_scale_power_product * ff_p_scale_power_product)))))))) -> (exists fsp_product_mod_left_result fsp_product_mod_right_result. (A * P) + m * fsp_product_mod_left_result = Q + m * fsp_product_mod_right_result)Structural proof guide
Generated structural guide
Pointwise multiplication by a constant scales a finite product by its power.
Use the direct prerequisites beta_product_zero, beta_product_succ_decompose, pow_zero, pow_successor_decompose, le_succ, le_refl, mod_eq_refl, mod_eq_mul, mul_assoc, mul_comm, one_mul as previously established PA formulas.
The proof proceeds by structural induction (1), case analysis (10), intermediate claims (12), equality transport (8), certified simplification (1).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0049 beta_product_zero PA004A beta_product_succ_decompose PA004B pow_zero PA004D pow_successor_decompose PA002O le_succ PA001A le_refl PA0023 mod_eq_refl PA004E mod_eq_mul PA000B mul_assoc PA000H mul_comm PA000M one_mulDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v16 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
- 0001
intro m - 0002
intro a - 0003
intro b - 0004
intro c - 0005
intro z - 0006
intro d - 0007
induction l - 0008
intro P - 0009
intro Q - 0010
intro A - 0011
intro hpw - 0012
intro hP - 0013
intro hQ - 0014
intro hA - 0015
have hP1 : P = 1 - 0016
specialize beta_product_zero b - 0017
specialize beta_product_zero c - 0018
specialize beta_product_zero P - 0019
apply beta_product_zero - 0020
exact hP - 0021
have hQ1 : Q = 1 - 0022
specialize beta_product_zero z - 0023
specialize beta_product_zero d - 0024
specialize beta_product_zero Q - 0025
apply beta_product_zero - 0026
exact hQ - 0027
have hA1 : A = 1 - 0028
specialize pow_zero a - 0029
specialize pow_zero 0 - 0030
specialize pow_zero A - 0031
apply pow_zero - 0032
refl - 0033
exact hA - 0034
rewrite hA1 - 0035
rewrite hP1 - 0036
rewrite hQ1 - 0037
have hone : 1 * 1 = 1 - 0038
specialize one_mul 1 - 0039
exact one_mul - 0040
rewrite hone - 0041
specialize mod_eq_refl m - 0042
specialize mod_eq_refl 1 - 0043
exact mod_eq_refl - 0044
intro P - 0045
intro Q - 0046
intro A - 0047
intro hpw - 0048
intro hP - 0049
intro hQ - 0050
intro hA - 0051
have hPd : exists fsp_decomposition_factor_source_decomposition fsp_decomposition_prefix_source_decomposition. (((exists ff_h_source_decomposition_factor. ff_h_source_decomposition_factor + S (fsp_decomposition_factor_source_decomposition) = S ((S (l)) * c)) /\ exists ff_q_source_decomposition_factor. b = ff_q_source_decomposition_factor * S ((S (l)) * c) + (fsp_decomposition_factor_source_decomposition))) /\ ((exists ff_u_source_decomposition_prefix ff_v_source_decomposition_prefix. ((((exists ff_h_source_decomposition_prefix_start. ff_h_source_decomposition_prefix_start + S (1) = S ((S (0)) * ff_v_source_decomposition_prefix)) /\ exists ff_q_source_decomposition_prefix_start. ff_u_source_decomposition_prefix = ff_q_source_decomposition_prefix_start * S ((S (0)) * ff_v_source_decomposition_prefix) + (1))) /\ ((((exists ff_h_source_decomposition_prefix_terminal. ff_h_source_decomposition_prefix_terminal + S (fsp_decomposition_prefix_source_decomposition) = S ((S (l)) * ff_v_source_decomposition_prefix)) /\ exists ff_q_source_decomposition_prefix_terminal. ff_u_source_decomposition_prefix = ff_q_source_decomposition_prefix_terminal * S ((S (l)) * ff_v_source_decomposition_prefix) + (fsp_decomposition_prefix_source_decomposition))) /\ forall ff_i_source_decomposition_prefix. (exists ff_lt_source_decomposition_prefix_bound. ff_lt_source_decomposition_prefix_bound + S ff_i_source_decomposition_prefix = l) -> exists ff_p_source_decomposition_prefix ff_r_source_decomposition_prefix ff_s_source_decomposition_prefix. ((((exists ff_h_source_decomposition_prefix_factor. ff_h_source_decomposition_prefix_factor + S (ff_p_source_decomposition_prefix) = S ((S (ff_i_source_decomposition_prefix)) * c)) /\ exists ff_q_source_decomposition_prefix_factor. b = ff_q_source_decomposition_prefix_factor * S ((S (ff_i_source_decomposition_prefix)) * c) + (ff_p_source_decomposition_prefix))) /\ ((((exists ff_h_source_decomposition_prefix_partial. ff_h_source_decomposition_prefix_partial + S (ff_r_source_decomposition_prefix) = S ((S (ff_i_source_decomposition_prefix)) * ff_v_source_decomposition_prefix)) /\ exists ff_q_source_decomposition_prefix_partial. ff_u_source_decomposition_prefix = ff_q_source_decomposition_prefix_partial * S ((S (ff_i_source_decomposition_prefix)) * ff_v_source_decomposition_prefix) + (ff_r_source_decomposition_prefix))) /\ ((((exists ff_h_source_decomposition_prefix_successor. ff_h_source_decomposition_prefix_successor + S (ff_s_source_decomposition_prefix) = S ((S (S ff_i_source_decomposition_prefix)) * ff_v_source_decomposition_prefix)) /\ exists ff_q_source_decomposition_prefix_successor. ff_u_source_decomposition_prefix = ff_q_source_decomposition_prefix_successor * S ((S (S ff_i_source_decomposition_prefix)) * ff_v_source_decomposition_prefix) + (ff_s_source_decomposition_prefix))) /\ ff_s_source_decomposition_prefix = ff_r_source_decomposition_prefix * ff_p_source_decomposition_prefix)))))) /\ P = fsp_decomposition_prefix_source_decomposition * fsp_decomposition_factor_source_decomposition) - 0052
specialize beta_product_succ_decompose b - 0053
specialize beta_product_succ_decompose c - 0054
specialize beta_product_succ_decompose l - 0055
specialize beta_product_succ_decompose P - 0056
apply beta_product_succ_decompose - 0057
exact hP - 0058
cases hPd - 0059
cases hPd_witness - 0060
cases hPd_witness_witness - 0061
cases hPd_witness_witness_right - 0062
have hQd : exists fsp_decomposition_factor_target_decomposition fsp_decomposition_prefix_target_decomposition. (((exists ff_h_target_decomposition_factor. ff_h_target_decomposition_factor + S (fsp_decomposition_factor_target_decomposition) = S ((S (l)) * d)) /\ exists ff_q_target_decomposition_factor. z = ff_q_target_decomposition_factor * S ((S (l)) * d) + (fsp_decomposition_factor_target_decomposition))) /\ ((exists ff_u_target_decomposition_prefix ff_v_target_decomposition_prefix. ((((exists ff_h_target_decomposition_prefix_start. ff_h_target_decomposition_prefix_start + S (1) = S ((S (0)) * ff_v_target_decomposition_prefix)) /\ exists ff_q_target_decomposition_prefix_start. ff_u_target_decomposition_prefix = ff_q_target_decomposition_prefix_start * S ((S (0)) * ff_v_target_decomposition_prefix) + (1))) /\ ((((exists ff_h_target_decomposition_prefix_terminal. ff_h_target_decomposition_prefix_terminal + S (fsp_decomposition_prefix_target_decomposition) = S ((S (l)) * ff_v_target_decomposition_prefix)) /\ exists ff_q_target_decomposition_prefix_terminal. ff_u_target_decomposition_prefix = ff_q_target_decomposition_prefix_terminal * S ((S (l)) * ff_v_target_decomposition_prefix) + (fsp_decomposition_prefix_target_decomposition))) /\ forall ff_i_target_decomposition_prefix. (exists ff_lt_target_decomposition_prefix_bound. ff_lt_target_decomposition_prefix_bound + S ff_i_target_decomposition_prefix = l) -> exists ff_p_target_decomposition_prefix ff_r_target_decomposition_prefix ff_s_target_decomposition_prefix. ((((exists ff_h_target_decomposition_prefix_factor. ff_h_target_decomposition_prefix_factor + S (ff_p_target_decomposition_prefix) = S ((S (ff_i_target_decomposition_prefix)) * d)) /\ exists ff_q_target_decomposition_prefix_factor. z = ff_q_target_decomposition_prefix_factor * S ((S (ff_i_target_decomposition_prefix)) * d) + (ff_p_target_decomposition_prefix))) /\ ((((exists ff_h_target_decomposition_prefix_partial. ff_h_target_decomposition_prefix_partial + S (ff_r_target_decomposition_prefix) = S ((S (ff_i_target_decomposition_prefix)) * ff_v_target_decomposition_prefix)) /\ exists ff_q_target_decomposition_prefix_partial. ff_u_target_decomposition_prefix = ff_q_target_decomposition_prefix_partial * S ((S (ff_i_target_decomposition_prefix)) * ff_v_target_decomposition_prefix) + (ff_r_target_decomposition_prefix))) /\ ((((exists ff_h_target_decomposition_prefix_successor. ff_h_target_decomposition_prefix_successor + S (ff_s_target_decomposition_prefix) = S ((S (S ff_i_target_decomposition_prefix)) * ff_v_target_decomposition_prefix)) /\ exists ff_q_target_decomposition_prefix_successor. ff_u_target_decomposition_prefix = ff_q_target_decomposition_prefix_successor * S ((S (S ff_i_target_decomposition_prefix)) * ff_v_target_decomposition_prefix) + (ff_s_target_decomposition_prefix))) /\ ff_s_target_decomposition_prefix = ff_r_target_decomposition_prefix * ff_p_target_decomposition_prefix)))))) /\ Q = fsp_decomposition_prefix_target_decomposition * fsp_decomposition_factor_target_decomposition) - 0063
specialize beta_product_succ_decompose z - 0064
specialize beta_product_succ_decompose d - 0065
specialize beta_product_succ_decompose l - 0066
specialize beta_product_succ_decompose Q - 0067
apply beta_product_succ_decompose - 0068
exact hQ - 0069
cases hQd - 0070
cases hQd_witness - 0071
cases hQd_witness_witness - 0072
cases hQd_witness_witness_right - 0073
have hAd : exists fsp_power_prefix_power_decomposition. (exists ff_b_power_decomposition_relation ff_c_power_decomposition_relation. ((forall ff_i_power_decomposition_relation_repeat. (exists ff_lt_power_decomposition_relation_repeat_bound. ff_lt_power_decomposition_relation_repeat_bound + S ff_i_power_decomposition_relation_repeat = l) -> (((exists ff_h_power_decomposition_relation_repeat_decoded. ff_h_power_decomposition_relation_repeat_decoded + S (a) = S ((S (ff_i_power_decomposition_relation_repeat)) * ff_c_power_decomposition_relation)) /\ exists ff_q_power_decomposition_relation_repeat_decoded. ff_b_power_decomposition_relation = ff_q_power_decomposition_relation_repeat_decoded * S ((S (ff_i_power_decomposition_relation_repeat)) * ff_c_power_decomposition_relation) + (a)))) /\ (exists ff_u_power_decomposition_relation_product ff_v_power_decomposition_relation_product. ((((exists ff_h_power_decomposition_relation_product_start. ff_h_power_decomposition_relation_product_start + S (1) = S ((S (0)) * ff_v_power_decomposition_relation_product)) /\ exists ff_q_power_decomposition_relation_product_start. ff_u_power_decomposition_relation_product = ff_q_power_decomposition_relation_product_start * S ((S (0)) * ff_v_power_decomposition_relation_product) + (1))) /\ ((((exists ff_h_power_decomposition_relation_product_terminal. ff_h_power_decomposition_relation_product_terminal + S (fsp_power_prefix_power_decomposition) = S ((S (l)) * ff_v_power_decomposition_relation_product)) /\ exists ff_q_power_decomposition_relation_product_terminal. ff_u_power_decomposition_relation_product = ff_q_power_decomposition_relation_product_terminal * S ((S (l)) * ff_v_power_decomposition_relation_product) + (fsp_power_prefix_power_decomposition))) /\ forall ff_i_power_decomposition_relation_product. (exists ff_lt_power_decomposition_relation_product_bound. ff_lt_power_decomposition_relation_product_bound + S ff_i_power_decomposition_relation_product = l) -> exists ff_p_power_decomposition_relation_product ff_r_power_decomposition_relation_product ff_s_power_decomposition_relation_product. ((((exists ff_h_power_decomposition_relation_product_factor. ff_h_power_decomposition_relation_product_factor + S (ff_p_power_decomposition_relation_product) = S ((S (ff_i_power_decomposition_relation_product)) * ff_c_power_decomposition_relation)) /\ exists ff_q_power_decomposition_relation_product_factor. ff_b_power_decomposition_relation = ff_q_power_decomposition_relation_product_factor * S ((S (ff_i_power_decomposition_relation_product)) * ff_c_power_decomposition_relation) + (ff_p_power_decomposition_relation_product))) /\ ((((exists ff_h_power_decomposition_relation_product_partial. ff_h_power_decomposition_relation_product_partial + S (ff_r_power_decomposition_relation_product) = S ((S (ff_i_power_decomposition_relation_product)) * ff_v_power_decomposition_relation_product)) /\ exists ff_q_power_decomposition_relation_product_partial. ff_u_power_decomposition_relation_product = ff_q_power_decomposition_relation_product_partial * S ((S (ff_i_power_decomposition_relation_product)) * ff_v_power_decomposition_relation_product) + (ff_r_power_decomposition_relation_product))) /\ ((((exists ff_h_power_decomposition_relation_product_successor. ff_h_power_decomposition_relation_product_successor + S (ff_s_power_decomposition_relation_product) = S ((S (S ff_i_power_decomposition_relation_product)) * ff_v_power_decomposition_relation_product)) /\ exists ff_q_power_decomposition_relation_product_successor. ff_u_power_decomposition_relation_product = ff_q_power_decomposition_relation_product_successor * S ((S (S ff_i_power_decomposition_relation_product)) * ff_v_power_decomposition_relation_product) + (ff_s_power_decomposition_relation_product))) /\ ff_s_power_decomposition_relation_product = ff_r_power_decomposition_relation_product * ff_p_power_decomposition_relation_product)))))))) /\ A = fsp_power_prefix_power_decomposition * a - 0074
specialize pow_successor_decompose a - 0075
specialize pow_successor_decompose l - 0076
specialize pow_successor_decompose (S l) - 0077
specialize pow_successor_decompose A - 0078
apply pow_successor_decompose - 0079
refl - 0080
exact hA - 0081
cases hAd - 0082
cases hAd_witness - 0083
have hpw_prefix : forall fsp_index_pointwise_prefix fsp_source_pointwise_prefix fsp_target_pointwise_prefix. (exists fsp_gap_pointwise_prefix. fsp_gap_pointwise_prefix + S fsp_index_pointwise_prefix = l) -> (((exists fsp_source_height_pointwise_prefix. fsp_source_height_pointwise_prefix + S (fsp_source_pointwise_prefix) = S ((S (fsp_index_pointwise_prefix)) * c)) /\ exists fsp_source_quotient_pointwise_prefix. b = fsp_source_quotient_pointwise_prefix * S ((S (fsp_index_pointwise_prefix)) * c) + (fsp_source_pointwise_prefix))) -> (((exists fsp_target_height_pointwise_prefix. fsp_target_height_pointwise_prefix + S (fsp_target_pointwise_prefix) = S ((S (fsp_index_pointwise_prefix)) * d)) /\ exists fsp_target_quotient_pointwise_prefix. z = fsp_target_quotient_pointwise_prefix * S ((S (fsp_index_pointwise_prefix)) * d) + (fsp_target_pointwise_prefix))) -> (exists fsp_mod_left_pointwise_prefix fsp_mod_right_pointwise_prefix. a * fsp_source_pointwise_prefix + m * fsp_mod_left_pointwise_prefix = fsp_target_pointwise_prefix + m * fsp_mod_right_pointwise_prefix) - 0084
intro i - 0085
intro v - 0086
intro w - 0087
intro hi - 0088
intro hv - 0089
intro hw - 0090
specialize hpw i - 0091
specialize hpw v - 0092
specialize hpw w - 0093
apply hpw - 0094
specialize le_succ (S i) - 0095
specialize le_succ l - 0096
apply le_succ - 0097
exact hi - 0098
exact hv - 0099
exact hw - 0100
have hprefix : exists u v. (x4 * x1) + m * u = x3 + m * v - 0101
specialize IH x1 - 0102
specialize IH x3 - 0103
specialize IH x4 - 0104
apply IH - 0105
exact hpw_prefix - 0106
exact hPd_witness_witness_right_left - 0107
exact hQd_witness_witness_right_left - 0108
exact hAd_witness_left - 0109
have hentry : exists u v. (a * x) + m * u = x2 + m * v - 0110
specialize hpw l - 0111
specialize hpw x - 0112
specialize hpw x2 - 0113
apply hpw - 0114
specialize le_refl (S l) - 0115
exact le_refl - 0116
exact hPd_witness_witness_left - 0117
exact hQd_witness_witness_left - 0118
have hfold : exists u v. ((x4 * x1) * (a * x)) + m * u = (x3 * x2) + m * v - 0119
specialize mod_eq_mul m - 0120
specialize mod_eq_mul (x4 * x1) - 0121
specialize mod_eq_mul x3 - 0122
specialize mod_eq_mul (a * x) - 0123
specialize mod_eq_mul x2 - 0124
apply mod_eq_mul - 0125
exact hprefix - 0126
exact hentry - 0127
have hshuffle : (x4 * a) * (x1 * x) = (x4 * x1) * (a * x) - 0128
simp [mul_assoc, mul_comm] - 0129
rewrite hAd_witness_right - 0130
rewrite hPd_witness_witness_right_right - 0131
rewrite hQd_witness_witness_right_right - 0132
rewrite hshuffle - 0133
exact hfold