PA0080 · theorem

gauss_signed_products_balance_mod

Alpha v34 checked-use theorem · independently closed; not Stable

The four Gauss product layers compose to A*P == P*r^e modulo p.

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.

Statement with defined notation

∀ p. ∀ h. ∀ r. ∀ a. ∀ b. ∀ c. ∀ mb. ∀ mc. ∀ rb. ∀ rc. ∀ sb. ∀ sc. ∀ fb. ∀ fc. ∀ tb. ∀ tc. ∀ e. ∀ P. ∀ M. ∀ Sprod. ∀ T. ∀ A. ∀ R. p = S r → r = 2 · h → (∀ x. Lt(x,h) → ∃ y. ∃ z. ∃ n. BetaAt(b,c,x,y) ∧ (BetaAt(mb,mc,x,z) ∧ (BetaAt(sb,sc,x,n) ∧ (Lt(0,z) ∧ (Le(z,h) ∧ ((n = 0 ∨ n = 1) ∧ (n = 0 ∧ ModEq(p,a · y,z) ∨ n = 1 ∧ ModEq(p,a · y,2 · h · z)))))))) → (∀ x. ∀ y. Lt(x,h)BetaAt(sb,sc,x,y) → y = 0 ∧ BetaAt(fb,fc,x,1) ∨ y = 1 ∧ BetaAt(fb,fc,x,r)) → (∀ x. ∀ y. ∀ z. ∀ n. Lt(x,h)BetaAt(mb,mc,x,y)BetaAt(fb,fc,x,z)BetaAt(tb,tc,x,n) → n = y · z) → (∀ x. Lt(x,h) → ∃ y. BetaAt(mb,mc,x,y) ∧ (Lt(0,y)Le(y,h))) → InjectivePrefix(mb,mc,h) → (∀ x. ∀ y. Lt(x,h)BetaAt(mb,mc,x,S y)BetaAt(rb,rc,x,y)) → Range(b,c,1,h)BitCount(sb,sc,h,e)Product(b,c,h,P)Product(mb,mc,h,M)Product(fb,fc,h,Sprod)Product(tb,tc,h,T)Pow(a,h,A)Pow(r,e,R)ModEq(p,A · P,P · R)

Every purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.

Definitions used by this theorem

In the theorem statement

33 occurrences

In local proof propositions

1 occurrences

Exact expanded native-PA statement
forall p h r a b c mb mc rb rc sb sc fb fc tb tc e P M Sprod T A R. p = S r -> r = 2 * h -> (forall gsp_index_gauss_composition_signed_prefix. (exists gsp_lt_gap_gauss_composition_signed_prefix_index_bound. gsp_lt_gap_gauss_composition_signed_prefix_index_bound + S gsp_index_gauss_composition_signed_prefix = h) -> (exists gsp_value_gauss_composition_signed_prefix_entry gsp_magnitude_gauss_composition_signed_prefix_entry gsp_sign_gauss_composition_signed_prefix_entry. (((exists ff_h_gsp_gauss_composition_signed_prefix_entry_source. ff_h_gsp_gauss_composition_signed_prefix_entry_source + S (gsp_value_gauss_composition_signed_prefix_entry) = S ((S (gsp_index_gauss_composition_signed_prefix)) * c)) /\ exists ff_q_gsp_gauss_composition_signed_prefix_entry_source. b = ff_q_gsp_gauss_composition_signed_prefix_entry_source * S ((S (gsp_index_gauss_composition_signed_prefix)) * c) + (gsp_value_gauss_composition_signed_prefix_entry))) /\ ((((exists ff_h_gsp_gauss_composition_signed_prefix_entry_magnitude. ff_h_gsp_gauss_composition_signed_prefix_entry_magnitude + S (gsp_magnitude_gauss_composition_signed_prefix_entry) = S ((S (gsp_index_gauss_composition_signed_prefix)) * mc)) /\ exists ff_q_gsp_gauss_composition_signed_prefix_entry_magnitude. mb = ff_q_gsp_gauss_composition_signed_prefix_entry_magnitude * S ((S (gsp_index_gauss_composition_signed_prefix)) * mc) + (gsp_magnitude_gauss_composition_signed_prefix_entry))) /\ ((((exists ff_h_gsp_gauss_composition_signed_prefix_entry_sign. ff_h_gsp_gauss_composition_signed_prefix_entry_sign + S (gsp_sign_gauss_composition_signed_prefix_entry) = S ((S (gsp_index_gauss_composition_signed_prefix)) * sc)) /\ exists ff_q_gsp_gauss_composition_signed_prefix_entry_sign. sb = ff_q_gsp_gauss_composition_signed_prefix_entry_sign * S ((S (gsp_index_gauss_composition_signed_prefix)) * sc) + (gsp_sign_gauss_composition_signed_prefix_entry))) /\ ((exists gsp_lt_gap_gauss_composition_signed_prefix_entry_positive. gsp_lt_gap_gauss_composition_signed_prefix_entry_positive + S 0 = gsp_magnitude_gauss_composition_signed_prefix_entry) /\ ((exists gsp_le_gap_gauss_composition_signed_prefix_entry_bounded. gsp_le_gap_gauss_composition_signed_prefix_entry_bounded + gsp_magnitude_gauss_composition_signed_prefix_entry = h) /\ ((gsp_sign_gauss_composition_signed_prefix_entry = 0 \/ gsp_sign_gauss_composition_signed_prefix_entry = 1) /\ (((gsp_sign_gauss_composition_signed_prefix_entry = 0 /\ (exists gsp_mod_left_gauss_composition_signed_prefix_entry_lower gsp_mod_right_gauss_composition_signed_prefix_entry_lower. (a * gsp_value_gauss_composition_signed_prefix_entry) + p * gsp_mod_left_gauss_composition_signed_prefix_entry_lower = (gsp_magnitude_gauss_composition_signed_prefix_entry) + p * gsp_mod_right_gauss_composition_signed_prefix_entry_lower)) \/ (gsp_sign_gauss_composition_signed_prefix_entry = 1 /\ (exists gsp_mod_left_gauss_composition_signed_prefix_entry_reflected gsp_mod_right_gauss_composition_signed_prefix_entry_reflected. (a * gsp_value_gauss_composition_signed_prefix_entry) + p * gsp_mod_left_gauss_composition_signed_prefix_entry_reflected = ((2 * h) * gsp_magnitude_gauss_composition_signed_prefix_entry) + p * gsp_mod_right_gauss_composition_signed_prefix_entry_reflected))))))))))) -> (forall gspf_index_gauss_composition_sign_factors gspf_bit_gauss_composition_sign_factors. (exists gsp_lt_gap_gauss_composition_sign_factors_bound. gsp_lt_gap_gauss_composition_sign_factors_bound + S gspf_index_gauss_composition_sign_factors = h) -> (((exists ff_h_gspf_gauss_composition_sign_factors_bit. ff_h_gspf_gauss_composition_sign_factors_bit + S (gspf_bit_gauss_composition_sign_factors) = S ((S (gspf_index_gauss_composition_sign_factors)) * sc)) /\ exists ff_q_gspf_gauss_composition_sign_factors_bit. sb = ff_q_gspf_gauss_composition_sign_factors_bit * S ((S (gspf_index_gauss_composition_sign_factors)) * sc) + (gspf_bit_gauss_composition_sign_factors))) -> (((gspf_bit_gauss_composition_sign_factors = 0) /\ (((exists gsp_beta_height_gspf_gauss_composition_sign_factors_one. gsp_beta_height_gspf_gauss_composition_sign_factors_one + S (1) = S ((S (gspf_index_gauss_composition_sign_factors)) * fc)) /\ exists gsp_beta_quotient_gspf_gauss_composition_sign_factors_one. fb = gsp_beta_quotient_gspf_gauss_composition_sign_factors_one * S ((S (gspf_index_gauss_composition_sign_factors)) * fc) + (1)))) \/ ((gspf_bit_gauss_composition_sign_factors = 1) /\ (((exists ff_h_gspf_gauss_composition_sign_factors_predecessor. ff_h_gspf_gauss_composition_sign_factors_predecessor + S (r) = S ((S (gspf_index_gauss_composition_sign_factors)) * fc)) /\ exists ff_q_gspf_gauss_composition_sign_factors_predecessor. fb = ff_q_gspf_gauss_composition_sign_factors_predecessor * S ((S (gspf_index_gauss_composition_sign_factors)) * fc) + (r)))))) -> (forall fpmp_index_gauss_composition_pointwise_products fpmp_left_gauss_composition_pointwise_products fpmp_right_gauss_composition_pointwise_products fpmp_target_gauss_composition_pointwise_products. (exists fpmp_gap_gauss_composition_pointwise_products. fpmp_gap_gauss_composition_pointwise_products + S fpmp_index_gauss_composition_pointwise_products = h) -> (((exists ff_h_fpmp_gauss_composition_pointwise_products_left. ff_h_fpmp_gauss_composition_pointwise_products_left + S (fpmp_left_gauss_composition_pointwise_products) = S ((S (fpmp_index_gauss_composition_pointwise_products)) * mc)) /\ exists ff_q_fpmp_gauss_composition_pointwise_products_left. mb = ff_q_fpmp_gauss_composition_pointwise_products_left * S ((S (fpmp_index_gauss_composition_pointwise_products)) * mc) + (fpmp_left_gauss_composition_pointwise_products))) -> (((exists ff_h_fpmp_gauss_composition_pointwise_products_right. ff_h_fpmp_gauss_composition_pointwise_products_right + S (fpmp_right_gauss_composition_pointwise_products) = S ((S (fpmp_index_gauss_composition_pointwise_products)) * fc)) /\ exists ff_q_fpmp_gauss_composition_pointwise_products_right. fb = ff_q_fpmp_gauss_composition_pointwise_products_right * S ((S (fpmp_index_gauss_composition_pointwise_products)) * fc) + (fpmp_right_gauss_composition_pointwise_products))) -> (((exists ff_h_fpmp_gauss_composition_pointwise_products_target. ff_h_fpmp_gauss_composition_pointwise_products_target + S (fpmp_target_gauss_composition_pointwise_products) = S ((S (fpmp_index_gauss_composition_pointwise_products)) * tc)) /\ exists ff_q_fpmp_gauss_composition_pointwise_products_target. tb = ff_q_fpmp_gauss_composition_pointwise_products_target * S ((S (fpmp_index_gauss_composition_pointwise_products)) * tc) + (fpmp_target_gauss_composition_pointwise_products))) -> fpmp_target_gauss_composition_pointwise_products = fpmp_left_gauss_composition_pointwise_products * fpmp_right_gauss_composition_pointwise_products) -> (forall gmp_index_gauss_composition_magnitude_range. (exists gsp_lt_gap_gauss_composition_magnitude_range_index_bound. gsp_lt_gap_gauss_composition_magnitude_range_index_bound + S gmp_index_gauss_composition_magnitude_range = h) -> exists gmp_magnitude_gauss_composition_magnitude_range. ((((exists ff_h_gmp_gauss_composition_magnitude_range_decoded. ff_h_gmp_gauss_composition_magnitude_range_decoded + S (gmp_magnitude_gauss_composition_magnitude_range) = S ((S (gmp_index_gauss_composition_magnitude_range)) * mc)) /\ exists ff_q_gmp_gauss_composition_magnitude_range_decoded. mb = ff_q_gmp_gauss_composition_magnitude_range_decoded * S ((S (gmp_index_gauss_composition_magnitude_range)) * mc) + (gmp_magnitude_gauss_composition_magnitude_range))) /\ ((exists gsp_lt_gap_gauss_composition_magnitude_range_positive. gsp_lt_gap_gauss_composition_magnitude_range_positive + S 0 = gmp_magnitude_gauss_composition_magnitude_range) /\ (exists gsp_le_gap_gauss_composition_magnitude_range_bounded. gsp_le_gap_gauss_composition_magnitude_range_bounded + gmp_magnitude_gauss_composition_magnitude_range = h)))) -> (forall fp_i_gauss_composition_magnitude_injective fp_j_gauss_composition_magnitude_injective fp_value_gauss_composition_magnitude_injective. (exists fp_gap_gauss_composition_magnitude_injective_i. fp_gap_gauss_composition_magnitude_injective_i + S fp_i_gauss_composition_magnitude_injective = h) -> (exists fp_gap_gauss_composition_magnitude_injective_j. fp_gap_gauss_composition_magnitude_injective_j + S fp_j_gauss_composition_magnitude_injective = h) -> (((exists ff_h_gauss_composition_magnitude_injective_left. ff_h_gauss_composition_magnitude_injective_left + S (fp_value_gauss_composition_magnitude_injective) = S ((S (fp_i_gauss_composition_magnitude_injective)) * mc)) /\ exists ff_q_gauss_composition_magnitude_injective_left. mb = ff_q_gauss_composition_magnitude_injective_left * S ((S (fp_i_gauss_composition_magnitude_injective)) * mc) + (fp_value_gauss_composition_magnitude_injective))) -> (((exists ff_h_gauss_composition_magnitude_injective_right. ff_h_gauss_composition_magnitude_injective_right + S (fp_value_gauss_composition_magnitude_injective) = S ((S (fp_j_gauss_composition_magnitude_injective)) * mc)) /\ exists ff_q_gauss_composition_magnitude_injective_right. mb = ff_q_gauss_composition_magnitude_injective_right * S ((S (fp_j_gauss_composition_magnitude_injective)) * mc) + (fp_value_gauss_composition_magnitude_injective))) -> fp_i_gauss_composition_magnitude_injective = fp_j_gauss_composition_magnitude_injective) -> (forall gmp_index_gauss_composition_predecessor_recode gmp_predecessor_gauss_composition_predecessor_recode. (exists gsp_lt_gap_gauss_composition_predecessor_recode_index_bound. gsp_lt_gap_gauss_composition_predecessor_recode_index_bound + S gmp_index_gauss_composition_predecessor_recode = h) -> (((exists gsp_beta_height_gmp_gauss_composition_predecessor_recode_source. gsp_beta_height_gmp_gauss_composition_predecessor_recode_source + S (S gmp_predecessor_gauss_composition_predecessor_recode) = S ((S (gmp_index_gauss_composition_predecessor_recode)) * mc)) /\ exists gsp_beta_quotient_gmp_gauss_composition_predecessor_recode_source. mb = gsp_beta_quotient_gmp_gauss_composition_predecessor_recode_source * S ((S (gmp_index_gauss_composition_predecessor_recode)) * mc) + (S gmp_predecessor_gauss_composition_predecessor_recode))) -> (((exists ff_h_gmp_gauss_composition_predecessor_recode_target. ff_h_gmp_gauss_composition_predecessor_recode_target + S (gmp_predecessor_gauss_composition_predecessor_recode) = S ((S (gmp_index_gauss_composition_predecessor_recode)) * rc)) /\ exists ff_q_gmp_gauss_composition_predecessor_recode_target. rb = ff_q_gmp_gauss_composition_predecessor_recode_target * S ((S (gmp_index_gauss_composition_predecessor_recode)) * rc) + (gmp_predecessor_gauss_composition_predecessor_recode)))) -> (forall gsp_range_index_gauss_composition_half_range. (exists gsp_lt_gap_gauss_composition_half_range_range_bound. gsp_lt_gap_gauss_composition_half_range_range_bound + S gsp_range_index_gauss_composition_half_range = h) -> (((exists gsp_beta_height_gauss_composition_half_range_range_entry. gsp_beta_height_gauss_composition_half_range_range_entry + S (1 + gsp_range_index_gauss_composition_half_range) = S ((S (gsp_range_index_gauss_composition_half_range)) * c)) /\ exists gsp_beta_quotient_gauss_composition_half_range_range_entry. b = gsp_beta_quotient_gauss_composition_half_range_range_entry * S ((S (gsp_range_index_gauss_composition_half_range)) * c) + (1 + gsp_range_index_gauss_composition_half_range)))) -> (((exists ff_u_gauss_composition_sign_count_sum ff_v_gauss_composition_sign_count_sum. ((((exists ff_h_gauss_composition_sign_count_sum_start. ff_h_gauss_composition_sign_count_sum_start + S (0) = S ((S (0)) * ff_v_gauss_composition_sign_count_sum)) /\ exists ff_q_gauss_composition_sign_count_sum_start. ff_u_gauss_composition_sign_count_sum = ff_q_gauss_composition_sign_count_sum_start * S ((S (0)) * ff_v_gauss_composition_sign_count_sum) + (0))) /\ ((((exists ff_h_gauss_composition_sign_count_sum_terminal. ff_h_gauss_composition_sign_count_sum_terminal + S (e) = S ((S (h)) * ff_v_gauss_composition_sign_count_sum)) /\ exists ff_q_gauss_composition_sign_count_sum_terminal. ff_u_gauss_composition_sign_count_sum = ff_q_gauss_composition_sign_count_sum_terminal * S ((S (h)) * ff_v_gauss_composition_sign_count_sum) + (e))) /\ forall ff_i_gauss_composition_sign_count_sum. (exists ff_lt_gauss_composition_sign_count_sum_bound. ff_lt_gauss_composition_sign_count_sum_bound + S ff_i_gauss_composition_sign_count_sum = h) -> exists ff_a_gauss_composition_sign_count_sum ff_r_gauss_composition_sign_count_sum ff_s_gauss_composition_sign_count_sum. ((((exists ff_h_gauss_composition_sign_count_sum_summand. ff_h_gauss_composition_sign_count_sum_summand + S (ff_a_gauss_composition_sign_count_sum) = S ((S (ff_i_gauss_composition_sign_count_sum)) * sc)) /\ exists ff_q_gauss_composition_sign_count_sum_summand. sb = ff_q_gauss_composition_sign_count_sum_summand * S ((S (ff_i_gauss_composition_sign_count_sum)) * sc) + (ff_a_gauss_composition_sign_count_sum))) /\ ((((exists ff_h_gauss_composition_sign_count_sum_partial. ff_h_gauss_composition_sign_count_sum_partial + S (ff_r_gauss_composition_sign_count_sum) = S ((S (ff_i_gauss_composition_sign_count_sum)) * ff_v_gauss_composition_sign_count_sum)) /\ exists ff_q_gauss_composition_sign_count_sum_partial. ff_u_gauss_composition_sign_count_sum = ff_q_gauss_composition_sign_count_sum_partial * S ((S (ff_i_gauss_composition_sign_count_sum)) * ff_v_gauss_composition_sign_count_sum) + (ff_r_gauss_composition_sign_count_sum))) /\ ((((exists ff_h_gauss_composition_sign_count_sum_successor. ff_h_gauss_composition_sign_count_sum_successor + S (ff_s_gauss_composition_sign_count_sum) = S ((S (S ff_i_gauss_composition_sign_count_sum)) * ff_v_gauss_composition_sign_count_sum)) /\ exists ff_q_gauss_composition_sign_count_sum_successor. ff_u_gauss_composition_sign_count_sum = ff_q_gauss_composition_sign_count_sum_successor * S ((S (S ff_i_gauss_composition_sign_count_sum)) * ff_v_gauss_composition_sign_count_sum) + (ff_s_gauss_composition_sign_count_sum))) /\ ff_s_gauss_composition_sign_count_sum = ff_r_gauss_composition_sign_count_sum + ff_a_gauss_composition_sign_count_sum)))))) /\ (forall ff_i_gauss_composition_sign_count_bits. (exists ff_lt_gauss_composition_sign_count_bits_bound. ff_lt_gauss_composition_sign_count_bits_bound + S ff_i_gauss_composition_sign_count_bits = h) -> exists ff_bit_gauss_composition_sign_count_bits. ((((exists ff_h_gauss_composition_sign_count_bits_decoded. ff_h_gauss_composition_sign_count_bits_decoded + S (ff_bit_gauss_composition_sign_count_bits) = S ((S (ff_i_gauss_composition_sign_count_bits)) * sc)) /\ exists ff_q_gauss_composition_sign_count_bits_decoded. sb = ff_q_gauss_composition_sign_count_bits_decoded * S ((S (ff_i_gauss_composition_sign_count_bits)) * sc) + (ff_bit_gauss_composition_sign_count_bits))) /\ (ff_bit_gauss_composition_sign_count_bits = 0 \/ ff_bit_gauss_composition_sign_count_bits = 1))))) -> (exists ff_u_gauss_composition_canonical_product ff_v_gauss_composition_canonical_product. ((((exists ff_h_gauss_composition_canonical_product_start. ff_h_gauss_composition_canonical_product_start + S (1) = S ((S (0)) * ff_v_gauss_composition_canonical_product)) /\ exists ff_q_gauss_composition_canonical_product_start. ff_u_gauss_composition_canonical_product = ff_q_gauss_composition_canonical_product_start * S ((S (0)) * ff_v_gauss_composition_canonical_product) + (1))) /\ ((((exists ff_h_gauss_composition_canonical_product_terminal. ff_h_gauss_composition_canonical_product_terminal + S (P) = S ((S (h)) * ff_v_gauss_composition_canonical_product)) /\ exists ff_q_gauss_composition_canonical_product_terminal. ff_u_gauss_composition_canonical_product = ff_q_gauss_composition_canonical_product_terminal * S ((S (h)) * ff_v_gauss_composition_canonical_product) + (P))) /\ forall ff_i_gauss_composition_canonical_product. (exists ff_lt_gauss_composition_canonical_product_bound. ff_lt_gauss_composition_canonical_product_bound + S ff_i_gauss_composition_canonical_product = h) -> exists ff_p_gauss_composition_canonical_product ff_r_gauss_composition_canonical_product ff_s_gauss_composition_canonical_product. ((((exists ff_h_gauss_composition_canonical_product_factor. ff_h_gauss_composition_canonical_product_factor + S (ff_p_gauss_composition_canonical_product) = S ((S (ff_i_gauss_composition_canonical_product)) * c)) /\ exists ff_q_gauss_composition_canonical_product_factor. b = ff_q_gauss_composition_canonical_product_factor * S ((S (ff_i_gauss_composition_canonical_product)) * c) + (ff_p_gauss_composition_canonical_product))) /\ ((((exists ff_h_gauss_composition_canonical_product_partial. ff_h_gauss_composition_canonical_product_partial + S (ff_r_gauss_composition_canonical_product) = S ((S (ff_i_gauss_composition_canonical_product)) * ff_v_gauss_composition_canonical_product)) /\ exists ff_q_gauss_composition_canonical_product_partial. ff_u_gauss_composition_canonical_product = ff_q_gauss_composition_canonical_product_partial * S ((S (ff_i_gauss_composition_canonical_product)) * ff_v_gauss_composition_canonical_product) + (ff_r_gauss_composition_canonical_product))) /\ ((((exists ff_h_gauss_composition_canonical_product_successor. ff_h_gauss_composition_canonical_product_successor + S (ff_s_gauss_composition_canonical_product) = S ((S (S ff_i_gauss_composition_canonical_product)) * ff_v_gauss_composition_canonical_product)) /\ exists ff_q_gauss_composition_canonical_product_successor. ff_u_gauss_composition_canonical_product = ff_q_gauss_composition_canonical_product_successor * S ((S (S ff_i_gauss_composition_canonical_product)) * ff_v_gauss_composition_canonical_product) + (ff_s_gauss_composition_canonical_product))) /\ ff_s_gauss_composition_canonical_product = ff_r_gauss_composition_canonical_product * ff_p_gauss_composition_canonical_product)))))) -> (exists ff_u_gauss_composition_magnitude_product ff_v_gauss_composition_magnitude_product. ((((exists ff_h_gauss_composition_magnitude_product_start. ff_h_gauss_composition_magnitude_product_start + S (1) = S ((S (0)) * ff_v_gauss_composition_magnitude_product)) /\ exists ff_q_gauss_composition_magnitude_product_start. ff_u_gauss_composition_magnitude_product = ff_q_gauss_composition_magnitude_product_start * S ((S (0)) * ff_v_gauss_composition_magnitude_product) + (1))) /\ ((((exists ff_h_gauss_composition_magnitude_product_terminal. ff_h_gauss_composition_magnitude_product_terminal + S (M) = S ((S (h)) * ff_v_gauss_composition_magnitude_product)) /\ exists ff_q_gauss_composition_magnitude_product_terminal. ff_u_gauss_composition_magnitude_product = ff_q_gauss_composition_magnitude_product_terminal * S ((S (h)) * ff_v_gauss_composition_magnitude_product) + (M))) /\ forall ff_i_gauss_composition_magnitude_product. (exists ff_lt_gauss_composition_magnitude_product_bound. ff_lt_gauss_composition_magnitude_product_bound + S ff_i_gauss_composition_magnitude_product = h) -> exists ff_p_gauss_composition_magnitude_product ff_r_gauss_composition_magnitude_product ff_s_gauss_composition_magnitude_product. ((((exists ff_h_gauss_composition_magnitude_product_factor. ff_h_gauss_composition_magnitude_product_factor + S (ff_p_gauss_composition_magnitude_product) = S ((S (ff_i_gauss_composition_magnitude_product)) * mc)) /\ exists ff_q_gauss_composition_magnitude_product_factor. mb = ff_q_gauss_composition_magnitude_product_factor * S ((S (ff_i_gauss_composition_magnitude_product)) * mc) + (ff_p_gauss_composition_magnitude_product))) /\ ((((exists ff_h_gauss_composition_magnitude_product_partial. ff_h_gauss_composition_magnitude_product_partial + S (ff_r_gauss_composition_magnitude_product) = S ((S (ff_i_gauss_composition_magnitude_product)) * ff_v_gauss_composition_magnitude_product)) /\ exists ff_q_gauss_composition_magnitude_product_partial. ff_u_gauss_composition_magnitude_product = ff_q_gauss_composition_magnitude_product_partial * S ((S (ff_i_gauss_composition_magnitude_product)) * ff_v_gauss_composition_magnitude_product) + (ff_r_gauss_composition_magnitude_product))) /\ ((((exists ff_h_gauss_composition_magnitude_product_successor. ff_h_gauss_composition_magnitude_product_successor + S (ff_s_gauss_composition_magnitude_product) = S ((S (S ff_i_gauss_composition_magnitude_product)) * ff_v_gauss_composition_magnitude_product)) /\ exists ff_q_gauss_composition_magnitude_product_successor. ff_u_gauss_composition_magnitude_product = ff_q_gauss_composition_magnitude_product_successor * S ((S (S ff_i_gauss_composition_magnitude_product)) * ff_v_gauss_composition_magnitude_product) + (ff_s_gauss_composition_magnitude_product))) /\ ff_s_gauss_composition_magnitude_product = ff_r_gauss_composition_magnitude_product * ff_p_gauss_composition_magnitude_product)))))) -> (exists ff_u_gauss_composition_sign_product ff_v_gauss_composition_sign_product. ((((exists ff_h_gauss_composition_sign_product_start. ff_h_gauss_composition_sign_product_start + S (1) = S ((S (0)) * ff_v_gauss_composition_sign_product)) /\ exists ff_q_gauss_composition_sign_product_start. ff_u_gauss_composition_sign_product = ff_q_gauss_composition_sign_product_start * S ((S (0)) * ff_v_gauss_composition_sign_product) + (1))) /\ ((((exists ff_h_gauss_composition_sign_product_terminal. ff_h_gauss_composition_sign_product_terminal + S (Sprod) = S ((S (h)) * ff_v_gauss_composition_sign_product)) /\ exists ff_q_gauss_composition_sign_product_terminal. ff_u_gauss_composition_sign_product = ff_q_gauss_composition_sign_product_terminal * S ((S (h)) * ff_v_gauss_composition_sign_product) + (Sprod))) /\ forall ff_i_gauss_composition_sign_product. (exists ff_lt_gauss_composition_sign_product_bound. ff_lt_gauss_composition_sign_product_bound + S ff_i_gauss_composition_sign_product = h) -> exists ff_p_gauss_composition_sign_product ff_r_gauss_composition_sign_product ff_s_gauss_composition_sign_product. ((((exists ff_h_gauss_composition_sign_product_factor. ff_h_gauss_composition_sign_product_factor + S (ff_p_gauss_composition_sign_product) = S ((S (ff_i_gauss_composition_sign_product)) * fc)) /\ exists ff_q_gauss_composition_sign_product_factor. fb = ff_q_gauss_composition_sign_product_factor * S ((S (ff_i_gauss_composition_sign_product)) * fc) + (ff_p_gauss_composition_sign_product))) /\ ((((exists ff_h_gauss_composition_sign_product_partial. ff_h_gauss_composition_sign_product_partial + S (ff_r_gauss_composition_sign_product) = S ((S (ff_i_gauss_composition_sign_product)) * ff_v_gauss_composition_sign_product)) /\ exists ff_q_gauss_composition_sign_product_partial. ff_u_gauss_composition_sign_product = ff_q_gauss_composition_sign_product_partial * S ((S (ff_i_gauss_composition_sign_product)) * ff_v_gauss_composition_sign_product) + (ff_r_gauss_composition_sign_product))) /\ ((((exists ff_h_gauss_composition_sign_product_successor. ff_h_gauss_composition_sign_product_successor + S (ff_s_gauss_composition_sign_product) = S ((S (S ff_i_gauss_composition_sign_product)) * ff_v_gauss_composition_sign_product)) /\ exists ff_q_gauss_composition_sign_product_successor. ff_u_gauss_composition_sign_product = ff_q_gauss_composition_sign_product_successor * S ((S (S ff_i_gauss_composition_sign_product)) * ff_v_gauss_composition_sign_product) + (ff_s_gauss_composition_sign_product))) /\ ff_s_gauss_composition_sign_product = ff_r_gauss_composition_sign_product * ff_p_gauss_composition_sign_product)))))) -> (exists ff_u_gauss_composition_target_product ff_v_gauss_composition_target_product. ((((exists ff_h_gauss_composition_target_product_start. ff_h_gauss_composition_target_product_start + S (1) = S ((S (0)) * ff_v_gauss_composition_target_product)) /\ exists ff_q_gauss_composition_target_product_start. ff_u_gauss_composition_target_product = ff_q_gauss_composition_target_product_start * S ((S (0)) * ff_v_gauss_composition_target_product) + (1))) /\ ((((exists ff_h_gauss_composition_target_product_terminal. ff_h_gauss_composition_target_product_terminal + S (T) = S ((S (h)) * ff_v_gauss_composition_target_product)) /\ exists ff_q_gauss_composition_target_product_terminal. ff_u_gauss_composition_target_product = ff_q_gauss_composition_target_product_terminal * S ((S (h)) * ff_v_gauss_composition_target_product) + (T))) /\ forall ff_i_gauss_composition_target_product. (exists ff_lt_gauss_composition_target_product_bound. ff_lt_gauss_composition_target_product_bound + S ff_i_gauss_composition_target_product = h) -> exists ff_p_gauss_composition_target_product ff_r_gauss_composition_target_product ff_s_gauss_composition_target_product. ((((exists ff_h_gauss_composition_target_product_factor. ff_h_gauss_composition_target_product_factor + S (ff_p_gauss_composition_target_product) = S ((S (ff_i_gauss_composition_target_product)) * tc)) /\ exists ff_q_gauss_composition_target_product_factor. tb = ff_q_gauss_composition_target_product_factor * S ((S (ff_i_gauss_composition_target_product)) * tc) + (ff_p_gauss_composition_target_product))) /\ ((((exists ff_h_gauss_composition_target_product_partial. ff_h_gauss_composition_target_product_partial + S (ff_r_gauss_composition_target_product) = S ((S (ff_i_gauss_composition_target_product)) * ff_v_gauss_composition_target_product)) /\ exists ff_q_gauss_composition_target_product_partial. ff_u_gauss_composition_target_product = ff_q_gauss_composition_target_product_partial * S ((S (ff_i_gauss_composition_target_product)) * ff_v_gauss_composition_target_product) + (ff_r_gauss_composition_target_product))) /\ ((((exists ff_h_gauss_composition_target_product_successor. ff_h_gauss_composition_target_product_successor + S (ff_s_gauss_composition_target_product) = S ((S (S ff_i_gauss_composition_target_product)) * ff_v_gauss_composition_target_product)) /\ exists ff_q_gauss_composition_target_product_successor. ff_u_gauss_composition_target_product = ff_q_gauss_composition_target_product_successor * S ((S (S ff_i_gauss_composition_target_product)) * ff_v_gauss_composition_target_product) + (ff_s_gauss_composition_target_product))) /\ ff_s_gauss_composition_target_product = ff_r_gauss_composition_target_product * ff_p_gauss_composition_target_product)))))) -> (exists ff_b_gauss_composition_multiplier_power ff_c_gauss_composition_multiplier_power. ((forall ff_i_gauss_composition_multiplier_power_repeat. (exists ff_lt_gauss_composition_multiplier_power_repeat_bound. ff_lt_gauss_composition_multiplier_power_repeat_bound + S ff_i_gauss_composition_multiplier_power_repeat = h) -> (((exists ff_h_gauss_composition_multiplier_power_repeat_decoded. ff_h_gauss_composition_multiplier_power_repeat_decoded + S (a) = S ((S (ff_i_gauss_composition_multiplier_power_repeat)) * ff_c_gauss_composition_multiplier_power)) /\ exists ff_q_gauss_composition_multiplier_power_repeat_decoded. ff_b_gauss_composition_multiplier_power = ff_q_gauss_composition_multiplier_power_repeat_decoded * S ((S (ff_i_gauss_composition_multiplier_power_repeat)) * ff_c_gauss_composition_multiplier_power) + (a)))) /\ (exists ff_u_gauss_composition_multiplier_power_product ff_v_gauss_composition_multiplier_power_product. ((((exists ff_h_gauss_composition_multiplier_power_product_start. ff_h_gauss_composition_multiplier_power_product_start + S (1) = S ((S (0)) * ff_v_gauss_composition_multiplier_power_product)) /\ exists ff_q_gauss_composition_multiplier_power_product_start. ff_u_gauss_composition_multiplier_power_product = ff_q_gauss_composition_multiplier_power_product_start * S ((S (0)) * ff_v_gauss_composition_multiplier_power_product) + (1))) /\ ((((exists ff_h_gauss_composition_multiplier_power_product_terminal. ff_h_gauss_composition_multiplier_power_product_terminal + S (A) = S ((S (h)) * ff_v_gauss_composition_multiplier_power_product)) /\ exists ff_q_gauss_composition_multiplier_power_product_terminal. ff_u_gauss_composition_multiplier_power_product = ff_q_gauss_composition_multiplier_power_product_terminal * S ((S (h)) * ff_v_gauss_composition_multiplier_power_product) + (A))) /\ forall ff_i_gauss_composition_multiplier_power_product. (exists ff_lt_gauss_composition_multiplier_power_product_bound. ff_lt_gauss_composition_multiplier_power_product_bound + S ff_i_gauss_composition_multiplier_power_product = h) -> exists ff_p_gauss_composition_multiplier_power_product ff_r_gauss_composition_multiplier_power_product ff_s_gauss_composition_multiplier_power_product. ((((exists ff_h_gauss_composition_multiplier_power_product_factor. ff_h_gauss_composition_multiplier_power_product_factor + S (ff_p_gauss_composition_multiplier_power_product) = S ((S (ff_i_gauss_composition_multiplier_power_product)) * ff_c_gauss_composition_multiplier_power)) /\ exists ff_q_gauss_composition_multiplier_power_product_factor. ff_b_gauss_composition_multiplier_power = ff_q_gauss_composition_multiplier_power_product_factor * S ((S (ff_i_gauss_composition_multiplier_power_product)) * ff_c_gauss_composition_multiplier_power) + (ff_p_gauss_composition_multiplier_power_product))) /\ ((((exists ff_h_gauss_composition_multiplier_power_product_partial. ff_h_gauss_composition_multiplier_power_product_partial + S (ff_r_gauss_composition_multiplier_power_product) = S ((S (ff_i_gauss_composition_multiplier_power_product)) * ff_v_gauss_composition_multiplier_power_product)) /\ exists ff_q_gauss_composition_multiplier_power_product_partial. ff_u_gauss_composition_multiplier_power_product = ff_q_gauss_composition_multiplier_power_product_partial * S ((S (ff_i_gauss_composition_multiplier_power_product)) * ff_v_gauss_composition_multiplier_power_product) + (ff_r_gauss_composition_multiplier_power_product))) /\ ((((exists ff_h_gauss_composition_multiplier_power_product_successor. ff_h_gauss_composition_multiplier_power_product_successor + S (ff_s_gauss_composition_multiplier_power_product) = S ((S (S ff_i_gauss_composition_multiplier_power_product)) * ff_v_gauss_composition_multiplier_power_product)) /\ exists ff_q_gauss_composition_multiplier_power_product_successor. ff_u_gauss_composition_multiplier_power_product = ff_q_gauss_composition_multiplier_power_product_successor * S ((S (S ff_i_gauss_composition_multiplier_power_product)) * ff_v_gauss_composition_multiplier_power_product) + (ff_s_gauss_composition_multiplier_power_product))) /\ ff_s_gauss_composition_multiplier_power_product = ff_r_gauss_composition_multiplier_power_product * ff_p_gauss_composition_multiplier_power_product)))))))) -> (exists ff_b_gauss_composition_sign_power ff_c_gauss_composition_sign_power. ((forall ff_i_gauss_composition_sign_power_repeat. (exists ff_lt_gauss_composition_sign_power_repeat_bound. ff_lt_gauss_composition_sign_power_repeat_bound + S ff_i_gauss_composition_sign_power_repeat = e) -> (((exists ff_h_gauss_composition_sign_power_repeat_decoded. ff_h_gauss_composition_sign_power_repeat_decoded + S (r) = S ((S (ff_i_gauss_composition_sign_power_repeat)) * ff_c_gauss_composition_sign_power)) /\ exists ff_q_gauss_composition_sign_power_repeat_decoded. ff_b_gauss_composition_sign_power = ff_q_gauss_composition_sign_power_repeat_decoded * S ((S (ff_i_gauss_composition_sign_power_repeat)) * ff_c_gauss_composition_sign_power) + (r)))) /\ (exists ff_u_gauss_composition_sign_power_product ff_v_gauss_composition_sign_power_product. ((((exists ff_h_gauss_composition_sign_power_product_start. ff_h_gauss_composition_sign_power_product_start + S (1) = S ((S (0)) * ff_v_gauss_composition_sign_power_product)) /\ exists ff_q_gauss_composition_sign_power_product_start. ff_u_gauss_composition_sign_power_product = ff_q_gauss_composition_sign_power_product_start * S ((S (0)) * ff_v_gauss_composition_sign_power_product) + (1))) /\ ((((exists ff_h_gauss_composition_sign_power_product_terminal. ff_h_gauss_composition_sign_power_product_terminal + S (R) = S ((S (e)) * ff_v_gauss_composition_sign_power_product)) /\ exists ff_q_gauss_composition_sign_power_product_terminal. ff_u_gauss_composition_sign_power_product = ff_q_gauss_composition_sign_power_product_terminal * S ((S (e)) * ff_v_gauss_composition_sign_power_product) + (R))) /\ forall ff_i_gauss_composition_sign_power_product. (exists ff_lt_gauss_composition_sign_power_product_bound. ff_lt_gauss_composition_sign_power_product_bound + S ff_i_gauss_composition_sign_power_product = e) -> exists ff_p_gauss_composition_sign_power_product ff_r_gauss_composition_sign_power_product ff_s_gauss_composition_sign_power_product. ((((exists ff_h_gauss_composition_sign_power_product_factor. ff_h_gauss_composition_sign_power_product_factor + S (ff_p_gauss_composition_sign_power_product) = S ((S (ff_i_gauss_composition_sign_power_product)) * ff_c_gauss_composition_sign_power)) /\ exists ff_q_gauss_composition_sign_power_product_factor. ff_b_gauss_composition_sign_power = ff_q_gauss_composition_sign_power_product_factor * S ((S (ff_i_gauss_composition_sign_power_product)) * ff_c_gauss_composition_sign_power) + (ff_p_gauss_composition_sign_power_product))) /\ ((((exists ff_h_gauss_composition_sign_power_product_partial. ff_h_gauss_composition_sign_power_product_partial + S (ff_r_gauss_composition_sign_power_product) = S ((S (ff_i_gauss_composition_sign_power_product)) * ff_v_gauss_composition_sign_power_product)) /\ exists ff_q_gauss_composition_sign_power_product_partial. ff_u_gauss_composition_sign_power_product = ff_q_gauss_composition_sign_power_product_partial * S ((S (ff_i_gauss_composition_sign_power_product)) * ff_v_gauss_composition_sign_power_product) + (ff_r_gauss_composition_sign_power_product))) /\ ((((exists ff_h_gauss_composition_sign_power_product_successor. ff_h_gauss_composition_sign_power_product_successor + S (ff_s_gauss_composition_sign_power_product) = S ((S (S ff_i_gauss_composition_sign_power_product)) * ff_v_gauss_composition_sign_power_product)) /\ exists ff_q_gauss_composition_sign_power_product_successor. ff_u_gauss_composition_sign_power_product = ff_q_gauss_composition_sign_power_product_successor * S ((S (S ff_i_gauss_composition_sign_power_product)) * ff_v_gauss_composition_sign_power_product) + (ff_s_gauss_composition_sign_power_product))) /\ ff_s_gauss_composition_sign_power_product = ff_r_gauss_composition_sign_power_product * ff_p_gauss_composition_sign_power_product)))))))) -> (exists gpc_left_product_balance gpc_right_product_balance. A * P + p * gpc_left_product_balance = P * R + p * gpc_right_product_balance)

Proof neighborhood

Direct theorem prerequisites

Direct theorem dependents

Definition-aware tactic body

Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed command.

Read the argument

Proof checkpoints

128 script commands · 22 reading checkpoints · 4 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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (4)
01Fix variables and assumptionsL1–10

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

  1. L1
    intro p
  2. L2
    intro h
  3. L3
    intro r
  4. L4
    intro a
  5. L5
    intro b
  6. L6
    intro c
  7. L7
    intro mb
  8. L8
    intro mc
  9. L9
    intro rb
  10. L10
    intro rc
02Fix variables and assumptionsL11–20

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

  1. L11
    intro sb
  2. L12
    intro sc
  3. L13
    intro fb
  4. L14
    intro fc
  5. L15
    intro tb
  6. L16
    intro tc
  7. L17
    intro e
  8. L18
    intro P
  9. L19
    intro M
  10. L20
    intro Sprod
03Fix variables and assumptionsL21–30

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

  1. L21
    intro T
  2. L22
    intro A
  3. L23
    intro R
  4. L24
    intro hp
  5. L25
    intro hr
  6. L26
    intro hsigned
  7. L27
    intro hsigns
  8. L28
    intro hpointwise
  9. L29
    intro hmagnitude_range
  10. L30
    intro hmagnitude_injective
04Fix variables and assumptionsL31–39

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

  1. L31
    intro hrecode
  2. L32
    intro hhalf
  3. L33
    intro hcount
  4. L34
    intro hP
  5. L35
    intro hM
  6. L36
    intro hS
  7. L37
    intro hT
  8. L38
    intro hA
  9. L39
    intro hR
05Establish hscaledL40–49

Establish this local claim before using it. It is not an additional assumption.

  1. L40
    have hscaled : ModEq(p,A · P,T)Definitions: ModEq(p,A · P,T)Original native command in the exact edition
  2. L41
    specialize gauss_signed_pointwise_mul_product_mod p
  3. L42
    specialize gauss_signed_pointwise_mul_product_mod h
  4. L43
    specialize gauss_signed_pointwise_mul_product_mod r
  5. L44
    specialize gauss_signed_pointwise_mul_product_mod a
  6. L45
    specialize gauss_signed_pointwise_mul_product_mod b
  7. L46
    specialize gauss_signed_pointwise_mul_product_mod c
  8. L47
    specialize gauss_signed_pointwise_mul_product_mod mb
  9. L48
    specialize gauss_signed_pointwise_mul_product_mod mc
  10. L49
    specialize gauss_signed_pointwise_mul_product_mod sb
06Use earlier factsL50–59

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

  1. L50
    specialize gauss_signed_pointwise_mul_product_mod sc
  2. L51
    specialize gauss_signed_pointwise_mul_product_mod fb
  3. L52
    specialize gauss_signed_pointwise_mul_product_mod fc
  4. L53
    specialize gauss_signed_pointwise_mul_product_mod tb
  5. L54
    specialize gauss_signed_pointwise_mul_product_mod tc
  6. L55
    specialize gauss_signed_pointwise_mul_product_mod P
  7. L56
    specialize gauss_signed_pointwise_mul_product_mod T
  8. L57
    specialize gauss_signed_pointwise_mul_product_mod A
  9. L58
    apply gauss_signed_pointwise_mul_product_mod
  10. L59
    exact hp
07Use earlier factsL60–66

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

  1. L60
    exact hr
  2. L61
    exact hsigned
  3. L62
    exact hsigns
  4. L63
    exact hpointwise
  5. L64
    exact hP
  6. L65
    exact hT
  7. L66
    exact hA
08Establish hPML67–76

Establish this local claim before using it. It is not an additional assumption.

  1. L67
    have hPM : P = M
  2. L68
    specialize gauss_magnitude_product_eq_half_range mb
  3. L69
    specialize gauss_magnitude_product_eq_half_range mc
  4. L70
    specialize gauss_magnitude_product_eq_half_range rb
  5. L71
    specialize gauss_magnitude_product_eq_half_range rc
  6. L72
    specialize gauss_magnitude_product_eq_half_range b
  7. L73
    specialize gauss_magnitude_product_eq_half_range c
  8. L74
    specialize gauss_magnitude_product_eq_half_range h
  9. L75
    specialize gauss_magnitude_product_eq_half_range P
  10. L76
    specialize gauss_magnitude_product_eq_half_range M
09Use earlier factsL77–83

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

  1. L77
    apply gauss_magnitude_product_eq_half_range
  2. L78
    exact hmagnitude_range
  3. L79
    exact hmagnitude_injective
  4. L80
    exact hrecode
  5. L81
    exact hhalf
  6. L82
    exact hP
  7. L83
    exact hM
10Establish hSRL84–93

Establish this local claim before using it. It is not an additional assumption.

  1. L84
    have hSR : Sprod = R
  2. L85
    specialize beta_sign_factor_product_power sb
  3. L86
    specialize beta_sign_factor_product_power sc
  4. L87
    specialize beta_sign_factor_product_power fb
  5. L88
    specialize beta_sign_factor_product_power fc
  6. L89
    specialize beta_sign_factor_product_power r
  7. L90
    specialize beta_sign_factor_product_power h
  8. L91
    specialize beta_sign_factor_product_power e
  9. L92
    specialize beta_sign_factor_product_power Sprod
  10. L93
    specialize beta_sign_factor_product_power R
11Use earlier factsL94–98

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

  1. L94
    apply beta_sign_factor_product_power
  2. L95
    exact hcount
  3. L96
    exact hsigns
  4. L97
    exact hS
  5. L98
    exact hR
12Establish hTMSL99–108

Establish this local claim before using it. It is not an additional assumption.

  1. L99
    have hTMS : T = M * Sprod
  2. L100
    specialize beta_product_pointwise_mul_exact mb
  3. L101
    specialize beta_product_pointwise_mul_exact mc
  4. L102
    specialize beta_product_pointwise_mul_exact fb
  5. L103
    specialize beta_product_pointwise_mul_exact fc
  6. L104
    specialize beta_product_pointwise_mul_exact tb
  7. L105
    specialize beta_product_pointwise_mul_exact tc
  8. L106
    specialize beta_product_pointwise_mul_exact h
  9. L107
    specialize beta_product_pointwise_mul_exact M
  10. L108
    specialize beta_product_pointwise_mul_exact Sprod
13Use earlier factsL109–114

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

  1. L109
    specialize beta_product_pointwise_mul_exact T
  2. L110
    apply beta_product_pointwise_mul_exact
  3. L111
    exact hpointwise
  4. L112
    exact hM
  5. L113
    exact hS
  6. L114
    exact hT
14Separate the logical casesL115–116

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

  1. L115
    cases hscaled
  2. L116
    cases hscaled_witness
15Construct an explicit witnessL117–118

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

  1. L117
    exists x
  2. L118
    exists x1
16Calculate and transport equalitiesL119–119

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L119
    trans T + p * x1
17Use earlier factsL120–120

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

  1. L120
    exact hscaled_witness_witness
18Calculate and transport equalitiesL121–122

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L121
    congr
  2. L122
    trans M * Sprod
19Use earlier factsL123–123

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

  1. L123
    exact hTMS
20Calculate and transport equalitiesL124–125

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L124
    congr
  2. L125
    symm
21Use earlier factsL126–127

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

  1. L126
    exact hPM
  2. L127
    exact hSR
22Calculate and transport equalitiesL128–128

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L128
    refl

Library-wide reading audit

Original defined command ledger · 128 lines
  1. 0001intro p
  2. 0002intro h
  3. 0003intro r
  4. 0004intro a
  5. 0005intro b
  6. 0006intro c
  7. 0007intro mb
  8. 0008intro mc
  9. 0009intro rb
  10. 0010intro rc
  11. 0011intro sb
  12. 0012intro sc
  13. 0013intro fb
  14. 0014intro fc
  15. 0015intro tb
  16. 0016intro tc
  17. 0017intro e
  18. 0018intro P
  19. 0019intro M
  20. 0020intro Sprod
  21. 0021intro T
  22. 0022intro A
  23. 0023intro R
  24. 0024intro hp
  25. 0025intro hr
  26. 0026intro hsigned
  27. 0027intro hsigns
  28. 0028intro hpointwise
  29. 0029intro hmagnitude_range
  30. 0030intro hmagnitude_injective
  31. 0031intro hrecode
  32. 0032intro hhalf
  33. 0033intro hcount
  34. 0034intro hP
  35. 0035intro hM
  36. 0036intro hS
  37. 0037intro hT
  38. 0038intro hA
  39. 0039intro hR
  40. 0040have hscaled : ModEq(p,A · P,T)
    Exact native replay linehave hscaled : exists gpc_left_scaled_target gpc_right_scaled_target. A * P + p * gpc_left_scaled_target = T + p * gpc_right_scaled_target
  41. 0041specialize gauss_signed_pointwise_mul_product_mod p
  42. 0042specialize gauss_signed_pointwise_mul_product_mod h
  43. 0043specialize gauss_signed_pointwise_mul_product_mod r
  44. 0044specialize gauss_signed_pointwise_mul_product_mod a
  45. 0045specialize gauss_signed_pointwise_mul_product_mod b
  46. 0046specialize gauss_signed_pointwise_mul_product_mod c
  47. 0047specialize gauss_signed_pointwise_mul_product_mod mb
  48. 0048specialize gauss_signed_pointwise_mul_product_mod mc
  49. 0049specialize gauss_signed_pointwise_mul_product_mod sb
  50. 0050specialize gauss_signed_pointwise_mul_product_mod sc
  51. 0051specialize gauss_signed_pointwise_mul_product_mod fb
  52. 0052specialize gauss_signed_pointwise_mul_product_mod fc
  53. 0053specialize gauss_signed_pointwise_mul_product_mod tb
  54. 0054specialize gauss_signed_pointwise_mul_product_mod tc
  55. 0055specialize gauss_signed_pointwise_mul_product_mod P
  56. 0056specialize gauss_signed_pointwise_mul_product_mod T
  57. 0057specialize gauss_signed_pointwise_mul_product_mod A
  58. 0058apply gauss_signed_pointwise_mul_product_mod
  59. 0059exact hp
  60. 0060exact hr
  61. 0061exact hsigned
  62. 0062exact hsigns
  63. 0063exact hpointwise
  64. 0064exact hP
  65. 0065exact hT
  66. 0066exact hA
  67. 0067have hPM : P = M
  68. 0068specialize gauss_magnitude_product_eq_half_range mb
  69. 0069specialize gauss_magnitude_product_eq_half_range mc
  70. 0070specialize gauss_magnitude_product_eq_half_range rb
  71. 0071specialize gauss_magnitude_product_eq_half_range rc
  72. 0072specialize gauss_magnitude_product_eq_half_range b
  73. 0073specialize gauss_magnitude_product_eq_half_range c
  74. 0074specialize gauss_magnitude_product_eq_half_range h
  75. 0075specialize gauss_magnitude_product_eq_half_range P
  76. 0076specialize gauss_magnitude_product_eq_half_range M
  77. 0077apply gauss_magnitude_product_eq_half_range
  78. 0078exact hmagnitude_range
  79. 0079exact hmagnitude_injective
  80. 0080exact hrecode
  81. 0081exact hhalf
  82. 0082exact hP
  83. 0083exact hM
  84. 0084have hSR : Sprod = R
  85. 0085specialize beta_sign_factor_product_power sb
  86. 0086specialize beta_sign_factor_product_power sc
  87. 0087specialize beta_sign_factor_product_power fb
  88. 0088specialize beta_sign_factor_product_power fc
  89. 0089specialize beta_sign_factor_product_power r
  90. 0090specialize beta_sign_factor_product_power h
  91. 0091specialize beta_sign_factor_product_power e
  92. 0092specialize beta_sign_factor_product_power Sprod
  93. 0093specialize beta_sign_factor_product_power R
  94. 0094apply beta_sign_factor_product_power
  95. 0095exact hcount
  96. 0096exact hsigns
  97. 0097exact hS
  98. 0098exact hR
  99. 0099have hTMS : T = M * Sprod
  100. 0100specialize beta_product_pointwise_mul_exact mb
  101. 0101specialize beta_product_pointwise_mul_exact mc
  102. 0102specialize beta_product_pointwise_mul_exact fb
  103. 0103specialize beta_product_pointwise_mul_exact fc
  104. 0104specialize beta_product_pointwise_mul_exact tb
  105. 0105specialize beta_product_pointwise_mul_exact tc
  106. 0106specialize beta_product_pointwise_mul_exact h
  107. 0107specialize beta_product_pointwise_mul_exact M
  108. 0108specialize beta_product_pointwise_mul_exact Sprod
  109. 0109specialize beta_product_pointwise_mul_exact T
  110. 0110apply beta_product_pointwise_mul_exact
  111. 0111exact hpointwise
  112. 0112exact hM
  113. 0113exact hS
  114. 0114exact hT
  115. 0115cases hscaled
  116. 0116cases hscaled_witness
  117. 0117exists x
  118. 0118exists x1
  119. 0119trans T + p * x1
  120. 0120exact hscaled_witness_witness
  121. 0121congr
  122. 0122trans M * Sprod
  123. 0123exact hTMS
  124. 0124congr
  125. 0125symm
  126. 0126exact hPM
  127. 0127exact hSR
  128. 0128refl