PX0003

prime_field_convolution_coefficient_prefix_transport

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

Every coefficient below the shared prefix is unchanged, with its actual diagonal and sum witnesses reused verbatim.

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 ab ac L AB AC K bb bc M N i r. (exists pfc_gap_tri_coefficient_old_length. pfc_gap_tri_coefficient_old_length+(N)=(L)) -> (exists pfc_gap_tri_coefficient_new_length. pfc_gap_tri_coefficient_new_length+(N)=(K)) -> (forall mdr_i_pfp_tri_coefficient_equal mdr_a_pfp_tri_coefficient_equal. (exists mdr_gap_pfp_tri_coefficient_equalb. mdr_gap_pfp_tri_coefficient_equalb + S (mdr_i_pfp_tri_coefficient_equal) = (N)) -> (((exists ff_h_mdr_pfp_tri_coefficient_equalo. ff_h_mdr_pfp_tri_coefficient_equalo + S (mdr_a_pfp_tri_coefficient_equal) = S ((S (mdr_i_pfp_tri_coefficient_equal)) * ac)) /\ exists ff_q_mdr_pfp_tri_coefficient_equalo. ab = ff_q_mdr_pfp_tri_coefficient_equalo * S ((S (mdr_i_pfp_tri_coefficient_equal)) * ac) + (mdr_a_pfp_tri_coefficient_equal))) -> (((exists ff_h_mdr_pfp_tri_coefficient_equaln. ff_h_mdr_pfp_tri_coefficient_equaln + S (mdr_a_pfp_tri_coefficient_equal) = S ((S (mdr_i_pfp_tri_coefficient_equal)) * AC)) /\ exists ff_q_mdr_pfp_tri_coefficient_equaln. AB = ff_q_mdr_pfp_tri_coefficient_equaln * S ((S (mdr_i_pfp_tri_coefficient_equal)) * AC) + (mdr_a_pfp_tri_coefficient_equal)))) -> (exists pfa_gap_tri_coefficient_index. pfa_gap_tri_coefficient_index + S (i) = (N)) -> (exists pfc_terms_code_tri_coefficient_old pfc_terms_scale_tri_coefficient_old pfc_natural_sum_tri_coefficient_old. ((forall pfc_index_tri_coefficient_olddiagonal. (exists pfa_gap_tri_coefficient_olddiagonalbound. pfa_gap_tri_coefficient_olddiagonalbound + S (pfc_index_tri_coefficient_olddiagonal) = (S (i))) -> exists pfc_value_tri_coefficient_olddiagonal. ((((exists ff_h_pfp_tri_coefficient_olddiagonalentry. ff_h_pfp_tri_coefficient_olddiagonalentry + S (pfc_value_tri_coefficient_olddiagonal) = S ((S (pfc_index_tri_coefficient_olddiagonal)) * pfc_terms_scale_tri_coefficient_old)) /\ exists ff_q_pfp_tri_coefficient_olddiagonalentry. pfc_terms_code_tri_coefficient_old = ff_q_pfp_tri_coefficient_olddiagonalentry * S ((S (pfc_index_tri_coefficient_olddiagonal)) * pfc_terms_scale_tri_coefficient_old) + (pfc_value_tri_coefficient_olddiagonal))) /\ ((exists pfc_complement_tri_coefficient_olddiagonalterm pfc_left_tri_coefficient_olddiagonalterm pfc_right_tri_coefficient_olddiagonalterm. (((pfc_index_tri_coefficient_olddiagonal)+pfc_complement_tri_coefficient_olddiagonalterm=(i)) /\ ((((((exists pfa_gap_tri_coefficient_olddiagonaltermleftinside. pfa_gap_tri_coefficient_olddiagonaltermleftinside + S (pfc_index_tri_coefficient_olddiagonal) = (L)) /\ ((((exists ff_h_pfp_tri_coefficient_olddiagonaltermleftentry. ff_h_pfp_tri_coefficient_olddiagonaltermleftentry + S (pfc_left_tri_coefficient_olddiagonalterm) = S ((S (pfc_index_tri_coefficient_olddiagonal)) * ac)) /\ exists ff_q_pfp_tri_coefficient_olddiagonaltermleftentry. ab = ff_q_pfp_tri_coefficient_olddiagonaltermleftentry * S ((S (pfc_index_tri_coefficient_olddiagonal)) * ac) + (pfc_left_tri_coefficient_olddiagonalterm)))))) \/ (((exists pfc_gap_tri_coefficient_olddiagonaltermleftoutside. pfc_gap_tri_coefficient_olddiagonaltermleftoutside+(L)=(pfc_index_tri_coefficient_olddiagonal)) /\ (((pfc_left_tri_coefficient_olddiagonalterm)=0))))) /\ ((((((exists pfa_gap_tri_coefficient_olddiagonaltermrightinside. pfa_gap_tri_coefficient_olddiagonaltermrightinside + S (pfc_complement_tri_coefficient_olddiagonalterm) = (M)) /\ ((((exists ff_h_pfp_tri_coefficient_olddiagonaltermrightentry. ff_h_pfp_tri_coefficient_olddiagonaltermrightentry + S (pfc_right_tri_coefficient_olddiagonalterm) = S ((S (pfc_complement_tri_coefficient_olddiagonalterm)) * bc)) /\ exists ff_q_pfp_tri_coefficient_olddiagonaltermrightentry. bb = ff_q_pfp_tri_coefficient_olddiagonaltermrightentry * S ((S (pfc_complement_tri_coefficient_olddiagonalterm)) * bc) + (pfc_right_tri_coefficient_olddiagonalterm)))))) \/ (((exists pfc_gap_tri_coefficient_olddiagonaltermrightoutside. pfc_gap_tri_coefficient_olddiagonaltermrightoutside+(M)=(pfc_complement_tri_coefficient_olddiagonalterm)) /\ (((pfc_right_tri_coefficient_olddiagonalterm)=0))))) /\ (((pfc_value_tri_coefficient_olddiagonal)=pfc_left_tri_coefficient_olddiagonalterm*pfc_right_tri_coefficient_olddiagonalterm))))))))))) /\ (((exists fs_u_pfc_tri_coefficient_oldsum fs_v_pfc_tri_coefficient_oldsum. ((((exists fs_h_pfc_tri_coefficient_oldsum_body_start. fs_h_pfc_tri_coefficient_oldsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_tri_coefficient_oldsum)) /\ exists fs_q_pfc_tri_coefficient_oldsum_body_start. fs_u_pfc_tri_coefficient_oldsum = fs_q_pfc_tri_coefficient_oldsum_body_start * S ((S (0)) * fs_v_pfc_tri_coefficient_oldsum) + (0))) /\ ((((exists fs_h_pfc_tri_coefficient_oldsum_body_terminal. fs_h_pfc_tri_coefficient_oldsum_body_terminal + S (pfc_natural_sum_tri_coefficient_old) = S ((S (S (i))) * fs_v_pfc_tri_coefficient_oldsum)) /\ exists fs_q_pfc_tri_coefficient_oldsum_body_terminal. fs_u_pfc_tri_coefficient_oldsum = fs_q_pfc_tri_coefficient_oldsum_body_terminal * S ((S (S (i))) * fs_v_pfc_tri_coefficient_oldsum) + (pfc_natural_sum_tri_coefficient_old))) /\ forall fs_i_pfc_tri_coefficient_oldsum_body_steps. (exists fs_lt_pfc_tri_coefficient_oldsum_body_steps_bound. fs_lt_pfc_tri_coefficient_oldsum_body_steps_bound + S fs_i_pfc_tri_coefficient_oldsum_body_steps = S (i)) -> exists fs_a_pfc_tri_coefficient_oldsum_body_steps fs_r_pfc_tri_coefficient_oldsum_body_steps fs_s_pfc_tri_coefficient_oldsum_body_steps. ((((exists fs_h_pfc_tri_coefficient_oldsum_body_steps_summand. fs_h_pfc_tri_coefficient_oldsum_body_steps_summand + S (fs_a_pfc_tri_coefficient_oldsum_body_steps) = S ((S (fs_i_pfc_tri_coefficient_oldsum_body_steps)) * pfc_terms_scale_tri_coefficient_old)) /\ exists fs_q_pfc_tri_coefficient_oldsum_body_steps_summand. pfc_terms_code_tri_coefficient_old = fs_q_pfc_tri_coefficient_oldsum_body_steps_summand * S ((S (fs_i_pfc_tri_coefficient_oldsum_body_steps)) * pfc_terms_scale_tri_coefficient_old) + (fs_a_pfc_tri_coefficient_oldsum_body_steps))) /\ ((((exists fs_h_pfc_tri_coefficient_oldsum_body_steps_partial. fs_h_pfc_tri_coefficient_oldsum_body_steps_partial + S (fs_r_pfc_tri_coefficient_oldsum_body_steps) = S ((S (fs_i_pfc_tri_coefficient_oldsum_body_steps)) * fs_v_pfc_tri_coefficient_oldsum)) /\ exists fs_q_pfc_tri_coefficient_oldsum_body_steps_partial. fs_u_pfc_tri_coefficient_oldsum = fs_q_pfc_tri_coefficient_oldsum_body_steps_partial * S ((S (fs_i_pfc_tri_coefficient_oldsum_body_steps)) * fs_v_pfc_tri_coefficient_oldsum) + (fs_r_pfc_tri_coefficient_oldsum_body_steps))) /\ ((((exists fs_h_pfc_tri_coefficient_oldsum_body_steps_successor. fs_h_pfc_tri_coefficient_oldsum_body_steps_successor + S (fs_s_pfc_tri_coefficient_oldsum_body_steps) = S ((S (S fs_i_pfc_tri_coefficient_oldsum_body_steps)) * fs_v_pfc_tri_coefficient_oldsum)) /\ exists fs_q_pfc_tri_coefficient_oldsum_body_steps_successor. fs_u_pfc_tri_coefficient_oldsum = fs_q_pfc_tri_coefficient_oldsum_body_steps_successor * S ((S (S fs_i_pfc_tri_coefficient_oldsum_body_steps)) * fs_v_pfc_tri_coefficient_oldsum) + (fs_s_pfc_tri_coefficient_oldsum_body_steps))) /\ fs_s_pfc_tri_coefficient_oldsum_body_steps = fs_r_pfc_tri_coefficient_oldsum_body_steps + fs_a_pfc_tri_coefficient_oldsum_body_steps)))))) /\ ((((exists pfa_gap_tri_coefficient_oldresiduebound. pfa_gap_tri_coefficient_oldresiduebound + S (r) = (p)) /\ ((exists pfa_offset_left_tri_coefficient_oldresiduecongruence pfa_offset_right_tri_coefficient_oldresiduecongruence. (pfc_natural_sum_tri_coefficient_old) + (p) * pfa_offset_left_tri_coefficient_oldresiduecongruence = (r) + (p) * pfa_offset_right_tri_coefficient_oldresiduecongruence))))))))) -> (exists pfc_terms_code_tri_coefficient_new pfc_terms_scale_tri_coefficient_new pfc_natural_sum_tri_coefficient_new. ((forall pfc_index_tri_coefficient_newdiagonal. (exists pfa_gap_tri_coefficient_newdiagonalbound. pfa_gap_tri_coefficient_newdiagonalbound + S (pfc_index_tri_coefficient_newdiagonal) = (S (i))) -> exists pfc_value_tri_coefficient_newdiagonal. ((((exists ff_h_pfp_tri_coefficient_newdiagonalentry. ff_h_pfp_tri_coefficient_newdiagonalentry + S (pfc_value_tri_coefficient_newdiagonal) = S ((S (pfc_index_tri_coefficient_newdiagonal)) * pfc_terms_scale_tri_coefficient_new)) /\ exists ff_q_pfp_tri_coefficient_newdiagonalentry. pfc_terms_code_tri_coefficient_new = ff_q_pfp_tri_coefficient_newdiagonalentry * S ((S (pfc_index_tri_coefficient_newdiagonal)) * pfc_terms_scale_tri_coefficient_new) + (pfc_value_tri_coefficient_newdiagonal))) /\ ((exists pfc_complement_tri_coefficient_newdiagonalterm pfc_left_tri_coefficient_newdiagonalterm pfc_right_tri_coefficient_newdiagonalterm. (((pfc_index_tri_coefficient_newdiagonal)+pfc_complement_tri_coefficient_newdiagonalterm=(i)) /\ ((((((exists pfa_gap_tri_coefficient_newdiagonaltermleftinside. pfa_gap_tri_coefficient_newdiagonaltermleftinside + S (pfc_index_tri_coefficient_newdiagonal) = (K)) /\ ((((exists ff_h_pfp_tri_coefficient_newdiagonaltermleftentry. ff_h_pfp_tri_coefficient_newdiagonaltermleftentry + S (pfc_left_tri_coefficient_newdiagonalterm) = S ((S (pfc_index_tri_coefficient_newdiagonal)) * AC)) /\ exists ff_q_pfp_tri_coefficient_newdiagonaltermleftentry. AB = ff_q_pfp_tri_coefficient_newdiagonaltermleftentry * S ((S (pfc_index_tri_coefficient_newdiagonal)) * AC) + (pfc_left_tri_coefficient_newdiagonalterm)))))) \/ (((exists pfc_gap_tri_coefficient_newdiagonaltermleftoutside. pfc_gap_tri_coefficient_newdiagonaltermleftoutside+(K)=(pfc_index_tri_coefficient_newdiagonal)) /\ (((pfc_left_tri_coefficient_newdiagonalterm)=0))))) /\ ((((((exists pfa_gap_tri_coefficient_newdiagonaltermrightinside. pfa_gap_tri_coefficient_newdiagonaltermrightinside + S (pfc_complement_tri_coefficient_newdiagonalterm) = (M)) /\ ((((exists ff_h_pfp_tri_coefficient_newdiagonaltermrightentry. ff_h_pfp_tri_coefficient_newdiagonaltermrightentry + S (pfc_right_tri_coefficient_newdiagonalterm) = S ((S (pfc_complement_tri_coefficient_newdiagonalterm)) * bc)) /\ exists ff_q_pfp_tri_coefficient_newdiagonaltermrightentry. bb = ff_q_pfp_tri_coefficient_newdiagonaltermrightentry * S ((S (pfc_complement_tri_coefficient_newdiagonalterm)) * bc) + (pfc_right_tri_coefficient_newdiagonalterm)))))) \/ (((exists pfc_gap_tri_coefficient_newdiagonaltermrightoutside. pfc_gap_tri_coefficient_newdiagonaltermrightoutside+(M)=(pfc_complement_tri_coefficient_newdiagonalterm)) /\ (((pfc_right_tri_coefficient_newdiagonalterm)=0))))) /\ (((pfc_value_tri_coefficient_newdiagonal)=pfc_left_tri_coefficient_newdiagonalterm*pfc_right_tri_coefficient_newdiagonalterm))))))))))) /\ (((exists fs_u_pfc_tri_coefficient_newsum fs_v_pfc_tri_coefficient_newsum. ((((exists fs_h_pfc_tri_coefficient_newsum_body_start. fs_h_pfc_tri_coefficient_newsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_tri_coefficient_newsum)) /\ exists fs_q_pfc_tri_coefficient_newsum_body_start. fs_u_pfc_tri_coefficient_newsum = fs_q_pfc_tri_coefficient_newsum_body_start * S ((S (0)) * fs_v_pfc_tri_coefficient_newsum) + (0))) /\ ((((exists fs_h_pfc_tri_coefficient_newsum_body_terminal. fs_h_pfc_tri_coefficient_newsum_body_terminal + S (pfc_natural_sum_tri_coefficient_new) = S ((S (S (i))) * fs_v_pfc_tri_coefficient_newsum)) /\ exists fs_q_pfc_tri_coefficient_newsum_body_terminal. fs_u_pfc_tri_coefficient_newsum = fs_q_pfc_tri_coefficient_newsum_body_terminal * S ((S (S (i))) * fs_v_pfc_tri_coefficient_newsum) + (pfc_natural_sum_tri_coefficient_new))) /\ forall fs_i_pfc_tri_coefficient_newsum_body_steps. (exists fs_lt_pfc_tri_coefficient_newsum_body_steps_bound. fs_lt_pfc_tri_coefficient_newsum_body_steps_bound + S fs_i_pfc_tri_coefficient_newsum_body_steps = S (i)) -> exists fs_a_pfc_tri_coefficient_newsum_body_steps fs_r_pfc_tri_coefficient_newsum_body_steps fs_s_pfc_tri_coefficient_newsum_body_steps. ((((exists fs_h_pfc_tri_coefficient_newsum_body_steps_summand. fs_h_pfc_tri_coefficient_newsum_body_steps_summand + S (fs_a_pfc_tri_coefficient_newsum_body_steps) = S ((S (fs_i_pfc_tri_coefficient_newsum_body_steps)) * pfc_terms_scale_tri_coefficient_new)) /\ exists fs_q_pfc_tri_coefficient_newsum_body_steps_summand. pfc_terms_code_tri_coefficient_new = fs_q_pfc_tri_coefficient_newsum_body_steps_summand * S ((S (fs_i_pfc_tri_coefficient_newsum_body_steps)) * pfc_terms_scale_tri_coefficient_new) + (fs_a_pfc_tri_coefficient_newsum_body_steps))) /\ ((((exists fs_h_pfc_tri_coefficient_newsum_body_steps_partial. fs_h_pfc_tri_coefficient_newsum_body_steps_partial + S (fs_r_pfc_tri_coefficient_newsum_body_steps) = S ((S (fs_i_pfc_tri_coefficient_newsum_body_steps)) * fs_v_pfc_tri_coefficient_newsum)) /\ exists fs_q_pfc_tri_coefficient_newsum_body_steps_partial. fs_u_pfc_tri_coefficient_newsum = fs_q_pfc_tri_coefficient_newsum_body_steps_partial * S ((S (fs_i_pfc_tri_coefficient_newsum_body_steps)) * fs_v_pfc_tri_coefficient_newsum) + (fs_r_pfc_tri_coefficient_newsum_body_steps))) /\ ((((exists fs_h_pfc_tri_coefficient_newsum_body_steps_successor. fs_h_pfc_tri_coefficient_newsum_body_steps_successor + S (fs_s_pfc_tri_coefficient_newsum_body_steps) = S ((S (S fs_i_pfc_tri_coefficient_newsum_body_steps)) * fs_v_pfc_tri_coefficient_newsum)) /\ exists fs_q_pfc_tri_coefficient_newsum_body_steps_successor. fs_u_pfc_tri_coefficient_newsum = fs_q_pfc_tri_coefficient_newsum_body_steps_successor * S ((S (S fs_i_pfc_tri_coefficient_newsum_body_steps)) * fs_v_pfc_tri_coefficient_newsum) + (fs_s_pfc_tri_coefficient_newsum_body_steps))) /\ fs_s_pfc_tri_coefficient_newsum_body_steps = fs_r_pfc_tri_coefficient_newsum_body_steps + fs_a_pfc_tri_coefficient_newsum_body_steps)))))) /\ ((((exists pfa_gap_tri_coefficient_newresiduebound. pfa_gap_tri_coefficient_newresiduebound + S (r) = (p)) /\ ((exists pfa_offset_left_tri_coefficient_newresiduecongruence pfa_offset_right_tri_coefficient_newresiduecongruence. (pfc_natural_sum_tri_coefficient_new) + (p) * pfa_offset_left_tri_coefficient_newresiduecongruence = (r) + (p) * pfa_offset_right_tri_coefficient_newresiduecongruence)))))))))

Constructive proof overview

Generated structural guide

Every coefficient below the shared prefix is unchanged, with its actual diagonal and sum witnesses reused verbatim.

The unchanged tactic script uses 2 declared prerequisites and contains 65 exact native proof lines.

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

Proof neighborhood

Direct dependencies

PX0001 polynomial_diagonal_left_prefix_transport lt_of_lt_of_le 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

65 script commands · 15 reading checkpoints · 1 local claims

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

Named ingredients (1)

Long local formulas use this family’s existing definitions. Each new abbreviation was expanded back to the identical native formula, including its free-variable context. The original edition is preserved below.

01Fix variables and assumptionsL1–10

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

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

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

  1. L11
    intro N
  2. L12
    intro i
  3. L13
    intro r
  4. L14
    intro hl
  5. L15
    intro hk
  6. L16
    intro he
  7. L17
    intro hi
  8. L18
    intro hr
03Separate the logical casesL19–23

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

  1. L19
    cases hr
  2. L20
    cases hr_witness
  3. L21
    cases hr_witness_witness
  4. L22
    cases hr_witness_witness_witness
  5. L23
    cases hr_witness_witness_witness_right
04Construct an explicit witnessL24–26

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

  1. L24
    exists x
  2. L25
    exists x1
  3. L26
    exists x2
05Separate the logical casesL27–27

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

  1. L27
    split
06Fix variables and assumptionsL28–29

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

  1. L28
    intro j
  2. L29
    intro hj
07Establish htL30–33

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

  1. L30
    have ht : ∃ t. BetaAt(x,x1,j,t) ∧ PolynomialDiagonalTerm(ab,ac,L,bb,bc,M,i,j,t)Definitions: PolynomialDiagonalTermBetaAt
  2. L31
    specialize hr_witness_witness_witness_left (j)
  3. L32
    apply hr_witness_witness_witness_left
  4. L33
    exact hj
08Separate the logical casesL34–35

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

  1. L34
    cases ht
  2. L35
    cases ht_witness
09Construct an explicit witnessL36–36

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

  1. L36
    exists x3
10Separate the logical casesL37–37

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

  1. L37
    split
11Use earlier factsL38–47

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

  1. L38
    exact ht_witness_left
  2. L39
    specialize polynomial_diagonal_left_prefix_transport (ab)
  3. L40
    specialize polynomial_diagonal_left_prefix_transport (ac)
  4. L41
    specialize polynomial_diagonal_left_prefix_transport (L)
  5. L42
    specialize polynomial_diagonal_left_prefix_transport (AB)
  6. L43
    specialize polynomial_diagonal_left_prefix_transport (AC)
  7. L44
    specialize polynomial_diagonal_left_prefix_transport (K)
  8. L45
    specialize polynomial_diagonal_left_prefix_transport (bb)
  9. L46
    specialize polynomial_diagonal_left_prefix_transport (bc)
  10. L47
    specialize polynomial_diagonal_left_prefix_transport (M)
12Use earlier factsL48–57

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

  1. L48
    specialize polynomial_diagonal_left_prefix_transport (N)
  2. L49
    specialize polynomial_diagonal_left_prefix_transport (i)
  3. L50
    specialize polynomial_diagonal_left_prefix_transport (j)
  4. L51
    specialize polynomial_diagonal_left_prefix_transport (x3)
  5. L52
    apply polynomial_diagonal_left_prefix_transport
  6. L53
    exact hl
  7. L54
    exact hk
  8. L55
    exact he
  9. L56
    specialize lt_of_lt_of_le (j)
  10. L57
    specialize lt_of_lt_of_le (S i)
13Use earlier factsL58–62

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

  1. L58
    specialize lt_of_lt_of_le (N)
  2. L59
    apply lt_of_lt_of_le
  3. L60
    exact hj
  4. L61
    exact hi
  5. L62
    exact ht_witness_right
14Separate the logical casesL63–63

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

  1. L63
    split
15Use earlier factsL64–65

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

  1. L64
    exact hr_witness_witness_witness_right_left
  2. L65
    exact hr_witness_witness_witness_right_right

Library-wide reading audit

Original exact command ledger · 65 lines
  1. 0001intro p
  2. 0002intro ab
  3. 0003intro ac
  4. 0004intro L
  5. 0005intro AB
  6. 0006intro AC
  7. 0007intro K
  8. 0008intro bb
  9. 0009intro bc
  10. 0010intro M
  11. 0011intro N
  12. 0012intro i
  13. 0013intro r
  14. 0014intro hl
  15. 0015intro hk
  16. 0016intro he
  17. 0017intro hi
  18. 0018intro hr
  19. 0019cases hr
  20. 0020cases hr_witness
  21. 0021cases hr_witness_witness
  22. 0022cases hr_witness_witness_witness
  23. 0023cases hr_witness_witness_witness_right
  24. 0024exists x
  25. 0025exists x1
  26. 0026exists x2
  27. 0027split
  28. 0028intro j
  29. 0029intro hj
  30. 0030have ht : exists t. ((((exists ff_h_pfp_tri_coefficient_chosen_entry. ff_h_pfp_tri_coefficient_chosen_entry + S (t) = S ((S (j)) * x1)) /\ exists ff_q_pfp_tri_coefficient_chosen_entry. x = ff_q_pfp_tri_coefficient_chosen_entry * S ((S (j)) * x1) + (t))) /\ ((exists pfc_complement_tri_coefficient_chosen_term pfc_left_tri_coefficient_chosen_term pfc_right_tri_coefficient_chosen_term. (((j)+pfc_complement_tri_coefficient_chosen_term=(i)) /\ ((((((exists pfa_gap_tri_coefficient_chosen_termleftinside. pfa_gap_tri_coefficient_chosen_termleftinside + S (j) = (L)) /\ ((((exists ff_h_pfp_tri_coefficient_chosen_termleftentry. ff_h_pfp_tri_coefficient_chosen_termleftentry + S (pfc_left_tri_coefficient_chosen_term) = S ((S (j)) * ac)) /\ exists ff_q_pfp_tri_coefficient_chosen_termleftentry. ab = ff_q_pfp_tri_coefficient_chosen_termleftentry * S ((S (j)) * ac) + (pfc_left_tri_coefficient_chosen_term)))))) \/ (((exists pfc_gap_tri_coefficient_chosen_termleftoutside. pfc_gap_tri_coefficient_chosen_termleftoutside+(L)=(j)) /\ (((pfc_left_tri_coefficient_chosen_term)=0))))) /\ ((((((exists pfa_gap_tri_coefficient_chosen_termrightinside. pfa_gap_tri_coefficient_chosen_termrightinside + S (pfc_complement_tri_coefficient_chosen_term) = (M)) /\ ((((exists ff_h_pfp_tri_coefficient_chosen_termrightentry. ff_h_pfp_tri_coefficient_chosen_termrightentry + S (pfc_right_tri_coefficient_chosen_term) = S ((S (pfc_complement_tri_coefficient_chosen_term)) * bc)) /\ exists ff_q_pfp_tri_coefficient_chosen_termrightentry. bb = ff_q_pfp_tri_coefficient_chosen_termrightentry * S ((S (pfc_complement_tri_coefficient_chosen_term)) * bc) + (pfc_right_tri_coefficient_chosen_term)))))) \/ (((exists pfc_gap_tri_coefficient_chosen_termrightoutside. pfc_gap_tri_coefficient_chosen_termrightoutside+(M)=(pfc_complement_tri_coefficient_chosen_term)) /\ (((pfc_right_tri_coefficient_chosen_term)=0))))) /\ (((t)=pfc_left_tri_coefficient_chosen_term*pfc_right_tri_coefficient_chosen_term))))))))))
  31. 0031specialize hr_witness_witness_witness_left (j)
  32. 0032apply hr_witness_witness_witness_left
  33. 0033exact hj
  34. 0034cases ht
  35. 0035cases ht_witness
  36. 0036exists x3
  37. 0037split
  38. 0038exact ht_witness_left
  39. 0039specialize polynomial_diagonal_left_prefix_transport (ab)
  40. 0040specialize polynomial_diagonal_left_prefix_transport (ac)
  41. 0041specialize polynomial_diagonal_left_prefix_transport (L)
  42. 0042specialize polynomial_diagonal_left_prefix_transport (AB)
  43. 0043specialize polynomial_diagonal_left_prefix_transport (AC)
  44. 0044specialize polynomial_diagonal_left_prefix_transport (K)
  45. 0045specialize polynomial_diagonal_left_prefix_transport (bb)
  46. 0046specialize polynomial_diagonal_left_prefix_transport (bc)
  47. 0047specialize polynomial_diagonal_left_prefix_transport (M)
  48. 0048specialize polynomial_diagonal_left_prefix_transport (N)
  49. 0049specialize polynomial_diagonal_left_prefix_transport (i)
  50. 0050specialize polynomial_diagonal_left_prefix_transport (j)
  51. 0051specialize polynomial_diagonal_left_prefix_transport (x3)
  52. 0052apply polynomial_diagonal_left_prefix_transport
  53. 0053exact hl
  54. 0054exact hk
  55. 0055exact he
  56. 0056specialize lt_of_lt_of_le (j)
  57. 0057specialize lt_of_lt_of_le (S i)
  58. 0058specialize lt_of_lt_of_le (N)
  59. 0059apply lt_of_lt_of_le
  60. 0060exact hj
  61. 0061exact hi
  62. 0062exact ht_witness_right
  63. 0063split
  64. 0064exact hr_witness_witness_witness_right_left
  65. 0065exact hr_witness_witness_witness_right_right