PG0014

prime_field_convolution_coefficient_right_scale

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

At every natural index the actual scaled-input convolution coefficient is the actual canonical product of k and the original coefficient, including all exterior coefficients and composite moduli.

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 p k ab ac L bb bc M sb sc i c r. (((exists pfa_gap_scalar_coefficient_operationscalar. pfa_gap_scalar_coefficient_operationscalar + S (k) = (p)) /\ ((forall pfp_index_scalar_coefficient_operation. (exists pfa_gap_scalar_coefficient_operationindex. pfa_gap_scalar_coefficient_operationindex + S (pfp_index_scalar_coefficient_operation) = (M)) -> exists pfp_source_scalar_coefficient_operation pfp_value_scalar_coefficient_operation. ((((exists ff_h_pfp_scalar_coefficient_operationsource. ff_h_pfp_scalar_coefficient_operationsource + S (pfp_source_scalar_coefficient_operation) = S ((S (pfp_index_scalar_coefficient_operation)) * bc)) /\ exists ff_q_pfp_scalar_coefficient_operationsource. bb = ff_q_pfp_scalar_coefficient_operationsource * S ((S (pfp_index_scalar_coefficient_operation)) * bc) + (pfp_source_scalar_coefficient_operation))) /\ (((((exists ff_h_pfp_scalar_coefficient_operationtarget. ff_h_pfp_scalar_coefficient_operationtarget + S (pfp_value_scalar_coefficient_operation) = S ((S (pfp_index_scalar_coefficient_operation)) * sc)) /\ exists ff_q_pfp_scalar_coefficient_operationtarget. sb = ff_q_pfp_scalar_coefficient_operationtarget * S ((S (pfp_index_scalar_coefficient_operation)) * sc) + (pfp_value_scalar_coefficient_operation))) /\ ((((exists pfa_gap_scalar_coefficient_operationoperationleft. pfa_gap_scalar_coefficient_operationoperationleft + S (k) = (p)) /\ (((exists pfa_gap_scalar_coefficient_operationoperationright. pfa_gap_scalar_coefficient_operationoperationright + S (pfp_source_scalar_coefficient_operation) = (p)) /\ ((((exists pfa_gap_scalar_coefficient_operationoperationresultbound. pfa_gap_scalar_coefficient_operationoperationresultbound + S (pfp_value_scalar_coefficient_operation) = (p)) /\ ((exists pfa_offset_left_scalar_coefficient_operationoperationresultcongruence pfa_offset_right_scalar_coefficient_operationoperationresultcongruence. ((k) * (pfp_source_scalar_coefficient_operation)) + (p) * pfa_offset_left_scalar_coefficient_operationoperationresultcongruence = (pfp_value_scalar_coefficient_operation) + (p) * pfa_offset_right_scalar_coefficient_operationoperationresultcongruence))))))))))))))))) -> (exists pfc_terms_code_scalar_coefficient_original pfc_terms_scale_scalar_coefficient_original pfc_natural_sum_scalar_coefficient_original. ((forall pfc_index_scalar_coefficient_originaldiagonal. (exists pfa_gap_scalar_coefficient_originaldiagonalbound. pfa_gap_scalar_coefficient_originaldiagonalbound + S (pfc_index_scalar_coefficient_originaldiagonal) = (S (i))) -> exists pfc_value_scalar_coefficient_originaldiagonal. ((((exists ff_h_pfp_scalar_coefficient_originaldiagonalentry. ff_h_pfp_scalar_coefficient_originaldiagonalentry + S (pfc_value_scalar_coefficient_originaldiagonal) = S ((S (pfc_index_scalar_coefficient_originaldiagonal)) * pfc_terms_scale_scalar_coefficient_original)) /\ exists ff_q_pfp_scalar_coefficient_originaldiagonalentry. pfc_terms_code_scalar_coefficient_original = ff_q_pfp_scalar_coefficient_originaldiagonalentry * S ((S (pfc_index_scalar_coefficient_originaldiagonal)) * pfc_terms_scale_scalar_coefficient_original) + (pfc_value_scalar_coefficient_originaldiagonal))) /\ ((exists pfc_complement_scalar_coefficient_originaldiagonalterm pfc_left_scalar_coefficient_originaldiagonalterm pfc_right_scalar_coefficient_originaldiagonalterm. (((pfc_index_scalar_coefficient_originaldiagonal)+pfc_complement_scalar_coefficient_originaldiagonalterm=(i)) /\ ((((((exists pfa_gap_scalar_coefficient_originaldiagonaltermleftinside. pfa_gap_scalar_coefficient_originaldiagonaltermleftinside + S (pfc_index_scalar_coefficient_originaldiagonal) = (L)) /\ ((((exists ff_h_pfp_scalar_coefficient_originaldiagonaltermleftentry. ff_h_pfp_scalar_coefficient_originaldiagonaltermleftentry + S (pfc_left_scalar_coefficient_originaldiagonalterm) = S ((S (pfc_index_scalar_coefficient_originaldiagonal)) * ac)) /\ exists ff_q_pfp_scalar_coefficient_originaldiagonaltermleftentry. ab = ff_q_pfp_scalar_coefficient_originaldiagonaltermleftentry * S ((S (pfc_index_scalar_coefficient_originaldiagonal)) * ac) + (pfc_left_scalar_coefficient_originaldiagonalterm)))))) \/ (((exists pfc_gap_scalar_coefficient_originaldiagonaltermleftoutside. pfc_gap_scalar_coefficient_originaldiagonaltermleftoutside+(L)=(pfc_index_scalar_coefficient_originaldiagonal)) /\ (((pfc_left_scalar_coefficient_originaldiagonalterm)=0))))) /\ ((((((exists pfa_gap_scalar_coefficient_originaldiagonaltermrightinside. pfa_gap_scalar_coefficient_originaldiagonaltermrightinside + S (pfc_complement_scalar_coefficient_originaldiagonalterm) = (M)) /\ ((((exists ff_h_pfp_scalar_coefficient_originaldiagonaltermrightentry. ff_h_pfp_scalar_coefficient_originaldiagonaltermrightentry + S (pfc_right_scalar_coefficient_originaldiagonalterm) = S ((S (pfc_complement_scalar_coefficient_originaldiagonalterm)) * bc)) /\ exists ff_q_pfp_scalar_coefficient_originaldiagonaltermrightentry. bb = ff_q_pfp_scalar_coefficient_originaldiagonaltermrightentry * S ((S (pfc_complement_scalar_coefficient_originaldiagonalterm)) * bc) + (pfc_right_scalar_coefficient_originaldiagonalterm)))))) \/ (((exists pfc_gap_scalar_coefficient_originaldiagonaltermrightoutside. pfc_gap_scalar_coefficient_originaldiagonaltermrightoutside+(M)=(pfc_complement_scalar_coefficient_originaldiagonalterm)) /\ (((pfc_right_scalar_coefficient_originaldiagonalterm)=0))))) /\ (((pfc_value_scalar_coefficient_originaldiagonal)=pfc_left_scalar_coefficient_originaldiagonalterm*pfc_right_scalar_coefficient_originaldiagonalterm))))))))))) /\ (((exists fs_u_pfc_scalar_coefficient_originalsum fs_v_pfc_scalar_coefficient_originalsum. ((((exists fs_h_pfc_scalar_coefficient_originalsum_body_start. fs_h_pfc_scalar_coefficient_originalsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_scalar_coefficient_originalsum)) /\ exists fs_q_pfc_scalar_coefficient_originalsum_body_start. fs_u_pfc_scalar_coefficient_originalsum = fs_q_pfc_scalar_coefficient_originalsum_body_start * S ((S (0)) * fs_v_pfc_scalar_coefficient_originalsum) + (0))) /\ ((((exists fs_h_pfc_scalar_coefficient_originalsum_body_terminal. fs_h_pfc_scalar_coefficient_originalsum_body_terminal + S (pfc_natural_sum_scalar_coefficient_original) = S ((S (S (i))) * fs_v_pfc_scalar_coefficient_originalsum)) /\ exists fs_q_pfc_scalar_coefficient_originalsum_body_terminal. fs_u_pfc_scalar_coefficient_originalsum = fs_q_pfc_scalar_coefficient_originalsum_body_terminal * S ((S (S (i))) * fs_v_pfc_scalar_coefficient_originalsum) + (pfc_natural_sum_scalar_coefficient_original))) /\ forall fs_i_pfc_scalar_coefficient_originalsum_body_steps. (exists fs_lt_pfc_scalar_coefficient_originalsum_body_steps_bound. fs_lt_pfc_scalar_coefficient_originalsum_body_steps_bound + S fs_i_pfc_scalar_coefficient_originalsum_body_steps = S (i)) -> exists fs_a_pfc_scalar_coefficient_originalsum_body_steps fs_r_pfc_scalar_coefficient_originalsum_body_steps fs_s_pfc_scalar_coefficient_originalsum_body_steps. ((((exists fs_h_pfc_scalar_coefficient_originalsum_body_steps_summand. fs_h_pfc_scalar_coefficient_originalsum_body_steps_summand + S (fs_a_pfc_scalar_coefficient_originalsum_body_steps) = S ((S (fs_i_pfc_scalar_coefficient_originalsum_body_steps)) * pfc_terms_scale_scalar_coefficient_original)) /\ exists fs_q_pfc_scalar_coefficient_originalsum_body_steps_summand. pfc_terms_code_scalar_coefficient_original = fs_q_pfc_scalar_coefficient_originalsum_body_steps_summand * S ((S (fs_i_pfc_scalar_coefficient_originalsum_body_steps)) * pfc_terms_scale_scalar_coefficient_original) + (fs_a_pfc_scalar_coefficient_originalsum_body_steps))) /\ ((((exists fs_h_pfc_scalar_coefficient_originalsum_body_steps_partial. fs_h_pfc_scalar_coefficient_originalsum_body_steps_partial + S (fs_r_pfc_scalar_coefficient_originalsum_body_steps) = S ((S (fs_i_pfc_scalar_coefficient_originalsum_body_steps)) * fs_v_pfc_scalar_coefficient_originalsum)) /\ exists fs_q_pfc_scalar_coefficient_originalsum_body_steps_partial. fs_u_pfc_scalar_coefficient_originalsum = fs_q_pfc_scalar_coefficient_originalsum_body_steps_partial * S ((S (fs_i_pfc_scalar_coefficient_originalsum_body_steps)) * fs_v_pfc_scalar_coefficient_originalsum) + (fs_r_pfc_scalar_coefficient_originalsum_body_steps))) /\ ((((exists fs_h_pfc_scalar_coefficient_originalsum_body_steps_successor. fs_h_pfc_scalar_coefficient_originalsum_body_steps_successor + S (fs_s_pfc_scalar_coefficient_originalsum_body_steps) = S ((S (S fs_i_pfc_scalar_coefficient_originalsum_body_steps)) * fs_v_pfc_scalar_coefficient_originalsum)) /\ exists fs_q_pfc_scalar_coefficient_originalsum_body_steps_successor. fs_u_pfc_scalar_coefficient_originalsum = fs_q_pfc_scalar_coefficient_originalsum_body_steps_successor * S ((S (S fs_i_pfc_scalar_coefficient_originalsum_body_steps)) * fs_v_pfc_scalar_coefficient_originalsum) + (fs_s_pfc_scalar_coefficient_originalsum_body_steps))) /\ fs_s_pfc_scalar_coefficient_originalsum_body_steps = fs_r_pfc_scalar_coefficient_originalsum_body_steps + fs_a_pfc_scalar_coefficient_originalsum_body_steps)))))) /\ ((((exists pfa_gap_scalar_coefficient_originalresiduebound. pfa_gap_scalar_coefficient_originalresiduebound + S (c) = (p)) /\ ((exists pfa_offset_left_scalar_coefficient_originalresiduecongruence pfa_offset_right_scalar_coefficient_originalresiduecongruence. (pfc_natural_sum_scalar_coefficient_original) + (p) * pfa_offset_left_scalar_coefficient_originalresiduecongruence = (c) + (p) * pfa_offset_right_scalar_coefficient_originalresiduecongruence))))))))) -> (exists pfc_terms_code_scalar_coefficient_scaled pfc_terms_scale_scalar_coefficient_scaled pfc_natural_sum_scalar_coefficient_scaled. ((forall pfc_index_scalar_coefficient_scaleddiagonal. (exists pfa_gap_scalar_coefficient_scaleddiagonalbound. pfa_gap_scalar_coefficient_scaleddiagonalbound + S (pfc_index_scalar_coefficient_scaleddiagonal) = (S (i))) -> exists pfc_value_scalar_coefficient_scaleddiagonal. ((((exists ff_h_pfp_scalar_coefficient_scaleddiagonalentry. ff_h_pfp_scalar_coefficient_scaleddiagonalentry + S (pfc_value_scalar_coefficient_scaleddiagonal) = S ((S (pfc_index_scalar_coefficient_scaleddiagonal)) * pfc_terms_scale_scalar_coefficient_scaled)) /\ exists ff_q_pfp_scalar_coefficient_scaleddiagonalentry. pfc_terms_code_scalar_coefficient_scaled = ff_q_pfp_scalar_coefficient_scaleddiagonalentry * S ((S (pfc_index_scalar_coefficient_scaleddiagonal)) * pfc_terms_scale_scalar_coefficient_scaled) + (pfc_value_scalar_coefficient_scaleddiagonal))) /\ ((exists pfc_complement_scalar_coefficient_scaleddiagonalterm pfc_left_scalar_coefficient_scaleddiagonalterm pfc_right_scalar_coefficient_scaleddiagonalterm. (((pfc_index_scalar_coefficient_scaleddiagonal)+pfc_complement_scalar_coefficient_scaleddiagonalterm=(i)) /\ ((((((exists pfa_gap_scalar_coefficient_scaleddiagonaltermleftinside. pfa_gap_scalar_coefficient_scaleddiagonaltermleftinside + S (pfc_index_scalar_coefficient_scaleddiagonal) = (L)) /\ ((((exists ff_h_pfp_scalar_coefficient_scaleddiagonaltermleftentry. ff_h_pfp_scalar_coefficient_scaleddiagonaltermleftentry + S (pfc_left_scalar_coefficient_scaleddiagonalterm) = S ((S (pfc_index_scalar_coefficient_scaleddiagonal)) * ac)) /\ exists ff_q_pfp_scalar_coefficient_scaleddiagonaltermleftentry. ab = ff_q_pfp_scalar_coefficient_scaleddiagonaltermleftentry * S ((S (pfc_index_scalar_coefficient_scaleddiagonal)) * ac) + (pfc_left_scalar_coefficient_scaleddiagonalterm)))))) \/ (((exists pfc_gap_scalar_coefficient_scaleddiagonaltermleftoutside. pfc_gap_scalar_coefficient_scaleddiagonaltermleftoutside+(L)=(pfc_index_scalar_coefficient_scaleddiagonal)) /\ (((pfc_left_scalar_coefficient_scaleddiagonalterm)=0))))) /\ ((((((exists pfa_gap_scalar_coefficient_scaleddiagonaltermrightinside. pfa_gap_scalar_coefficient_scaleddiagonaltermrightinside + S (pfc_complement_scalar_coefficient_scaleddiagonalterm) = (M)) /\ ((((exists ff_h_pfp_scalar_coefficient_scaleddiagonaltermrightentry. ff_h_pfp_scalar_coefficient_scaleddiagonaltermrightentry + S (pfc_right_scalar_coefficient_scaleddiagonalterm) = S ((S (pfc_complement_scalar_coefficient_scaleddiagonalterm)) * sc)) /\ exists ff_q_pfp_scalar_coefficient_scaleddiagonaltermrightentry. sb = ff_q_pfp_scalar_coefficient_scaleddiagonaltermrightentry * S ((S (pfc_complement_scalar_coefficient_scaleddiagonalterm)) * sc) + (pfc_right_scalar_coefficient_scaleddiagonalterm)))))) \/ (((exists pfc_gap_scalar_coefficient_scaleddiagonaltermrightoutside. pfc_gap_scalar_coefficient_scaleddiagonaltermrightoutside+(M)=(pfc_complement_scalar_coefficient_scaleddiagonalterm)) /\ (((pfc_right_scalar_coefficient_scaleddiagonalterm)=0))))) /\ (((pfc_value_scalar_coefficient_scaleddiagonal)=pfc_left_scalar_coefficient_scaleddiagonalterm*pfc_right_scalar_coefficient_scaleddiagonalterm))))))))))) /\ (((exists fs_u_pfc_scalar_coefficient_scaledsum fs_v_pfc_scalar_coefficient_scaledsum. ((((exists fs_h_pfc_scalar_coefficient_scaledsum_body_start. fs_h_pfc_scalar_coefficient_scaledsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_scalar_coefficient_scaledsum)) /\ exists fs_q_pfc_scalar_coefficient_scaledsum_body_start. fs_u_pfc_scalar_coefficient_scaledsum = fs_q_pfc_scalar_coefficient_scaledsum_body_start * S ((S (0)) * fs_v_pfc_scalar_coefficient_scaledsum) + (0))) /\ ((((exists fs_h_pfc_scalar_coefficient_scaledsum_body_terminal. fs_h_pfc_scalar_coefficient_scaledsum_body_terminal + S (pfc_natural_sum_scalar_coefficient_scaled) = S ((S (S (i))) * fs_v_pfc_scalar_coefficient_scaledsum)) /\ exists fs_q_pfc_scalar_coefficient_scaledsum_body_terminal. fs_u_pfc_scalar_coefficient_scaledsum = fs_q_pfc_scalar_coefficient_scaledsum_body_terminal * S ((S (S (i))) * fs_v_pfc_scalar_coefficient_scaledsum) + (pfc_natural_sum_scalar_coefficient_scaled))) /\ forall fs_i_pfc_scalar_coefficient_scaledsum_body_steps. (exists fs_lt_pfc_scalar_coefficient_scaledsum_body_steps_bound. fs_lt_pfc_scalar_coefficient_scaledsum_body_steps_bound + S fs_i_pfc_scalar_coefficient_scaledsum_body_steps = S (i)) -> exists fs_a_pfc_scalar_coefficient_scaledsum_body_steps fs_r_pfc_scalar_coefficient_scaledsum_body_steps fs_s_pfc_scalar_coefficient_scaledsum_body_steps. ((((exists fs_h_pfc_scalar_coefficient_scaledsum_body_steps_summand. fs_h_pfc_scalar_coefficient_scaledsum_body_steps_summand + S (fs_a_pfc_scalar_coefficient_scaledsum_body_steps) = S ((S (fs_i_pfc_scalar_coefficient_scaledsum_body_steps)) * pfc_terms_scale_scalar_coefficient_scaled)) /\ exists fs_q_pfc_scalar_coefficient_scaledsum_body_steps_summand. pfc_terms_code_scalar_coefficient_scaled = fs_q_pfc_scalar_coefficient_scaledsum_body_steps_summand * S ((S (fs_i_pfc_scalar_coefficient_scaledsum_body_steps)) * pfc_terms_scale_scalar_coefficient_scaled) + (fs_a_pfc_scalar_coefficient_scaledsum_body_steps))) /\ ((((exists fs_h_pfc_scalar_coefficient_scaledsum_body_steps_partial. fs_h_pfc_scalar_coefficient_scaledsum_body_steps_partial + S (fs_r_pfc_scalar_coefficient_scaledsum_body_steps) = S ((S (fs_i_pfc_scalar_coefficient_scaledsum_body_steps)) * fs_v_pfc_scalar_coefficient_scaledsum)) /\ exists fs_q_pfc_scalar_coefficient_scaledsum_body_steps_partial. fs_u_pfc_scalar_coefficient_scaledsum = fs_q_pfc_scalar_coefficient_scaledsum_body_steps_partial * S ((S (fs_i_pfc_scalar_coefficient_scaledsum_body_steps)) * fs_v_pfc_scalar_coefficient_scaledsum) + (fs_r_pfc_scalar_coefficient_scaledsum_body_steps))) /\ ((((exists fs_h_pfc_scalar_coefficient_scaledsum_body_steps_successor. fs_h_pfc_scalar_coefficient_scaledsum_body_steps_successor + S (fs_s_pfc_scalar_coefficient_scaledsum_body_steps) = S ((S (S fs_i_pfc_scalar_coefficient_scaledsum_body_steps)) * fs_v_pfc_scalar_coefficient_scaledsum)) /\ exists fs_q_pfc_scalar_coefficient_scaledsum_body_steps_successor. fs_u_pfc_scalar_coefficient_scaledsum = fs_q_pfc_scalar_coefficient_scaledsum_body_steps_successor * S ((S (S fs_i_pfc_scalar_coefficient_scaledsum_body_steps)) * fs_v_pfc_scalar_coefficient_scaledsum) + (fs_s_pfc_scalar_coefficient_scaledsum_body_steps))) /\ fs_s_pfc_scalar_coefficient_scaledsum_body_steps = fs_r_pfc_scalar_coefficient_scaledsum_body_steps + fs_a_pfc_scalar_coefficient_scaledsum_body_steps)))))) /\ ((((exists pfa_gap_scalar_coefficient_scaledresiduebound. pfa_gap_scalar_coefficient_scaledresiduebound + S (r) = (p)) /\ ((exists pfa_offset_left_scalar_coefficient_scaledresiduecongruence pfa_offset_right_scalar_coefficient_scaledresiduecongruence. (pfc_natural_sum_scalar_coefficient_scaled) + (p) * pfa_offset_left_scalar_coefficient_scaledresiduecongruence = (r) + (p) * pfa_offset_right_scalar_coefficient_scaledresiduecongruence))))))))) -> (((exists pfa_gap_scalar_coefficient_resultleft. pfa_gap_scalar_coefficient_resultleft + S (k) = (p)) /\ (((exists pfa_gap_scalar_coefficient_resultright. pfa_gap_scalar_coefficient_resultright + S (c) = (p)) /\ ((((exists pfa_gap_scalar_coefficient_resultresultbound. pfa_gap_scalar_coefficient_resultresultbound + S (r) = (p)) /\ ((exists pfa_offset_left_scalar_coefficient_resultresultcongruence pfa_offset_right_scalar_coefficient_resultresultcongruence. ((k) * (c)) + (p) * pfa_offset_left_scalar_coefficient_resultresultcongruence = (r) + (p) * pfa_offset_right_scalar_coefficient_resultresultcongruence)))))))))

Constructive proof overview

Generated structural guide

At every natural index the actual scaled-input convolution coefficient is the actual canonical product of k and the original coefficient, including all exterior coefficients and composite moduli.

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

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

Proof neighborhood

Direct dependencies

PG0013 polynomial_diagonal_sum_right_scale_congruent mod_eq_trans Alpha theorem; checked-use authorized mod_eq_symm Alpha theorem; checked-use authorized mod_eq_mul_left Alpha theorem; checked-use authorized

Direct dependents

Formal native tactic body

Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.

Read the argument

Proof checkpoints

84 script commands · 15 reading checkpoints · 2 local claims

This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.

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

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

  1. L1
    intro p
  2. L2
    intro k
  3. L3
    intro ab
  4. L4
    intro ac
  5. L5
    intro L
  6. L6
    intro bb
  7. L7
    intro bc
  8. L8
    intro M
  9. L9
    intro sb
  10. L10
    intro sc
02Fix variables and assumptionsL11–16

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

  1. L11
    intro i
  2. L12
    intro c
  3. L13
    intro r
  4. L14
    intro hs
  5. L15
    intro hc
  6. L16
    intro hr
03Separate the logical casesL17–26

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

  1. L17
    cases hc
  2. L18
    cases hc_witness
  3. L19
    cases hc_witness_witness
  4. L20
    cases hc_witness_witness_witness
  5. L21
    cases hc_witness_witness_witness_right
  6. L22
    cases hr
  7. L23
    cases hr_witness
  8. L24
    cases hr_witness_witness
  9. L25
    cases hr_witness_witness_witness
  10. L26
    cases hr_witness_witness_witness_right
04Establish hsumL27–36

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

  1. L27
    have hsum : exists pfa_offset_left_scalar_coefficient_actual_sum pfa_offset_right_scalar_coefficient_actual_sum. (k*x2) + (p) * pfa_offset_left_scalar_coefficient_actual_sum = (x5) + (p) * pfa_offset_right_scalar_coefficient_actual_sum
  2. L28
    specialize polynomial_diagonal_sum_right_scale_congruent (p)
  3. L29
    specialize polynomial_diagonal_sum_right_scale_congruent (k)
  4. L30
    specialize polynomial_diagonal_sum_right_scale_congruent (ab)
  5. L31
    specialize polynomial_diagonal_sum_right_scale_congruent (ac)
  6. L32
    specialize polynomial_diagonal_sum_right_scale_congruent (L)
  7. L33
    specialize polynomial_diagonal_sum_right_scale_congruent (bb)
  8. L34
    specialize polynomial_diagonal_sum_right_scale_congruent (bc)
  9. L35
    specialize polynomial_diagonal_sum_right_scale_congruent (M)
  10. L36
    specialize polynomial_diagonal_sum_right_scale_congruent (sb)
05Use earlier factsL37–46

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

  1. L37
    specialize polynomial_diagonal_sum_right_scale_congruent (sc)
  2. L38
    specialize polynomial_diagonal_sum_right_scale_congruent (i)
  3. L39
    specialize polynomial_diagonal_sum_right_scale_congruent (x)
  4. L40
    specialize polynomial_diagonal_sum_right_scale_congruent (x1)
  5. L41
    specialize polynomial_diagonal_sum_right_scale_congruent (x3)
  6. L42
    specialize polynomial_diagonal_sum_right_scale_congruent (x4)
  7. L43
    specialize polynomial_diagonal_sum_right_scale_congruent (S i)
  8. L44
    specialize polynomial_diagonal_sum_right_scale_congruent (x2)
  9. L45
    specialize polynomial_diagonal_sum_right_scale_congruent (x5)
  10. L46
    apply polynomial_diagonal_sum_right_scale_congruent
06Use earlier factsL47–51

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

  1. L47
    exact hs
  2. L48
    exact hc_witness_witness_witness_left
  3. L49
    exact hc_witness_witness_witness_right_left
  4. L50
    exact hr_witness_witness_witness_left
  5. L51
    exact hr_witness_witness_witness_right_left
07Separate the logical casesL52–54

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

  1. L52
    cases hs
  2. L53
    cases hc_witness_witness_witness_right_right
  3. L54
    cases hr_witness_witness_witness_right_right
08Establish htailL55–62

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

  1. L55
    have htail : exists pfa_offset_left_scalar_coefficient_tail pfa_offset_right_scalar_coefficient_tail. (k*x2) + (p) * pfa_offset_left_scalar_coefficient_tail = (r) + (p) * pfa_offset_right_scalar_coefficient_tail
  2. L56
    specialize mod_eq_trans (p)
  3. L57
    specialize mod_eq_trans (k*x2)
  4. L58
    specialize mod_eq_trans (x5)
  5. L59
    specialize mod_eq_trans (r)
  6. L60
    apply mod_eq_trans
  7. L61
    exact hsum
  8. L62
    exact hr_witness_witness_witness_right_right_right
09Separate the logical casesL63–63

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

  1. L63
    split
10Use earlier factsL64–64

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

  1. L64
    exact hs_left
11Separate the logical casesL65–65

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

  1. L65
    split
12Use earlier factsL66–66

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

  1. L66
    exact hc_witness_witness_witness_right_right_left
13Separate the logical casesL67–67

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

  1. L67
    split
14Use earlier factsL68–77

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

  1. L68
    exact hr_witness_witness_witness_right_right_left
  2. L69
    specialize mod_eq_trans (p)
  3. L70
    specialize mod_eq_trans (k*c)
  4. L71
    specialize mod_eq_trans (k*x2)
  5. L72
    specialize mod_eq_trans (r)
  6. L73
    apply mod_eq_trans
  7. L74
    specialize mod_eq_symm (p)
  8. L75
    specialize mod_eq_symm (k*x2)
  9. L76
    specialize mod_eq_symm (k*c)
  10. L77
    apply mod_eq_symm
15Use earlier factsL78–84

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

  1. L78
    specialize mod_eq_mul_left (p)
  2. L79
    specialize mod_eq_mul_left (x2)
  3. L80
    specialize mod_eq_mul_left (c)
  4. L81
    specialize mod_eq_mul_left (k)
  5. L82
    apply mod_eq_mul_left
  6. L83
    exact hc_witness_witness_witness_right_right_right
  7. L84
    exact htail

Library-wide reading audit

Original exact command ledger · 84 lines
  1. 0001intro p
  2. 0002intro k
  3. 0003intro ab
  4. 0004intro ac
  5. 0005intro L
  6. 0006intro bb
  7. 0007intro bc
  8. 0008intro M
  9. 0009intro sb
  10. 0010intro sc
  11. 0011intro i
  12. 0012intro c
  13. 0013intro r
  14. 0014intro hs
  15. 0015intro hc
  16. 0016intro hr
  17. 0017cases hc
  18. 0018cases hc_witness
  19. 0019cases hc_witness_witness
  20. 0020cases hc_witness_witness_witness
  21. 0021cases hc_witness_witness_witness_right
  22. 0022cases hr
  23. 0023cases hr_witness
  24. 0024cases hr_witness_witness
  25. 0025cases hr_witness_witness_witness
  26. 0026cases hr_witness_witness_witness_right
  27. 0027have hsum : exists pfa_offset_left_scalar_coefficient_actual_sum pfa_offset_right_scalar_coefficient_actual_sum. (k*x2) + (p) * pfa_offset_left_scalar_coefficient_actual_sum = (x5) + (p) * pfa_offset_right_scalar_coefficient_actual_sum
  28. 0028specialize polynomial_diagonal_sum_right_scale_congruent (p)
  29. 0029specialize polynomial_diagonal_sum_right_scale_congruent (k)
  30. 0030specialize polynomial_diagonal_sum_right_scale_congruent (ab)
  31. 0031specialize polynomial_diagonal_sum_right_scale_congruent (ac)
  32. 0032specialize polynomial_diagonal_sum_right_scale_congruent (L)
  33. 0033specialize polynomial_diagonal_sum_right_scale_congruent (bb)
  34. 0034specialize polynomial_diagonal_sum_right_scale_congruent (bc)
  35. 0035specialize polynomial_diagonal_sum_right_scale_congruent (M)
  36. 0036specialize polynomial_diagonal_sum_right_scale_congruent (sb)
  37. 0037specialize polynomial_diagonal_sum_right_scale_congruent (sc)
  38. 0038specialize polynomial_diagonal_sum_right_scale_congruent (i)
  39. 0039specialize polynomial_diagonal_sum_right_scale_congruent (x)
  40. 0040specialize polynomial_diagonal_sum_right_scale_congruent (x1)
  41. 0041specialize polynomial_diagonal_sum_right_scale_congruent (x3)
  42. 0042specialize polynomial_diagonal_sum_right_scale_congruent (x4)
  43. 0043specialize polynomial_diagonal_sum_right_scale_congruent (S i)
  44. 0044specialize polynomial_diagonal_sum_right_scale_congruent (x2)
  45. 0045specialize polynomial_diagonal_sum_right_scale_congruent (x5)
  46. 0046apply polynomial_diagonal_sum_right_scale_congruent
  47. 0047exact hs
  48. 0048exact hc_witness_witness_witness_left
  49. 0049exact hc_witness_witness_witness_right_left
  50. 0050exact hr_witness_witness_witness_left
  51. 0051exact hr_witness_witness_witness_right_left
  52. 0052cases hs
  53. 0053cases hc_witness_witness_witness_right_right
  54. 0054cases hr_witness_witness_witness_right_right
  55. 0055have htail : exists pfa_offset_left_scalar_coefficient_tail pfa_offset_right_scalar_coefficient_tail. (k*x2) + (p) * pfa_offset_left_scalar_coefficient_tail = (r) + (p) * pfa_offset_right_scalar_coefficient_tail
  56. 0056specialize mod_eq_trans (p)
  57. 0057specialize mod_eq_trans (k*x2)
  58. 0058specialize mod_eq_trans (x5)
  59. 0059specialize mod_eq_trans (r)
  60. 0060apply mod_eq_trans
  61. 0061exact hsum
  62. 0062exact hr_witness_witness_witness_right_right_right
  63. 0063split
  64. 0064exact hs_left
  65. 0065split
  66. 0066exact hc_witness_witness_witness_right_right_left
  67. 0067split
  68. 0068exact hr_witness_witness_witness_right_right_left
  69. 0069specialize mod_eq_trans (p)
  70. 0070specialize mod_eq_trans (k*c)
  71. 0071specialize mod_eq_trans (k*x2)
  72. 0072specialize mod_eq_trans (r)
  73. 0073apply mod_eq_trans
  74. 0074specialize mod_eq_symm (p)
  75. 0075specialize mod_eq_symm (k*x2)
  76. 0076specialize mod_eq_symm (k*c)
  77. 0077apply mod_eq_symm
  78. 0078specialize mod_eq_mul_left (p)
  79. 0079specialize mod_eq_mul_left (x2)
  80. 0080specialize mod_eq_mul_left (c)
  81. 0081specialize mod_eq_mul_left (k)
  82. 0082apply mod_eq_mul_left
  83. 0083exact hc_witness_witness_witness_right_right_right
  84. 0084exact htail