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 b c t L. exists d e. (((forall pfp_repeat_index_left_pad_existszeros. (exists pfa_gap_left_pad_existszerosindex. pfa_gap_left_pad_existszerosindex + S (pfp_repeat_index_left_pad_existszeros) = (t)) -> (((exists ff_h_pfp_left_pad_existszerosentry. ff_h_pfp_left_pad_existszerosentry + S (0) = S ((S (pfp_repeat_index_left_pad_existszeros)) * e)) /\ exists ff_q_pfp_left_pad_existszerosentry. d = ff_q_pfp_left_pad_existszerosentry * S ((S (pfp_repeat_index_left_pad_existszeros)) * e) + (0)))) /\ ((forall pfrep_index_left_pad_exists pfrep_value_left_pad_exists. (exists pfa_gap_left_pad_existsbound. pfa_gap_left_pad_existsbound + S (pfrep_index_left_pad_exists) = (L)) -> (((exists ff_h_pfp_left_pad_existsinput. ff_h_pfp_left_pad_existsinput + S (pfrep_value_left_pad_exists) = S ((S (pfrep_index_left_pad_exists)) * c)) /\ exists ff_q_pfp_left_pad_existsinput. b = ff_q_pfp_left_pad_existsinput * S ((S (pfrep_index_left_pad_exists)) * c) + (pfrep_value_left_pad_exists))) -> (((exists ff_h_pfp_left_pad_existsoutput. ff_h_pfp_left_pad_existsoutput + S (pfrep_value_left_pad_exists) = S ((S ((t)+pfrep_index_left_pad_exists)) * e)) /\ exists ff_q_pfp_left_pad_existsoutput. d = ff_q_pfp_left_pad_existsoutput * S ((S ((t)+pfrep_index_left_pad_exists)) * e) + (pfrep_value_left_pad_exists)))))))Constructive proof overview
Generated structural guide
Finite induction genuinely constructs the zero block and appends every actual input coefficient, including empty input and arbitrary encodings.
The unchanged tactic script uses 9 declared prerequisites and contains 100 exact native proof lines.
Alpha v34 checked-use · first admitted v33 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
beta_repeat_exists Alpha theorem; checked-use authorized matrix_rank_no_index_below_zero Alpha theorem; checked-use authorized beta_at_exists Alpha theorem; checked-use authorized beta_prefix_extend Alpha theorem; checked-use authorized lt_of_lt_of_le Alpha theorem; checked-use authorized le_add_right Alpha theorem; checked-use authorized finite_lt_succ_eq_or_lt Alpha theorem; checked-use authorized beta_at_unique 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.
01Fix variables and assumptionsL1–3
02Induction on LL4–4
Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.
- L4
induction L
03Establish hzL5–8
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta repeat exists.
- L5
have hz : exists d e. (forall pfp_repeat_index_left_pad_empty_zeros. (exists pfa_gap_left_pad_empty_zerosindex. pfa_gap_left_pad_empty_zerosindex + S (pfp_repeat_index_left_pad_empty_zeros) = (t)) -> (((exists ff_h_pfp_left_pad_empty_zerosentry. ff_h_pfp_left_pad_empty_zerosentry + S (0) = S ((S (pfp_repeat_index_left_pad_empty_zeros)) * e)) /\ exists ff_q_pfp_left_pad_empty_zerosentry. d = ff_q_pfp_left_pad_empty_zerosentry * S ((S (pfp_repeat_index_left_pad_empty_zeros)) * e) + (0)))) - L6
specialize beta_repeat_exists (0) - L7
specialize beta_repeat_exists (t) - L8
apply beta_repeat_exists
04Separate the logical casesL9–10
05Construct an explicit witnessL11–12
06Separate the logical casesL13–13
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L13
split
07Use earlier factsL14–14
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L14
exact hz_witness_witness
08Fix variables and assumptionsL15–18
09Separate the logical casesL19–19
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L19
exfalso
10Use earlier factsL20–22
11Establish holdL23–24
Establish this local claim before using it. It is not an additional assumption.
- L23
have hold : ∃ d. ∃ e. PolynomialLeftPad(b,c,L,t,d,e)Definitions: PolynomialLeftPad - L24
exact IH
12Separate the logical casesL25–27
13Establish haL28–32
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L28
have ha : exists a. (((exists ff_h_pfp_left_pad_next_source. ff_h_pfp_left_pad_next_source + S (a) = S ((S (L)) * c)) /\ exists ff_q_pfp_left_pad_next_source. b = ff_q_pfp_left_pad_next_source * S ((S (L)) * c) + (a))) - L29
specialize beta_at_exists (b) - L30
specialize beta_at_exists (c) - L31
specialize beta_at_exists (L) - L32
apply beta_at_exists
14Separate the logical casesL33–33
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L33
cases ha
15Establish hnL34–39
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta prefix extend.
16Separate the logical casesL40–42
17Construct an explicit witnessL43–44
18Separate the logical casesL45–45
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L45
split
19Fix variables and assumptionsL46–47
20Use earlier factsL48–57
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L48
specialize hn_witness_witness_right (i) - L49
specialize hn_witness_witness_right (0) - L50
apply hn_witness_witness_right - L51
specialize lt_of_lt_of_le (i) - L52
specialize lt_of_lt_of_le (t) - L53
specialize lt_of_lt_of_le (t+L) - L54
apply lt_of_lt_of_le - L55
exact hi - L56
specialize le_add_right (t) - L57
specialize le_add_right (L)
21Use earlier factsL58–61
22Fix variables and assumptionsL62–65
23Establish hoL66–70
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
24Separate the logical casesL71–71
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L71
cases ho
25Calculate and transport equalitiesL72–73
26Establish heqL74–83
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
27Use earlier factsL84–84
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L84
exact ha_witness
28Calculate and transport equalitiesL85–86
29Use earlier factsL87–96
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L87
exact hn_witness_witness_left - L88
specialize hn_witness_witness_right (t+i) - L89
specialize hn_witness_witness_right (a) - L90
apply hn_witness_witness_right - L91
specialize matrix_recursive_lt_add_left (i) - L92
specialize matrix_recursive_lt_add_left (L) - L93
specialize matrix_recursive_lt_add_left (t) - L94
apply matrix_recursive_lt_add_left - L95
exact ho_right - L96
specialize hold_witness_witness_right (i)
Original exact command ledger · 100 lines
- 0001
intro b - 0002
intro c - 0003
intro t - 0004
induction L - 0005
have hz : exists d e. (forall pfp_repeat_index_left_pad_empty_zeros. (exists pfa_gap_left_pad_empty_zerosindex. pfa_gap_left_pad_empty_zerosindex + S (pfp_repeat_index_left_pad_empty_zeros) = (t)) -> (((exists ff_h_pfp_left_pad_empty_zerosentry. ff_h_pfp_left_pad_empty_zerosentry + S (0) = S ((S (pfp_repeat_index_left_pad_empty_zeros)) * e)) /\ exists ff_q_pfp_left_pad_empty_zerosentry. d = ff_q_pfp_left_pad_empty_zerosentry * S ((S (pfp_repeat_index_left_pad_empty_zeros)) * e) + (0)))) - 0006
specialize beta_repeat_exists (0) - 0007
specialize beta_repeat_exists (t) - 0008
apply beta_repeat_exists - 0009
cases hz - 0010
cases hz_witness - 0011
exists x - 0012
exists x1 - 0013
split - 0014
exact hz_witness_witness - 0015
intro i - 0016
intro a - 0017
intro hi - 0018
intro ha - 0019
exfalso - 0020
specialize matrix_rank_no_index_below_zero (i) - 0021
apply matrix_rank_no_index_below_zero - 0022
exact hi - 0023
have hold : exists d e. (((forall pfp_repeat_index_left_pad_previouszeros. (exists pfa_gap_left_pad_previouszerosindex. pfa_gap_left_pad_previouszerosindex + S (pfp_repeat_index_left_pad_previouszeros) = (t)) -> (((exists ff_h_pfp_left_pad_previouszerosentry. ff_h_pfp_left_pad_previouszerosentry + S (0) = S ((S (pfp_repeat_index_left_pad_previouszeros)) * e)) /\ exists ff_q_pfp_left_pad_previouszerosentry. d = ff_q_pfp_left_pad_previouszerosentry * S ((S (pfp_repeat_index_left_pad_previouszeros)) * e) + (0)))) /\ ((forall pfrep_index_left_pad_previous pfrep_value_left_pad_previous. (exists pfa_gap_left_pad_previousbound. pfa_gap_left_pad_previousbound + S (pfrep_index_left_pad_previous) = (L)) -> (((exists ff_h_pfp_left_pad_previousinput. ff_h_pfp_left_pad_previousinput + S (pfrep_value_left_pad_previous) = S ((S (pfrep_index_left_pad_previous)) * c)) /\ exists ff_q_pfp_left_pad_previousinput. b = ff_q_pfp_left_pad_previousinput * S ((S (pfrep_index_left_pad_previous)) * c) + (pfrep_value_left_pad_previous))) -> (((exists ff_h_pfp_left_pad_previousoutput. ff_h_pfp_left_pad_previousoutput + S (pfrep_value_left_pad_previous) = S ((S ((t)+pfrep_index_left_pad_previous)) * e)) /\ exists ff_q_pfp_left_pad_previousoutput. d = ff_q_pfp_left_pad_previousoutput * S ((S ((t)+pfrep_index_left_pad_previous)) * e) + (pfrep_value_left_pad_previous))))))) - 0024
exact IH - 0025
cases hold - 0026
cases hold_witness - 0027
cases hold_witness_witness - 0028
have ha : exists a. (((exists ff_h_pfp_left_pad_next_source. ff_h_pfp_left_pad_next_source + S (a) = S ((S (L)) * c)) /\ exists ff_q_pfp_left_pad_next_source. b = ff_q_pfp_left_pad_next_source * S ((S (L)) * c) + (a))) - 0029
specialize beta_at_exists (b) - 0030
specialize beta_at_exists (c) - 0031
specialize beta_at_exists (L) - 0032
apply beta_at_exists - 0033
cases ha - 0034
have hn : exists d e. (((((exists ff_h_pfp_left_pad_next_entry. ff_h_pfp_left_pad_next_entry + S (x2) = S ((S (t+L)) * e)) /\ exists ff_q_pfp_left_pad_next_entry. d = ff_q_pfp_left_pad_next_entry * S ((S (t+L)) * e) + (x2))) /\ ((forall mdr_i_pfp_left_pad_preserved mdr_a_pfp_left_pad_preserved. (exists mdr_gap_pfp_left_pad_preservedb. mdr_gap_pfp_left_pad_preservedb + S (mdr_i_pfp_left_pad_preserved) = (t+L)) -> (((exists ff_h_mdr_pfp_left_pad_preservedo. ff_h_mdr_pfp_left_pad_preservedo + S (mdr_a_pfp_left_pad_preserved) = S ((S (mdr_i_pfp_left_pad_preserved)) * x1)) /\ exists ff_q_mdr_pfp_left_pad_preservedo. x = ff_q_mdr_pfp_left_pad_preservedo * S ((S (mdr_i_pfp_left_pad_preserved)) * x1) + (mdr_a_pfp_left_pad_preserved))) -> (((exists ff_h_mdr_pfp_left_pad_preservedn. ff_h_mdr_pfp_left_pad_preservedn + S (mdr_a_pfp_left_pad_preserved) = S ((S (mdr_i_pfp_left_pad_preserved)) * e)) /\ exists ff_q_mdr_pfp_left_pad_preservedn. d = ff_q_mdr_pfp_left_pad_preservedn * S ((S (mdr_i_pfp_left_pad_preserved)) * e) + (mdr_a_pfp_left_pad_preserved))))))) - 0035
specialize beta_prefix_extend (t+L) - 0036
specialize beta_prefix_extend (x) - 0037
specialize beta_prefix_extend (x1) - 0038
specialize beta_prefix_extend (x2) - 0039
apply beta_prefix_extend - 0040
cases hn - 0041
cases hn_witness - 0042
cases hn_witness_witness - 0043
exists x3 - 0044
exists x4 - 0045
split - 0046
intro i - 0047
intro hi - 0048
specialize hn_witness_witness_right (i) - 0049
specialize hn_witness_witness_right (0) - 0050
apply hn_witness_witness_right - 0051
specialize lt_of_lt_of_le (i) - 0052
specialize lt_of_lt_of_le (t) - 0053
specialize lt_of_lt_of_le (t+L) - 0054
apply lt_of_lt_of_le - 0055
exact hi - 0056
specialize le_add_right (t) - 0057
specialize le_add_right (L) - 0058
apply le_add_right - 0059
specialize hold_witness_witness_left (i) - 0060
apply hold_witness_witness_left - 0061
exact hi - 0062
intro i - 0063
intro a - 0064
intro hi - 0065
intro ha0 - 0066
have ho : i=L \/ (exists pfa_gap_left_pad_old_index. pfa_gap_left_pad_old_index + S (i) = (L)) - 0067
specialize finite_lt_succ_eq_or_lt (L) - 0068
specialize finite_lt_succ_eq_or_lt (i) - 0069
apply finite_lt_succ_eq_or_lt - 0070
exact hi - 0071
cases ho - 0072
rewrite ho_left - 0073
rewrite ho_left - 0074
have heq : a=x2 - 0075
specialize beta_at_unique (b) - 0076
specialize beta_at_unique (c) - 0077
specialize beta_at_unique (L) - 0078
specialize beta_at_unique (a) - 0079
specialize beta_at_unique (x2) - 0080
apply beta_at_unique - 0081
rewrite ho_left at ha0 - 0082
rewrite ho_left at ha0 - 0083
exact ha0 - 0084
exact ha_witness - 0085
rewrite heq - 0086
rewrite heq - 0087
exact hn_witness_witness_left - 0088
specialize hn_witness_witness_right (t+i) - 0089
specialize hn_witness_witness_right (a) - 0090
apply hn_witness_witness_right - 0091
specialize matrix_recursive_lt_add_left (i) - 0092
specialize matrix_recursive_lt_add_left (L) - 0093
specialize matrix_recursive_lt_add_left (t) - 0094
apply matrix_recursive_lt_add_left - 0095
exact ho_right - 0096
specialize hold_witness_witness_right (i) - 0097
specialize hold_witness_witness_right (a) - 0098
apply hold_witness_witness_right - 0099
exact ho_right - 0100
exact ha0