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 ab ac L bb bc M BB BC t i db dc eb ec. (((forall pfp_repeat_index_diagonal_actual_padding_rightzeros. (exists pfa_gap_diagonal_actual_padding_rightzerosindex. pfa_gap_diagonal_actual_padding_rightzerosindex + S (pfp_repeat_index_diagonal_actual_padding_rightzeros) = (t)) -> (((exists ff_h_pfp_diagonal_actual_padding_rightzerosentry. ff_h_pfp_diagonal_actual_padding_rightzerosentry + S (0) = S ((S (pfp_repeat_index_diagonal_actual_padding_rightzeros)) * BC)) /\ exists ff_q_pfp_diagonal_actual_padding_rightzerosentry. BB = ff_q_pfp_diagonal_actual_padding_rightzerosentry * S ((S (pfp_repeat_index_diagonal_actual_padding_rightzeros)) * BC) + (0)))) /\ ((forall pfrep_index_diagonal_actual_padding_right pfrep_value_diagonal_actual_padding_right. (exists pfa_gap_diagonal_actual_padding_rightbound. pfa_gap_diagonal_actual_padding_rightbound + S (pfrep_index_diagonal_actual_padding_right) = (M)) -> (((exists ff_h_pfp_diagonal_actual_padding_rightinput. ff_h_pfp_diagonal_actual_padding_rightinput + S (pfrep_value_diagonal_actual_padding_right) = S ((S (pfrep_index_diagonal_actual_padding_right)) * bc)) /\ exists ff_q_pfp_diagonal_actual_padding_rightinput. bb = ff_q_pfp_diagonal_actual_padding_rightinput * S ((S (pfrep_index_diagonal_actual_padding_right)) * bc) + (pfrep_value_diagonal_actual_padding_right))) -> (((exists ff_h_pfp_diagonal_actual_padding_rightoutput. ff_h_pfp_diagonal_actual_padding_rightoutput + S (pfrep_value_diagonal_actual_padding_right) = S ((S ((t)+pfrep_index_diagonal_actual_padding_right)) * BC)) /\ exists ff_q_pfp_diagonal_actual_padding_rightoutput. BB = ff_q_pfp_diagonal_actual_padding_rightoutput * S ((S ((t)+pfrep_index_diagonal_actual_padding_right)) * BC) + (pfrep_value_diagonal_actual_padding_right))))))) -> (forall pfc_index_diagonal_pad_old_right. (exists pfa_gap_diagonal_pad_old_rightbound. pfa_gap_diagonal_pad_old_rightbound + S (pfc_index_diagonal_pad_old_right) = (S i)) -> exists pfc_value_diagonal_pad_old_right. ((((exists ff_h_pfp_diagonal_pad_old_rightentry. ff_h_pfp_diagonal_pad_old_rightentry + S (pfc_value_diagonal_pad_old_right) = S ((S (pfc_index_diagonal_pad_old_right)) * dc)) /\ exists ff_q_pfp_diagonal_pad_old_rightentry. db = ff_q_pfp_diagonal_pad_old_rightentry * S ((S (pfc_index_diagonal_pad_old_right)) * dc) + (pfc_value_diagonal_pad_old_right))) /\ ((exists pfc_complement_diagonal_pad_old_rightterm pfc_left_diagonal_pad_old_rightterm pfc_right_diagonal_pad_old_rightterm. (((pfc_index_diagonal_pad_old_right)+pfc_complement_diagonal_pad_old_rightterm=(i)) /\ ((((((exists pfa_gap_diagonal_pad_old_righttermleftinside. pfa_gap_diagonal_pad_old_righttermleftinside + S (pfc_index_diagonal_pad_old_right) = (L)) /\ ((((exists ff_h_pfp_diagonal_pad_old_righttermleftentry. ff_h_pfp_diagonal_pad_old_righttermleftentry + S (pfc_left_diagonal_pad_old_rightterm) = S ((S (pfc_index_diagonal_pad_old_right)) * ac)) /\ exists ff_q_pfp_diagonal_pad_old_righttermleftentry. ab = ff_q_pfp_diagonal_pad_old_righttermleftentry * S ((S (pfc_index_diagonal_pad_old_right)) * ac) + (pfc_left_diagonal_pad_old_rightterm)))))) \/ (((exists pfc_gap_diagonal_pad_old_righttermleftoutside. pfc_gap_diagonal_pad_old_righttermleftoutside+(L)=(pfc_index_diagonal_pad_old_right)) /\ (((pfc_left_diagonal_pad_old_rightterm)=0))))) /\ ((((((exists pfa_gap_diagonal_pad_old_righttermrightinside. pfa_gap_diagonal_pad_old_righttermrightinside + S (pfc_complement_diagonal_pad_old_rightterm) = (M)) /\ ((((exists ff_h_pfp_diagonal_pad_old_righttermrightentry. ff_h_pfp_diagonal_pad_old_righttermrightentry + S (pfc_right_diagonal_pad_old_rightterm) = S ((S (pfc_complement_diagonal_pad_old_rightterm)) * bc)) /\ exists ff_q_pfp_diagonal_pad_old_righttermrightentry. bb = ff_q_pfp_diagonal_pad_old_righttermrightentry * S ((S (pfc_complement_diagonal_pad_old_rightterm)) * bc) + (pfc_right_diagonal_pad_old_rightterm)))))) \/ (((exists pfc_gap_diagonal_pad_old_righttermrightoutside. pfc_gap_diagonal_pad_old_righttermrightoutside+(M)=(pfc_complement_diagonal_pad_old_rightterm)) /\ (((pfc_right_diagonal_pad_old_rightterm)=0))))) /\ (((pfc_value_diagonal_pad_old_right)=pfc_left_diagonal_pad_old_rightterm*pfc_right_diagonal_pad_old_rightterm))))))))))) -> (forall pfc_index_diagonal_pad_new_right. (exists pfa_gap_diagonal_pad_new_rightbound. pfa_gap_diagonal_pad_new_rightbound + S (pfc_index_diagonal_pad_new_right) = (S (t+i))) -> exists pfc_value_diagonal_pad_new_right. ((((exists ff_h_pfp_diagonal_pad_new_rightentry. ff_h_pfp_diagonal_pad_new_rightentry + S (pfc_value_diagonal_pad_new_right) = S ((S (pfc_index_diagonal_pad_new_right)) * ec)) /\ exists ff_q_pfp_diagonal_pad_new_rightentry. eb = ff_q_pfp_diagonal_pad_new_rightentry * S ((S (pfc_index_diagonal_pad_new_right)) * ec) + (pfc_value_diagonal_pad_new_right))) /\ ((exists pfc_complement_diagonal_pad_new_rightterm pfc_left_diagonal_pad_new_rightterm pfc_right_diagonal_pad_new_rightterm. (((pfc_index_diagonal_pad_new_right)+pfc_complement_diagonal_pad_new_rightterm=(t+i)) /\ ((((((exists pfa_gap_diagonal_pad_new_righttermleftinside. pfa_gap_diagonal_pad_new_righttermleftinside + S (pfc_index_diagonal_pad_new_right) = (L)) /\ ((((exists ff_h_pfp_diagonal_pad_new_righttermleftentry. ff_h_pfp_diagonal_pad_new_righttermleftentry + S (pfc_left_diagonal_pad_new_rightterm) = S ((S (pfc_index_diagonal_pad_new_right)) * ac)) /\ exists ff_q_pfp_diagonal_pad_new_righttermleftentry. ab = ff_q_pfp_diagonal_pad_new_righttermleftentry * S ((S (pfc_index_diagonal_pad_new_right)) * ac) + (pfc_left_diagonal_pad_new_rightterm)))))) \/ (((exists pfc_gap_diagonal_pad_new_righttermleftoutside. pfc_gap_diagonal_pad_new_righttermleftoutside+(L)=(pfc_index_diagonal_pad_new_right)) /\ (((pfc_left_diagonal_pad_new_rightterm)=0))))) /\ ((((((exists pfa_gap_diagonal_pad_new_righttermrightinside. pfa_gap_diagonal_pad_new_righttermrightinside + S (pfc_complement_diagonal_pad_new_rightterm) = (t+M)) /\ ((((exists ff_h_pfp_diagonal_pad_new_righttermrightentry. ff_h_pfp_diagonal_pad_new_righttermrightentry + S (pfc_right_diagonal_pad_new_rightterm) = S ((S (pfc_complement_diagonal_pad_new_rightterm)) * BC)) /\ exists ff_q_pfp_diagonal_pad_new_righttermrightentry. BB = ff_q_pfp_diagonal_pad_new_righttermrightentry * S ((S (pfc_complement_diagonal_pad_new_rightterm)) * BC) + (pfc_right_diagonal_pad_new_rightterm)))))) \/ (((exists pfc_gap_diagonal_pad_new_righttermrightoutside. pfc_gap_diagonal_pad_new_righttermrightoutside+(t+M)=(pfc_complement_diagonal_pad_new_rightterm)) /\ (((pfc_right_diagonal_pad_new_rightterm)=0))))) /\ (((pfc_value_diagonal_pad_new_right)=pfc_left_diagonal_pad_new_rightterm*pfc_right_diagonal_pad_new_rightterm))))))))))) -> (((forall mdr_i_pfp_diagonal_pad_result_equal mdr_a_pfp_diagonal_pad_result_equal. (exists mdr_gap_pfp_diagonal_pad_result_equalb. mdr_gap_pfp_diagonal_pad_result_equalb + S (mdr_i_pfp_diagonal_pad_result_equal) = (S i)) -> (((exists ff_h_mdr_pfp_diagonal_pad_result_equalo. ff_h_mdr_pfp_diagonal_pad_result_equalo + S (mdr_a_pfp_diagonal_pad_result_equal) = S ((S (mdr_i_pfp_diagonal_pad_result_equal)) * dc)) /\ exists ff_q_mdr_pfp_diagonal_pad_result_equalo. db = ff_q_mdr_pfp_diagonal_pad_result_equalo * S ((S (mdr_i_pfp_diagonal_pad_result_equal)) * dc) + (mdr_a_pfp_diagonal_pad_result_equal))) -> (((exists ff_h_mdr_pfp_diagonal_pad_result_equaln. ff_h_mdr_pfp_diagonal_pad_result_equaln + S (mdr_a_pfp_diagonal_pad_result_equal) = S ((S (mdr_i_pfp_diagonal_pad_result_equal)) * ec)) /\ exists ff_q_mdr_pfp_diagonal_pad_result_equaln. eb = ff_q_mdr_pfp_diagonal_pad_result_equaln * S ((S (mdr_i_pfp_diagonal_pad_result_equal)) * ec) + (mdr_a_pfp_diagonal_pad_result_equal)))) /\ ((forall pfpad_tail_index_diagonal_pad_result_tail. (exists pfa_gap_diagonal_pad_result_tailbound. pfa_gap_diagonal_pad_result_tailbound + S (pfpad_tail_index_diagonal_pad_result_tail) = (t)) -> (((exists ff_h_pfp_diagonal_pad_result_tailzero. ff_h_pfp_diagonal_pad_result_tailzero + S (0) = S ((S ((S i)+pfpad_tail_index_diagonal_pad_result_tail)) * ec)) /\ exists ff_q_pfp_diagonal_pad_result_tailzero. eb = ff_q_pfp_diagonal_pad_result_tailzero * S ((S ((S i)+pfpad_tail_index_diagonal_pad_result_tail)) * ec) + (0)))))))Constructive proof overview
Generated structural guide
The two actual antidiagonal tables differ by a proved trailing zero block and exact copied natural summands.
The unchanged tactic script uses 10 declared prerequisites and contains 130 exact native proof lines.
Alpha v34 checked-use · first admitted v33 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
polynomial_diagonal_prefix_entry Alpha theorem; checked-use authorized le_trans Alpha theorem; checked-use authorized succ_le_succ Alpha theorem; checked-use authorized polynomial_diagonal_term_functional Alpha theorem; checked-use authorized PX0061 polynomial_diagonal_term_left_padding_right PX0063 polynomial_diagonal_term_left_padding_zero_right le_add_left Alpha theorem; checked-use authorized add_succ_left Alpha theorem; checked-use authorized add_comm Alpha theorem; checked-use authorized matrix_recursive_lt_add_left Alpha theorem; checked-use authorizedDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.
Read the argument
Proof checkpoints
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
Named ingredients (2)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–17
03Separate the logical casesL18–18
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L18
split
04Fix variables and assumptionsL19–22
05Establish htermL23–32
Establish this local claim before using it. It is not an additional assumption.
- L23
have hterm : PolynomialDiagonalTerm(ab,ac,L,bb,bc,M,i,j,a)Definitions: PolynomialDiagonalTerm - L24
specialize polynomial_diagonal_prefix_entry (ab) - L25
specialize polynomial_diagonal_prefix_entry (ac) - L26
specialize polynomial_diagonal_prefix_entry (L) - L27
specialize polynomial_diagonal_prefix_entry (bb) - L28
specialize polynomial_diagonal_prefix_entry (bc) - L29
specialize polynomial_diagonal_prefix_entry (M) - L30
specialize polynomial_diagonal_prefix_entry (i) - L31
specialize polynomial_diagonal_prefix_entry (db) - L32
specialize polynomial_diagonal_prefix_entry (dc)
06Use earlier factsL33–39
Instantiate or apply named facts and discharge the corresponding proof obligations.
07Establish hvL40–49
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hnew.
- L40
have hv : ∃ z. BetaAt(eb,ec,j,z) ∧ PolynomialDiagonalTerm(ab,ac,L,BB,BC,t + M,t + i,j,z)Definitions: PolynomialDiagonalTermBetaAt - L41
specialize hnew (j) - L42
apply hnew - L43
specialize le_trans (S j) - L44
specialize le_trans (S i) - L45
specialize le_trans (S (t+i)) - L46
apply le_trans - L47
exact hj - L48
specialize succ_le_succ (i) - L49
specialize succ_le_succ (t+i)
08Use earlier factsL50–53
09Separate the logical casesL54–55
10Establish heqL56–65
Establish this local claim before using it. It is not an additional assumption.
- L56
have heq : x=a - L57
specialize polynomial_diagonal_term_functional (ab) - L58
specialize polynomial_diagonal_term_functional (ac) - L59
specialize polynomial_diagonal_term_functional (L) - L60
specialize polynomial_diagonal_term_functional (BB) - L61
specialize polynomial_diagonal_term_functional (BC) - L62
specialize polynomial_diagonal_term_functional (t+M) - L63
specialize polynomial_diagonal_term_functional (t+i) - L64
specialize polynomial_diagonal_term_functional (j) - L65
specialize polynomial_diagonal_term_functional (x)
11Use earlier factsL66–75
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L66
specialize polynomial_diagonal_term_functional (a) - L67
apply polynomial_diagonal_term_functional - L68
exact hv_witness_right - L69
specialize polynomial_diagonal_term_left_padding_right (ab) - L70
specialize polynomial_diagonal_term_left_padding_right (ac) - L71
specialize polynomial_diagonal_term_left_padding_right (L) - L72
specialize polynomial_diagonal_term_left_padding_right (bb) - L73
specialize polynomial_diagonal_term_left_padding_right (bc) - L74
specialize polynomial_diagonal_term_left_padding_right (M) - L75
specialize polynomial_diagonal_term_left_padding_right (BB)
12Use earlier factsL76–83
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L76
specialize polynomial_diagonal_term_left_padding_right (BC) - L77
specialize polynomial_diagonal_term_left_padding_right (t) - L78
specialize polynomial_diagonal_term_left_padding_right (i) - L79
specialize polynomial_diagonal_term_left_padding_right (j) - L80
specialize polynomial_diagonal_term_left_padding_right (a) - L81
apply polynomial_diagonal_term_left_padding_right - L82
exact hpad - L83
exact hterm
13Calculate and transport equalitiesL84–85
14Use earlier factsL86–86
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L86
exact hv_witness_left
15Fix variables and assumptionsL87–88
16Establish hvL89–91
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hnew.
- L89
have hv : ∃ z. BetaAt(eb,ec,S i + j,z) ∧ PolynomialDiagonalTerm(ab,ac,L,BB,BC,t + M,t + i,S i + j,z)Definitions: PolynomialDiagonalTermBetaAt - L90
specialize hnew (S i+j) - L91
apply hnew
17Establish hlengthL92–93
18Establish hboundL94–101
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply matrix recursive lt add left.
- L94
have hbound : exists pfa_gap_diagonal_tail_bound. pfa_gap_diagonal_tail_bound + S (S i+j) = (S i+t) - L95
specialize matrix_recursive_lt_add_left (j) - L96
specialize matrix_recursive_lt_add_left (t) - L97
specialize matrix_recursive_lt_add_left (S i) - L98
apply matrix_recursive_lt_add_left - L99
exact hj - L100
rewrite hlength at hbound - L101
exact hbound
19Separate the logical casesL102–103
20Establish hzL104–113
Establish this local claim before using it. It is not an additional assumption.
- L104
have hz : x=0 - L105
specialize polynomial_diagonal_term_left_padding_zero_right (ab) - L106
specialize polynomial_diagonal_term_left_padding_zero_right (ac) - L107
specialize polynomial_diagonal_term_left_padding_zero_right (L) - L108
specialize polynomial_diagonal_term_left_padding_zero_right (bb) - L109
specialize polynomial_diagonal_term_left_padding_zero_right (bc) - L110
specialize polynomial_diagonal_term_left_padding_zero_right (M) - L111
specialize polynomial_diagonal_term_left_padding_zero_right (BB) - L112
specialize polynomial_diagonal_term_left_padding_zero_right (BC) - L113
specialize polynomial_diagonal_term_left_padding_zero_right (t)
21Use earlier factsL114–122
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L114
specialize polynomial_diagonal_term_left_padding_zero_right (t+i) - L115
specialize polynomial_diagonal_term_left_padding_zero_right (S i+j) - L116
specialize polynomial_diagonal_term_left_padding_zero_right (x) - L117
apply polynomial_diagonal_term_left_padding_zero_right - L118
exact hpad - L119
specialize matrix_recursive_lt_add_left (i) - L120
specialize matrix_recursive_lt_add_left (S i+j) - L121
specialize matrix_recursive_lt_add_left (t) - L122
apply matrix_recursive_lt_add_left
22Construct an explicit witnessL123–123
Supply the displayed value, then prove that it has the required property.
- L123
exists j
23Use earlier factsL124–127
24Calculate and transport equalitiesL128–129
25Use earlier factsL130–130
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L130
exact hv_witness_left
Original exact command ledger · 130 lines
- 0001
intro ab - 0002
intro ac - 0003
intro L - 0004
intro bb - 0005
intro bc - 0006
intro M - 0007
intro BB - 0008
intro BC - 0009
intro t - 0010
intro i - 0011
intro db - 0012
intro dc - 0013
intro eb - 0014
intro ec - 0015
intro hpad - 0016
intro hold - 0017
intro hnew - 0018
split - 0019
intro j - 0020
intro a - 0021
intro hj - 0022
intro ha - 0023
have hterm : exists pfc_complement_diagonal_copy_old pfc_left_diagonal_copy_old pfc_right_diagonal_copy_old. (((j)+pfc_complement_diagonal_copy_old=(i)) /\ ((((((exists pfa_gap_diagonal_copy_oldleftinside. pfa_gap_diagonal_copy_oldleftinside + S (j) = (L)) /\ ((((exists ff_h_pfp_diagonal_copy_oldleftentry. ff_h_pfp_diagonal_copy_oldleftentry + S (pfc_left_diagonal_copy_old) = S ((S (j)) * ac)) /\ exists ff_q_pfp_diagonal_copy_oldleftentry. ab = ff_q_pfp_diagonal_copy_oldleftentry * S ((S (j)) * ac) + (pfc_left_diagonal_copy_old)))))) \/ (((exists pfc_gap_diagonal_copy_oldleftoutside. pfc_gap_diagonal_copy_oldleftoutside+(L)=(j)) /\ (((pfc_left_diagonal_copy_old)=0))))) /\ ((((((exists pfa_gap_diagonal_copy_oldrightinside. pfa_gap_diagonal_copy_oldrightinside + S (pfc_complement_diagonal_copy_old) = (M)) /\ ((((exists ff_h_pfp_diagonal_copy_oldrightentry. ff_h_pfp_diagonal_copy_oldrightentry + S (pfc_right_diagonal_copy_old) = S ((S (pfc_complement_diagonal_copy_old)) * bc)) /\ exists ff_q_pfp_diagonal_copy_oldrightentry. bb = ff_q_pfp_diagonal_copy_oldrightentry * S ((S (pfc_complement_diagonal_copy_old)) * bc) + (pfc_right_diagonal_copy_old)))))) \/ (((exists pfc_gap_diagonal_copy_oldrightoutside. pfc_gap_diagonal_copy_oldrightoutside+(M)=(pfc_complement_diagonal_copy_old)) /\ (((pfc_right_diagonal_copy_old)=0))))) /\ (((a)=pfc_left_diagonal_copy_old*pfc_right_diagonal_copy_old))))))) - 0024
specialize polynomial_diagonal_prefix_entry (ab) - 0025
specialize polynomial_diagonal_prefix_entry (ac) - 0026
specialize polynomial_diagonal_prefix_entry (L) - 0027
specialize polynomial_diagonal_prefix_entry (bb) - 0028
specialize polynomial_diagonal_prefix_entry (bc) - 0029
specialize polynomial_diagonal_prefix_entry (M) - 0030
specialize polynomial_diagonal_prefix_entry (i) - 0031
specialize polynomial_diagonal_prefix_entry (db) - 0032
specialize polynomial_diagonal_prefix_entry (dc) - 0033
specialize polynomial_diagonal_prefix_entry (S i) - 0034
specialize polynomial_diagonal_prefix_entry (j) - 0035
specialize polynomial_diagonal_prefix_entry (a) - 0036
apply polynomial_diagonal_prefix_entry - 0037
exact hold - 0038
exact hj - 0039
exact ha - 0040
have hv : exists z. ((((exists ff_h_pfp_diagonal_copy_entry. ff_h_pfp_diagonal_copy_entry + S (z) = S ((S (j)) * ec)) /\ exists ff_q_pfp_diagonal_copy_entry. eb = ff_q_pfp_diagonal_copy_entry * S ((S (j)) * ec) + (z))) /\ ((exists pfc_complement_diagonal_copy_actual pfc_left_diagonal_copy_actual pfc_right_diagonal_copy_actual. (((j)+pfc_complement_diagonal_copy_actual=(t+i)) /\ ((((((exists pfa_gap_diagonal_copy_actualleftinside. pfa_gap_diagonal_copy_actualleftinside + S (j) = (L)) /\ ((((exists ff_h_pfp_diagonal_copy_actualleftentry. ff_h_pfp_diagonal_copy_actualleftentry + S (pfc_left_diagonal_copy_actual) = S ((S (j)) * ac)) /\ exists ff_q_pfp_diagonal_copy_actualleftentry. ab = ff_q_pfp_diagonal_copy_actualleftentry * S ((S (j)) * ac) + (pfc_left_diagonal_copy_actual)))))) \/ (((exists pfc_gap_diagonal_copy_actualleftoutside. pfc_gap_diagonal_copy_actualleftoutside+(L)=(j)) /\ (((pfc_left_diagonal_copy_actual)=0))))) /\ ((((((exists pfa_gap_diagonal_copy_actualrightinside. pfa_gap_diagonal_copy_actualrightinside + S (pfc_complement_diagonal_copy_actual) = (t+M)) /\ ((((exists ff_h_pfp_diagonal_copy_actualrightentry. ff_h_pfp_diagonal_copy_actualrightentry + S (pfc_right_diagonal_copy_actual) = S ((S (pfc_complement_diagonal_copy_actual)) * BC)) /\ exists ff_q_pfp_diagonal_copy_actualrightentry. BB = ff_q_pfp_diagonal_copy_actualrightentry * S ((S (pfc_complement_diagonal_copy_actual)) * BC) + (pfc_right_diagonal_copy_actual)))))) \/ (((exists pfc_gap_diagonal_copy_actualrightoutside. pfc_gap_diagonal_copy_actualrightoutside+(t+M)=(pfc_complement_diagonal_copy_actual)) /\ (((pfc_right_diagonal_copy_actual)=0))))) /\ (((z)=pfc_left_diagonal_copy_actual*pfc_right_diagonal_copy_actual)))))))))) - 0041
specialize hnew (j) - 0042
apply hnew - 0043
specialize le_trans (S j) - 0044
specialize le_trans (S i) - 0045
specialize le_trans (S (t+i)) - 0046
apply le_trans - 0047
exact hj - 0048
specialize succ_le_succ (i) - 0049
specialize succ_le_succ (t+i) - 0050
apply succ_le_succ - 0051
specialize le_add_left (i) - 0052
specialize le_add_left (t) - 0053
apply le_add_left - 0054
cases hv - 0055
cases hv_witness - 0056
have heq : x=a - 0057
specialize polynomial_diagonal_term_functional (ab) - 0058
specialize polynomial_diagonal_term_functional (ac) - 0059
specialize polynomial_diagonal_term_functional (L) - 0060
specialize polynomial_diagonal_term_functional (BB) - 0061
specialize polynomial_diagonal_term_functional (BC) - 0062
specialize polynomial_diagonal_term_functional (t+M) - 0063
specialize polynomial_diagonal_term_functional (t+i) - 0064
specialize polynomial_diagonal_term_functional (j) - 0065
specialize polynomial_diagonal_term_functional (x) - 0066
specialize polynomial_diagonal_term_functional (a) - 0067
apply polynomial_diagonal_term_functional - 0068
exact hv_witness_right - 0069
specialize polynomial_diagonal_term_left_padding_right (ab) - 0070
specialize polynomial_diagonal_term_left_padding_right (ac) - 0071
specialize polynomial_diagonal_term_left_padding_right (L) - 0072
specialize polynomial_diagonal_term_left_padding_right (bb) - 0073
specialize polynomial_diagonal_term_left_padding_right (bc) - 0074
specialize polynomial_diagonal_term_left_padding_right (M) - 0075
specialize polynomial_diagonal_term_left_padding_right (BB) - 0076
specialize polynomial_diagonal_term_left_padding_right (BC) - 0077
specialize polynomial_diagonal_term_left_padding_right (t) - 0078
specialize polynomial_diagonal_term_left_padding_right (i) - 0079
specialize polynomial_diagonal_term_left_padding_right (j) - 0080
specialize polynomial_diagonal_term_left_padding_right (a) - 0081
apply polynomial_diagonal_term_left_padding_right - 0082
exact hpad - 0083
exact hterm - 0084
rewrite heq at hv_witness_left - 0085
rewrite heq at hv_witness_left - 0086
exact hv_witness_left - 0087
intro j - 0088
intro hj - 0089
have hv : exists z. ((((exists ff_h_pfp_diagonal_tail_entry. ff_h_pfp_diagonal_tail_entry + S (z) = S ((S (S i+j)) * ec)) /\ exists ff_q_pfp_diagonal_tail_entry. eb = ff_q_pfp_diagonal_tail_entry * S ((S (S i+j)) * ec) + (z))) /\ ((exists pfc_complement_diagonal_tail_actual pfc_left_diagonal_tail_actual pfc_right_diagonal_tail_actual. (((S i+j)+pfc_complement_diagonal_tail_actual=(t+i)) /\ ((((((exists pfa_gap_diagonal_tail_actualleftinside. pfa_gap_diagonal_tail_actualleftinside + S (S i+j) = (L)) /\ ((((exists ff_h_pfp_diagonal_tail_actualleftentry. ff_h_pfp_diagonal_tail_actualleftentry + S (pfc_left_diagonal_tail_actual) = S ((S (S i+j)) * ac)) /\ exists ff_q_pfp_diagonal_tail_actualleftentry. ab = ff_q_pfp_diagonal_tail_actualleftentry * S ((S (S i+j)) * ac) + (pfc_left_diagonal_tail_actual)))))) \/ (((exists pfc_gap_diagonal_tail_actualleftoutside. pfc_gap_diagonal_tail_actualleftoutside+(L)=(S i+j)) /\ (((pfc_left_diagonal_tail_actual)=0))))) /\ ((((((exists pfa_gap_diagonal_tail_actualrightinside. pfa_gap_diagonal_tail_actualrightinside + S (pfc_complement_diagonal_tail_actual) = (t+M)) /\ ((((exists ff_h_pfp_diagonal_tail_actualrightentry. ff_h_pfp_diagonal_tail_actualrightentry + S (pfc_right_diagonal_tail_actual) = S ((S (pfc_complement_diagonal_tail_actual)) * BC)) /\ exists ff_q_pfp_diagonal_tail_actualrightentry. BB = ff_q_pfp_diagonal_tail_actualrightentry * S ((S (pfc_complement_diagonal_tail_actual)) * BC) + (pfc_right_diagonal_tail_actual)))))) \/ (((exists pfc_gap_diagonal_tail_actualrightoutside. pfc_gap_diagonal_tail_actualrightoutside+(t+M)=(pfc_complement_diagonal_tail_actual)) /\ (((pfc_right_diagonal_tail_actual)=0))))) /\ (((z)=pfc_left_diagonal_tail_actual*pfc_right_diagonal_tail_actual)))))))))) - 0090
specialize hnew (S i+j) - 0091
apply hnew - 0092
have hlength : S i+t=S (t+i) - 0093
simp [add_succ_left,add_comm] - 0094
have hbound : exists pfa_gap_diagonal_tail_bound. pfa_gap_diagonal_tail_bound + S (S i+j) = (S i+t) - 0095
specialize matrix_recursive_lt_add_left (j) - 0096
specialize matrix_recursive_lt_add_left (t) - 0097
specialize matrix_recursive_lt_add_left (S i) - 0098
apply matrix_recursive_lt_add_left - 0099
exact hj - 0100
rewrite hlength at hbound - 0101
exact hbound - 0102
cases hv - 0103
cases hv_witness - 0104
have hz : x=0 - 0105
specialize polynomial_diagonal_term_left_padding_zero_right (ab) - 0106
specialize polynomial_diagonal_term_left_padding_zero_right (ac) - 0107
specialize polynomial_diagonal_term_left_padding_zero_right (L) - 0108
specialize polynomial_diagonal_term_left_padding_zero_right (bb) - 0109
specialize polynomial_diagonal_term_left_padding_zero_right (bc) - 0110
specialize polynomial_diagonal_term_left_padding_zero_right (M) - 0111
specialize polynomial_diagonal_term_left_padding_zero_right (BB) - 0112
specialize polynomial_diagonal_term_left_padding_zero_right (BC) - 0113
specialize polynomial_diagonal_term_left_padding_zero_right (t) - 0114
specialize polynomial_diagonal_term_left_padding_zero_right (t+i) - 0115
specialize polynomial_diagonal_term_left_padding_zero_right (S i+j) - 0116
specialize polynomial_diagonal_term_left_padding_zero_right (x) - 0117
apply polynomial_diagonal_term_left_padding_zero_right - 0118
exact hpad - 0119
specialize matrix_recursive_lt_add_left (i) - 0120
specialize matrix_recursive_lt_add_left (S i+j) - 0121
specialize matrix_recursive_lt_add_left (t) - 0122
apply matrix_recursive_lt_add_left - 0123
exists j - 0124
specialize add_comm (j) - 0125
specialize add_comm (S i) - 0126
apply add_comm - 0127
exact hv_witness_right - 0128
rewrite hz at hv_witness_left - 0129
rewrite hz at hv_witness_left - 0130
exact hv_witness_left