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 ub uc ab ac L i a db dc n. (((exists ff_h_pfp_unit_sum_unit. ff_h_pfp_unit_sum_unit + S (1) = S ((S (0)) * uc)) /\ exists ff_q_pfp_unit_sum_unit. ub = ff_q_pfp_unit_sum_unit * S ((S (0)) * uc) + (1))) -> (exists pfa_gap_unit_sum_index. pfa_gap_unit_sum_index + S (i) = (L)) -> (((exists ff_h_pfp_unit_sum_A. ff_h_pfp_unit_sum_A + S (a) = S ((S (i)) * ac)) /\ exists ff_q_pfp_unit_sum_A. ab = ff_q_pfp_unit_sum_A * S ((S (i)) * ac) + (a))) -> (forall pfc_index_unit_sum_diagonal. (exists pfa_gap_unit_sum_diagonalbound. pfa_gap_unit_sum_diagonalbound + S (pfc_index_unit_sum_diagonal) = (S i)) -> exists pfc_value_unit_sum_diagonal. ((((exists ff_h_pfp_unit_sum_diagonalentry. ff_h_pfp_unit_sum_diagonalentry + S (pfc_value_unit_sum_diagonal) = S ((S (pfc_index_unit_sum_diagonal)) * dc)) /\ exists ff_q_pfp_unit_sum_diagonalentry. db = ff_q_pfp_unit_sum_diagonalentry * S ((S (pfc_index_unit_sum_diagonal)) * dc) + (pfc_value_unit_sum_diagonal))) /\ ((exists pfc_complement_unit_sum_diagonalterm pfc_left_unit_sum_diagonalterm pfc_right_unit_sum_diagonalterm. (((pfc_index_unit_sum_diagonal)+pfc_complement_unit_sum_diagonalterm=(i)) /\ ((((((exists pfa_gap_unit_sum_diagonaltermleftinside. pfa_gap_unit_sum_diagonaltermleftinside + S (pfc_index_unit_sum_diagonal) = (1)) /\ ((((exists ff_h_pfp_unit_sum_diagonaltermleftentry. ff_h_pfp_unit_sum_diagonaltermleftentry + S (pfc_left_unit_sum_diagonalterm) = S ((S (pfc_index_unit_sum_diagonal)) * uc)) /\ exists ff_q_pfp_unit_sum_diagonaltermleftentry. ub = ff_q_pfp_unit_sum_diagonaltermleftentry * S ((S (pfc_index_unit_sum_diagonal)) * uc) + (pfc_left_unit_sum_diagonalterm)))))) \/ (((exists pfc_gap_unit_sum_diagonaltermleftoutside. pfc_gap_unit_sum_diagonaltermleftoutside+(1)=(pfc_index_unit_sum_diagonal)) /\ (((pfc_left_unit_sum_diagonalterm)=0))))) /\ ((((((exists pfa_gap_unit_sum_diagonaltermrightinside. pfa_gap_unit_sum_diagonaltermrightinside + S (pfc_complement_unit_sum_diagonalterm) = (L)) /\ ((((exists ff_h_pfp_unit_sum_diagonaltermrightentry. ff_h_pfp_unit_sum_diagonaltermrightentry + S (pfc_right_unit_sum_diagonalterm) = S ((S (pfc_complement_unit_sum_diagonalterm)) * ac)) /\ exists ff_q_pfp_unit_sum_diagonaltermrightentry. ab = ff_q_pfp_unit_sum_diagonaltermrightentry * S ((S (pfc_complement_unit_sum_diagonalterm)) * ac) + (pfc_right_unit_sum_diagonalterm)))))) \/ (((exists pfc_gap_unit_sum_diagonaltermrightoutside. pfc_gap_unit_sum_diagonaltermrightoutside+(L)=(pfc_complement_unit_sum_diagonalterm)) /\ (((pfc_right_unit_sum_diagonalterm)=0))))) /\ (((pfc_value_unit_sum_diagonal)=pfc_left_unit_sum_diagonalterm*pfc_right_unit_sum_diagonalterm))))))))))) -> (exists fs_u_pfc_unit_sum_actual fs_v_pfc_unit_sum_actual. ((((exists fs_h_pfc_unit_sum_actual_body_start. fs_h_pfc_unit_sum_actual_body_start + S (0) = S ((S (0)) * fs_v_pfc_unit_sum_actual)) /\ exists fs_q_pfc_unit_sum_actual_body_start. fs_u_pfc_unit_sum_actual = fs_q_pfc_unit_sum_actual_body_start * S ((S (0)) * fs_v_pfc_unit_sum_actual) + (0))) /\ ((((exists fs_h_pfc_unit_sum_actual_body_terminal. fs_h_pfc_unit_sum_actual_body_terminal + S (n) = S ((S (S i)) * fs_v_pfc_unit_sum_actual)) /\ exists fs_q_pfc_unit_sum_actual_body_terminal. fs_u_pfc_unit_sum_actual = fs_q_pfc_unit_sum_actual_body_terminal * S ((S (S i)) * fs_v_pfc_unit_sum_actual) + (n))) /\ forall fs_i_pfc_unit_sum_actual_body_steps. (exists fs_lt_pfc_unit_sum_actual_body_steps_bound. fs_lt_pfc_unit_sum_actual_body_steps_bound + S fs_i_pfc_unit_sum_actual_body_steps = S i) -> exists fs_a_pfc_unit_sum_actual_body_steps fs_r_pfc_unit_sum_actual_body_steps fs_s_pfc_unit_sum_actual_body_steps. ((((exists fs_h_pfc_unit_sum_actual_body_steps_summand. fs_h_pfc_unit_sum_actual_body_steps_summand + S (fs_a_pfc_unit_sum_actual_body_steps) = S ((S (fs_i_pfc_unit_sum_actual_body_steps)) * dc)) /\ exists fs_q_pfc_unit_sum_actual_body_steps_summand. db = fs_q_pfc_unit_sum_actual_body_steps_summand * S ((S (fs_i_pfc_unit_sum_actual_body_steps)) * dc) + (fs_a_pfc_unit_sum_actual_body_steps))) /\ ((((exists fs_h_pfc_unit_sum_actual_body_steps_partial. fs_h_pfc_unit_sum_actual_body_steps_partial + S (fs_r_pfc_unit_sum_actual_body_steps) = S ((S (fs_i_pfc_unit_sum_actual_body_steps)) * fs_v_pfc_unit_sum_actual)) /\ exists fs_q_pfc_unit_sum_actual_body_steps_partial. fs_u_pfc_unit_sum_actual = fs_q_pfc_unit_sum_actual_body_steps_partial * S ((S (fs_i_pfc_unit_sum_actual_body_steps)) * fs_v_pfc_unit_sum_actual) + (fs_r_pfc_unit_sum_actual_body_steps))) /\ ((((exists fs_h_pfc_unit_sum_actual_body_steps_successor. fs_h_pfc_unit_sum_actual_body_steps_successor + S (fs_s_pfc_unit_sum_actual_body_steps) = S ((S (S fs_i_pfc_unit_sum_actual_body_steps)) * fs_v_pfc_unit_sum_actual)) /\ exists fs_q_pfc_unit_sum_actual_body_steps_successor. fs_u_pfc_unit_sum_actual = fs_q_pfc_unit_sum_actual_body_steps_successor * S ((S (S fs_i_pfc_unit_sum_actual_body_steps)) * fs_v_pfc_unit_sum_actual) + (fs_s_pfc_unit_sum_actual_body_steps))) /\ fs_s_pfc_unit_sum_actual_body_steps = fs_r_pfc_unit_sum_actual_body_steps + fs_a_pfc_unit_sum_actual_body_steps)))))) -> (n=a)Constructive proof overview
Generated structural guide
An actual unit-left antidiagonal sum equals its first coefficient: construct the one-term sum and use the proved zero-tail invariant on all remaining actual summands.
The unchanged tactic script uses 11 declared prerequisites and contains 135 exact native proof lines.
Alpha v34 checked-use · first admitted v34 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
PG002D polynomial_diagonal_left_unit_first_term PG002E polynomial_diagonal_left_unit_tail_term add_succ_left Alpha theorem; checked-use authorized zero_add Alpha theorem; checked-use authorized succ_le_succ Alpha theorem; checked-use authorized le_add_right Alpha theorem; checked-use authorized beta_sum_exists Alpha theorem; checked-use authorized beta_sum_succ_decompose Alpha theorem; checked-use authorized beta_sum_zero Alpha theorem; checked-use authorized beta_at_unique Alpha theorem; checked-use authorized polynomial_zero_tail_natural_sum_invariant 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–15
03Establish hheadL16–16
Establish this local claim before using it. It is not an additional assumption.
- L16
have hhead : ((exists ff_h_pfp_unit_sum_head. ff_h_pfp_unit_sum_head + S (a) = S ((S (0)) * dc)) /\ exists ff_q_pfp_unit_sum_head. db = ff_q_pfp_unit_sum_head * S ((S (0)) * dc) + (a))
04Establish hvL17–19
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hd.
- L17
have hv : ∃ t. BetaAt(db,dc,0,t) ∧ PolynomialDiagonalTerm(ub,uc,1,ab,ac,L,i,0,t)Definitions: PolynomialDiagonalTermBetaAt - L18
specialize hd (0) - L19
apply hd
05Construct an explicit witnessL20–20
Supply the displayed value, then prove that it has the required property.
- L20
exists i
06Calculate and transport equalitiesL21–21
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L21
simp
07Separate the logical casesL22–23
08Establish heqL24–33
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply polynomial diagonal left unit first term.
- L24
have heq : x=a - L25
specialize polynomial_diagonal_left_unit_first_term (ub) - L26
specialize polynomial_diagonal_left_unit_first_term (uc) - L27
specialize polynomial_diagonal_left_unit_first_term (ab) - L28
specialize polynomial_diagonal_left_unit_first_term (ac) - L29
specialize polynomial_diagonal_left_unit_first_term (L) - L30
specialize polynomial_diagonal_left_unit_first_term (i) - L31
specialize polynomial_diagonal_left_unit_first_term (a) - L32
specialize polynomial_diagonal_left_unit_first_term (x) - L33
apply polynomial_diagonal_left_unit_first_term
09Use earlier factsL34–37
10Calculate and transport equalitiesL38–39
11Use earlier factsL40–40
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L40
exact hv_witness_left
12Establish htailL41–43
Establish this local claim before using it. It is not an additional assumption.
- L41
have htail : forall pfpad_tail_index_unit_sum_tail. (exists pfa_gap_unit_sum_tailbound. pfa_gap_unit_sum_tailbound + S (pfpad_tail_index_unit_sum_tail) = (i)) -> (((exists ff_h_pfp_unit_sum_tailzero. ff_h_pfp_unit_sum_tailzero + S (0) = S ((S ((1)+pfpad_tail_index_unit_sum_tail)) * dc)) /\ exists ff_q_pfp_unit_sum_tailzero. db = ff_q_pfp_unit_sum_tailzero * S ((S ((1)+pfpad_tail_index_unit_sum_tail)) * dc) + (0))) - L42
intro j - L43
intro hj
13Establish hvL44–46
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hd.
- L44
have hv : ∃ t. BetaAt(db,dc,1 + j,t) ∧ PolynomialDiagonalTerm(ub,uc,1,ab,ac,L,i,1 + j,t)Definitions: PolynomialDiagonalTermBetaAt - L45
specialize hd (1+j) - L46
apply hd
14Establish hindexL47–53
15Separate the logical casesL54–55
16Establish heqL56–65
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply polynomial diagonal left unit tail term.
- L56
have heq : x=0 - L57
specialize polynomial_diagonal_left_unit_tail_term (ub) - L58
specialize polynomial_diagonal_left_unit_tail_term (uc) - L59
specialize polynomial_diagonal_left_unit_tail_term (ab) - L60
specialize polynomial_diagonal_left_unit_tail_term (ac) - L61
specialize polynomial_diagonal_left_unit_tail_term (L) - L62
specialize polynomial_diagonal_left_unit_tail_term (i) - L63
specialize polynomial_diagonal_left_unit_tail_term (1+j) - L64
specialize polynomial_diagonal_left_unit_tail_term (x) - L65
apply polynomial_diagonal_left_unit_tail_term
17Use earlier factsL66–69
18Calculate and transport equalitiesL70–71
19Use earlier factsL72–72
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L72
exact hv_witness_left
20Establish hsingleL73–77
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum exists.
21Separate the logical casesL78–78
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L78
cases hsingle
22Establish hdecompL79–85
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
23Separate the logical casesL86–89
24Establish hzeroL90–95
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum zero.
25Establish hentryL96–104
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
26Establish hvalueL105–114
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply zero add.
27Use earlier factsL115–121
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L115
specialize polynomial_zero_tail_natural_sum_invariant (db) - L116
specialize polynomial_zero_tail_natural_sum_invariant (dc) - L117
specialize polynomial_zero_tail_natural_sum_invariant (1) - L118
specialize polynomial_zero_tail_natural_sum_invariant (i) - L119
specialize polynomial_zero_tail_natural_sum_invariant (x) - L120
specialize polynomial_zero_tail_natural_sum_invariant (n) - L121
apply polynomial_zero_tail_natural_sum_invariant
28Fix variables and assumptionsL122–125
29Use earlier factsL126–128
Original exact command ledger · 135 lines
- 0001
intro ub - 0002
intro uc - 0003
intro ab - 0004
intro ac - 0005
intro L - 0006
intro i - 0007
intro a - 0008
intro db - 0009
intro dc - 0010
intro n - 0011
intro hu - 0012
intro hi - 0013
intro ha - 0014
intro hd - 0015
intro hs - 0016
have hhead : ((exists ff_h_pfp_unit_sum_head. ff_h_pfp_unit_sum_head + S (a) = S ((S (0)) * dc)) /\ exists ff_q_pfp_unit_sum_head. db = ff_q_pfp_unit_sum_head * S ((S (0)) * dc) + (a)) - 0017
have hv : exists t. ((((exists ff_h_pfp_unit_sum_first_entry. ff_h_pfp_unit_sum_first_entry + S (t) = S ((S (0)) * dc)) /\ exists ff_q_pfp_unit_sum_first_entry. db = ff_q_pfp_unit_sum_first_entry * S ((S (0)) * dc) + (t))) /\ ((exists pfc_complement_unit_sum_first_term pfc_left_unit_sum_first_term pfc_right_unit_sum_first_term. (((0)+pfc_complement_unit_sum_first_term=(i)) /\ ((((((exists pfa_gap_unit_sum_first_termleftinside. pfa_gap_unit_sum_first_termleftinside + S (0) = (1)) /\ ((((exists ff_h_pfp_unit_sum_first_termleftentry. ff_h_pfp_unit_sum_first_termleftentry + S (pfc_left_unit_sum_first_term) = S ((S (0)) * uc)) /\ exists ff_q_pfp_unit_sum_first_termleftentry. ub = ff_q_pfp_unit_sum_first_termleftentry * S ((S (0)) * uc) + (pfc_left_unit_sum_first_term)))))) \/ (((exists pfc_gap_unit_sum_first_termleftoutside. pfc_gap_unit_sum_first_termleftoutside+(1)=(0)) /\ (((pfc_left_unit_sum_first_term)=0))))) /\ ((((((exists pfa_gap_unit_sum_first_termrightinside. pfa_gap_unit_sum_first_termrightinside + S (pfc_complement_unit_sum_first_term) = (L)) /\ ((((exists ff_h_pfp_unit_sum_first_termrightentry. ff_h_pfp_unit_sum_first_termrightentry + S (pfc_right_unit_sum_first_term) = S ((S (pfc_complement_unit_sum_first_term)) * ac)) /\ exists ff_q_pfp_unit_sum_first_termrightentry. ab = ff_q_pfp_unit_sum_first_termrightentry * S ((S (pfc_complement_unit_sum_first_term)) * ac) + (pfc_right_unit_sum_first_term)))))) \/ (((exists pfc_gap_unit_sum_first_termrightoutside. pfc_gap_unit_sum_first_termrightoutside+(L)=(pfc_complement_unit_sum_first_term)) /\ (((pfc_right_unit_sum_first_term)=0))))) /\ (((t)=pfc_left_unit_sum_first_term*pfc_right_unit_sum_first_term)))))))))) - 0018
specialize hd (0) - 0019
apply hd - 0020
exists i - 0021
simp - 0022
cases hv - 0023
cases hv_witness - 0024
have heq : x=a - 0025
specialize polynomial_diagonal_left_unit_first_term (ub) - 0026
specialize polynomial_diagonal_left_unit_first_term (uc) - 0027
specialize polynomial_diagonal_left_unit_first_term (ab) - 0028
specialize polynomial_diagonal_left_unit_first_term (ac) - 0029
specialize polynomial_diagonal_left_unit_first_term (L) - 0030
specialize polynomial_diagonal_left_unit_first_term (i) - 0031
specialize polynomial_diagonal_left_unit_first_term (a) - 0032
specialize polynomial_diagonal_left_unit_first_term (x) - 0033
apply polynomial_diagonal_left_unit_first_term - 0034
exact hu - 0035
exact hi - 0036
exact ha - 0037
exact hv_witness_right - 0038
rewrite heq at hv_witness_left - 0039
rewrite heq at hv_witness_left - 0040
exact hv_witness_left - 0041
have htail : forall pfpad_tail_index_unit_sum_tail. (exists pfa_gap_unit_sum_tailbound. pfa_gap_unit_sum_tailbound + S (pfpad_tail_index_unit_sum_tail) = (i)) -> (((exists ff_h_pfp_unit_sum_tailzero. ff_h_pfp_unit_sum_tailzero + S (0) = S ((S ((1)+pfpad_tail_index_unit_sum_tail)) * dc)) /\ exists ff_q_pfp_unit_sum_tailzero. db = ff_q_pfp_unit_sum_tailzero * S ((S ((1)+pfpad_tail_index_unit_sum_tail)) * dc) + (0))) - 0042
intro j - 0043
intro hj - 0044
have hv : exists t. ((((exists ff_h_pfp_unit_sum_tail_entry. ff_h_pfp_unit_sum_tail_entry + S (t) = S ((S (1+j)) * dc)) /\ exists ff_q_pfp_unit_sum_tail_entry. db = ff_q_pfp_unit_sum_tail_entry * S ((S (1+j)) * dc) + (t))) /\ ((exists pfc_complement_unit_sum_tail_term pfc_left_unit_sum_tail_term pfc_right_unit_sum_tail_term. (((1+j)+pfc_complement_unit_sum_tail_term=(i)) /\ ((((((exists pfa_gap_unit_sum_tail_termleftinside. pfa_gap_unit_sum_tail_termleftinside + S (1+j) = (1)) /\ ((((exists ff_h_pfp_unit_sum_tail_termleftentry. ff_h_pfp_unit_sum_tail_termleftentry + S (pfc_left_unit_sum_tail_term) = S ((S (1+j)) * uc)) /\ exists ff_q_pfp_unit_sum_tail_termleftentry. ub = ff_q_pfp_unit_sum_tail_termleftentry * S ((S (1+j)) * uc) + (pfc_left_unit_sum_tail_term)))))) \/ (((exists pfc_gap_unit_sum_tail_termleftoutside. pfc_gap_unit_sum_tail_termleftoutside+(1)=(1+j)) /\ (((pfc_left_unit_sum_tail_term)=0))))) /\ ((((((exists pfa_gap_unit_sum_tail_termrightinside. pfa_gap_unit_sum_tail_termrightinside + S (pfc_complement_unit_sum_tail_term) = (L)) /\ ((((exists ff_h_pfp_unit_sum_tail_termrightentry. ff_h_pfp_unit_sum_tail_termrightentry + S (pfc_right_unit_sum_tail_term) = S ((S (pfc_complement_unit_sum_tail_term)) * ac)) /\ exists ff_q_pfp_unit_sum_tail_termrightentry. ab = ff_q_pfp_unit_sum_tail_termrightentry * S ((S (pfc_complement_unit_sum_tail_term)) * ac) + (pfc_right_unit_sum_tail_term)))))) \/ (((exists pfc_gap_unit_sum_tail_termrightoutside. pfc_gap_unit_sum_tail_termrightoutside+(L)=(pfc_complement_unit_sum_tail_term)) /\ (((pfc_right_unit_sum_tail_term)=0))))) /\ (((t)=pfc_left_unit_sum_tail_term*pfc_right_unit_sum_tail_term)))))))))) - 0045
specialize hd (1+j) - 0046
apply hd - 0047
have hindex : 1+j=S j - 0048
simp [add_succ_left,zero_add] - 0049
rewrite hindex - 0050
specialize succ_le_succ (S j) - 0051
specialize succ_le_succ (i) - 0052
apply succ_le_succ - 0053
exact hj - 0054
cases hv - 0055
cases hv_witness - 0056
have heq : x=0 - 0057
specialize polynomial_diagonal_left_unit_tail_term (ub) - 0058
specialize polynomial_diagonal_left_unit_tail_term (uc) - 0059
specialize polynomial_diagonal_left_unit_tail_term (ab) - 0060
specialize polynomial_diagonal_left_unit_tail_term (ac) - 0061
specialize polynomial_diagonal_left_unit_tail_term (L) - 0062
specialize polynomial_diagonal_left_unit_tail_term (i) - 0063
specialize polynomial_diagonal_left_unit_tail_term (1+j) - 0064
specialize polynomial_diagonal_left_unit_tail_term (x) - 0065
apply polynomial_diagonal_left_unit_tail_term - 0066
specialize le_add_right (1) - 0067
specialize le_add_right (j) - 0068
apply le_add_right - 0069
exact hv_witness_right - 0070
rewrite heq at hv_witness_left - 0071
rewrite heq at hv_witness_left - 0072
exact hv_witness_left - 0073
have hsingle : exists m. (exists fs_u_pfc_unit_single_sum fs_v_pfc_unit_single_sum. ((((exists fs_h_pfc_unit_single_sum_body_start. fs_h_pfc_unit_single_sum_body_start + S (0) = S ((S (0)) * fs_v_pfc_unit_single_sum)) /\ exists fs_q_pfc_unit_single_sum_body_start. fs_u_pfc_unit_single_sum = fs_q_pfc_unit_single_sum_body_start * S ((S (0)) * fs_v_pfc_unit_single_sum) + (0))) /\ ((((exists fs_h_pfc_unit_single_sum_body_terminal. fs_h_pfc_unit_single_sum_body_terminal + S (m) = S ((S (1)) * fs_v_pfc_unit_single_sum)) /\ exists fs_q_pfc_unit_single_sum_body_terminal. fs_u_pfc_unit_single_sum = fs_q_pfc_unit_single_sum_body_terminal * S ((S (1)) * fs_v_pfc_unit_single_sum) + (m))) /\ forall fs_i_pfc_unit_single_sum_body_steps. (exists fs_lt_pfc_unit_single_sum_body_steps_bound. fs_lt_pfc_unit_single_sum_body_steps_bound + S fs_i_pfc_unit_single_sum_body_steps = 1) -> exists fs_a_pfc_unit_single_sum_body_steps fs_r_pfc_unit_single_sum_body_steps fs_s_pfc_unit_single_sum_body_steps. ((((exists fs_h_pfc_unit_single_sum_body_steps_summand. fs_h_pfc_unit_single_sum_body_steps_summand + S (fs_a_pfc_unit_single_sum_body_steps) = S ((S (fs_i_pfc_unit_single_sum_body_steps)) * dc)) /\ exists fs_q_pfc_unit_single_sum_body_steps_summand. db = fs_q_pfc_unit_single_sum_body_steps_summand * S ((S (fs_i_pfc_unit_single_sum_body_steps)) * dc) + (fs_a_pfc_unit_single_sum_body_steps))) /\ ((((exists fs_h_pfc_unit_single_sum_body_steps_partial. fs_h_pfc_unit_single_sum_body_steps_partial + S (fs_r_pfc_unit_single_sum_body_steps) = S ((S (fs_i_pfc_unit_single_sum_body_steps)) * fs_v_pfc_unit_single_sum)) /\ exists fs_q_pfc_unit_single_sum_body_steps_partial. fs_u_pfc_unit_single_sum = fs_q_pfc_unit_single_sum_body_steps_partial * S ((S (fs_i_pfc_unit_single_sum_body_steps)) * fs_v_pfc_unit_single_sum) + (fs_r_pfc_unit_single_sum_body_steps))) /\ ((((exists fs_h_pfc_unit_single_sum_body_steps_successor. fs_h_pfc_unit_single_sum_body_steps_successor + S (fs_s_pfc_unit_single_sum_body_steps) = S ((S (S fs_i_pfc_unit_single_sum_body_steps)) * fs_v_pfc_unit_single_sum)) /\ exists fs_q_pfc_unit_single_sum_body_steps_successor. fs_u_pfc_unit_single_sum = fs_q_pfc_unit_single_sum_body_steps_successor * S ((S (S fs_i_pfc_unit_single_sum_body_steps)) * fs_v_pfc_unit_single_sum) + (fs_s_pfc_unit_single_sum_body_steps))) /\ fs_s_pfc_unit_single_sum_body_steps = fs_r_pfc_unit_single_sum_body_steps + fs_a_pfc_unit_single_sum_body_steps)))))) - 0074
specialize beta_sum_exists (db) - 0075
specialize beta_sum_exists (dc) - 0076
specialize beta_sum_exists (1) - 0077
apply beta_sum_exists - 0078
cases hsingle - 0079
have hdecomp : exists t s. ((((exists ff_h_pfp_unit_single_entry. ff_h_pfp_unit_single_entry + S (t) = S ((S (0)) * dc)) /\ exists ff_q_pfp_unit_single_entry. db = ff_q_pfp_unit_single_entry * S ((S (0)) * dc) + (t))) /\ (((exists fs_u_pfc_unit_single_empty fs_v_pfc_unit_single_empty. ((((exists fs_h_pfc_unit_single_empty_body_start. fs_h_pfc_unit_single_empty_body_start + S (0) = S ((S (0)) * fs_v_pfc_unit_single_empty)) /\ exists fs_q_pfc_unit_single_empty_body_start. fs_u_pfc_unit_single_empty = fs_q_pfc_unit_single_empty_body_start * S ((S (0)) * fs_v_pfc_unit_single_empty) + (0))) /\ ((((exists fs_h_pfc_unit_single_empty_body_terminal. fs_h_pfc_unit_single_empty_body_terminal + S (s) = S ((S (0)) * fs_v_pfc_unit_single_empty)) /\ exists fs_q_pfc_unit_single_empty_body_terminal. fs_u_pfc_unit_single_empty = fs_q_pfc_unit_single_empty_body_terminal * S ((S (0)) * fs_v_pfc_unit_single_empty) + (s))) /\ forall fs_i_pfc_unit_single_empty_body_steps. (exists fs_lt_pfc_unit_single_empty_body_steps_bound. fs_lt_pfc_unit_single_empty_body_steps_bound + S fs_i_pfc_unit_single_empty_body_steps = 0) -> exists fs_a_pfc_unit_single_empty_body_steps fs_r_pfc_unit_single_empty_body_steps fs_s_pfc_unit_single_empty_body_steps. ((((exists fs_h_pfc_unit_single_empty_body_steps_summand. fs_h_pfc_unit_single_empty_body_steps_summand + S (fs_a_pfc_unit_single_empty_body_steps) = S ((S (fs_i_pfc_unit_single_empty_body_steps)) * dc)) /\ exists fs_q_pfc_unit_single_empty_body_steps_summand. db = fs_q_pfc_unit_single_empty_body_steps_summand * S ((S (fs_i_pfc_unit_single_empty_body_steps)) * dc) + (fs_a_pfc_unit_single_empty_body_steps))) /\ ((((exists fs_h_pfc_unit_single_empty_body_steps_partial. fs_h_pfc_unit_single_empty_body_steps_partial + S (fs_r_pfc_unit_single_empty_body_steps) = S ((S (fs_i_pfc_unit_single_empty_body_steps)) * fs_v_pfc_unit_single_empty)) /\ exists fs_q_pfc_unit_single_empty_body_steps_partial. fs_u_pfc_unit_single_empty = fs_q_pfc_unit_single_empty_body_steps_partial * S ((S (fs_i_pfc_unit_single_empty_body_steps)) * fs_v_pfc_unit_single_empty) + (fs_r_pfc_unit_single_empty_body_steps))) /\ ((((exists fs_h_pfc_unit_single_empty_body_steps_successor. fs_h_pfc_unit_single_empty_body_steps_successor + S (fs_s_pfc_unit_single_empty_body_steps) = S ((S (S fs_i_pfc_unit_single_empty_body_steps)) * fs_v_pfc_unit_single_empty)) /\ exists fs_q_pfc_unit_single_empty_body_steps_successor. fs_u_pfc_unit_single_empty = fs_q_pfc_unit_single_empty_body_steps_successor * S ((S (S fs_i_pfc_unit_single_empty_body_steps)) * fs_v_pfc_unit_single_empty) + (fs_s_pfc_unit_single_empty_body_steps))) /\ fs_s_pfc_unit_single_empty_body_steps = fs_r_pfc_unit_single_empty_body_steps + fs_a_pfc_unit_single_empty_body_steps)))))) /\ ((x=s+t))))) - 0080
specialize beta_sum_succ_decompose (db) - 0081
specialize beta_sum_succ_decompose (dc) - 0082
specialize beta_sum_succ_decompose (0) - 0083
specialize beta_sum_succ_decompose (x) - 0084
apply beta_sum_succ_decompose - 0085
exact hsingle_witness - 0086
cases hdecomp - 0087
cases hdecomp_witness - 0088
cases hdecomp_witness_witness - 0089
cases hdecomp_witness_witness_right - 0090
have hzero : x2=0 - 0091
specialize beta_sum_zero (db) - 0092
specialize beta_sum_zero (dc) - 0093
specialize beta_sum_zero (x2) - 0094
apply beta_sum_zero - 0095
exact hdecomp_witness_witness_right_left - 0096
have hentry : x1=a - 0097
specialize beta_at_unique (db) - 0098
specialize beta_at_unique (dc) - 0099
specialize beta_at_unique (0) - 0100
specialize beta_at_unique (x1) - 0101
specialize beta_at_unique (a) - 0102
apply beta_at_unique - 0103
exact hdecomp_witness_witness_left - 0104
exact hhead - 0105
have hvalue : x=a - 0106
trans x2+x1 - 0107
exact hdecomp_witness_witness_right_right - 0108
rewrite hzero - 0109
trans x1 - 0110
apply zero_add - 0111
exact hentry - 0112
trans x - 0113
specialize polynomial_zero_tail_natural_sum_invariant (db) - 0114
specialize polynomial_zero_tail_natural_sum_invariant (dc) - 0115
specialize polynomial_zero_tail_natural_sum_invariant (db) - 0116
specialize polynomial_zero_tail_natural_sum_invariant (dc) - 0117
specialize polynomial_zero_tail_natural_sum_invariant (1) - 0118
specialize polynomial_zero_tail_natural_sum_invariant (i) - 0119
specialize polynomial_zero_tail_natural_sum_invariant (x) - 0120
specialize polynomial_zero_tail_natural_sum_invariant (n) - 0121
apply polynomial_zero_tail_natural_sum_invariant - 0122
intro k - 0123
intro v - 0124
intro hk - 0125
intro hv - 0126
exact hv - 0127
exact htail - 0128
exact hsingle_witness - 0129
have hlength : 1+i=S i - 0130
simp [add_succ_left,zero_add] - 0131
rewrite hlength - 0132
rewrite hlength - 0133
rewrite hlength - 0134
exact hs - 0135
exact hvalue