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 L. exists t M. ((((L)=(t)+(M)) /\ (((forall pfp_repeat_index_cut_existszero. (exists pfa_gap_cut_existszeroindex. pfa_gap_cut_existszeroindex + S (pfp_repeat_index_cut_existszero) = (t)) -> (((exists ff_h_pfp_cut_existszeroentry. ff_h_pfp_cut_existszeroentry + S (0) = S ((S (pfp_repeat_index_cut_existszero)) * c)) /\ exists ff_q_pfp_cut_existszeroentry. b = ff_q_pfp_cut_existszeroentry * S ((S (pfp_repeat_index_cut_existszero)) * c) + (0)))) /\ (((M)=0 \/ (((~((M)=0)) /\ ((exists pftrim_leading_cut_existshead. ((((exists ff_h_pfp_cut_existsheadentry. ff_h_pfp_cut_existsheadentry + S (pftrim_leading_cut_existshead) = S ((S (t)) * c)) /\ exists ff_q_pfp_cut_existsheadentry. b = ff_q_pfp_cut_existsheadentry * S ((S (t)) * c) + (pftrim_leading_cut_existshead))) /\ ((~(pftrim_leading_cut_existshead=0))))))))))))))Constructive proof overview
Generated structural guide
Finite induction scans actual decoded coefficients: either the entire prefix is zero or the first retained position has an actual nonzero value.
The unchanged tactic script uses 5 declared prerequisites and contains 99 exact native proof lines.
Alpha v34 checked-use · first admitted v32 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
beta_repeat_empty Stable theorem; checked-use authorized beta_at_exists Stable theorem; checked-use authorized eq_decidable Stable theorem; checked-use authorized finite_lt_succ_eq_or_lt Stable theorem; checked-use authorized succ_ne_zero Stable 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–2
02Induction on LL3–3
Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.
- L3
induction L
03Construct an explicit witnessL4–5
04Separate the logical casesL6–6
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L6
split
05Calculate and transport equalitiesL7–7
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L7
simp
06Separate the logical casesL8–8
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L8
split
07Use earlier factsL9–13
08Calculate and transport equalitiesL14–14
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L14
refl
09Separate the logical casesL15–15
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L15
left
10Calculate and transport equalitiesL16–16
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L16
refl
11Establish holdL17–18
12Separate the logical casesL19–23
13Establish hlenL24–28
14Establish hzeroL29–31
Establish this local claim before using it. It is not an additional assumption.
- L29
have hzero : forall pfp_repeat_index_cut_zero_old. (exists pfa_gap_cut_zero_oldindex. pfa_gap_cut_zero_oldindex + S (pfp_repeat_index_cut_zero_old) = (L)) -> (((exists ff_h_pfp_cut_zero_oldentry. ff_h_pfp_cut_zero_oldentry + S (0) = S ((S (pfp_repeat_index_cut_zero_old)) * c)) /\ exists ff_q_pfp_cut_zero_oldentry. b = ff_q_pfp_cut_zero_oldentry * S ((S (pfp_repeat_index_cut_zero_old)) * c) + (0))) - L30
rewrite hlen - L31
exact hold_witness_witness_right_left
15Establish haL32–36
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
16Separate the logical casesL37–37
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L37
cases ha
17Establish hzL38–41
18Separate the logical casesL42–42
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L42
cases hz
19Construct an explicit witnessL43–44
20Separate the logical casesL45–45
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L45
split
21Calculate and transport equalitiesL46–46
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L46
simp
22Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
split
23Fix variables and assumptionsL48–49
24Establish hindexL50–54
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
25Separate the logical casesL55–55
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L55
cases hindex
26Calculate and transport equalitiesL56–59
27Use earlier factsL60–63
28Separate the logical casesL64–64
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L64
left
29Calculate and transport equalitiesL65–65
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L65
refl
30Construct an explicit witnessL66–67
31Separate the logical casesL68–68
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L68
split
32Calculate and transport equalitiesL69–69
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L69
simp
33Separate the logical casesL70–70
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L70
split
34Use earlier factsL71–71
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L71
exact hzero
35Separate the logical casesL72–73
36Fix variables and assumptionsL74–74
Work with arbitrary variables or the premises of the current implication.
- L74
intro hbad
37Use earlier factsL75–77
38Construct an explicit witnessL78–78
Supply the displayed value, then prove that it has the required property.
- L78
exists x2
39Separate the logical casesL79–79
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L79
split
40Use earlier factsL80–81
41Separate the logical casesL82–82
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L82
cases hold_witness_witness_right_right_right
42Construct an explicit witnessL83–84
43Separate the logical casesL85–85
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L85
split
44Calculate and transport equalitiesL86–87
45Use earlier factsL88–88
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L88
exact hold_witness_witness_left
46Calculate and transport equalitiesL89–89
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L89
symm
47Use earlier factsL90–90
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L90
apply PA4
48Separate the logical casesL91–91
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L91
split
49Use earlier factsL92–92
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L92
exact hold_witness_witness_right_left
50Separate the logical casesL93–94
51Fix variables and assumptionsL95–95
Work with arbitrary variables or the premises of the current implication.
- L95
intro hbad
Original exact command ledger · 99 lines
- 0001
intro b - 0002
intro c - 0003
induction L - 0004
exists 0 - 0005
exists 0 - 0006
split - 0007
simp - 0008
split - 0009
specialize beta_repeat_empty (b) - 0010
specialize beta_repeat_empty (c) - 0011
specialize beta_repeat_empty (0) - 0012
specialize beta_repeat_empty (0) - 0013
apply beta_repeat_empty - 0014
refl - 0015
left - 0016
refl - 0017
have hold : exists t M. ((((L)=(t)+(M)) /\ (((forall pfp_repeat_index_cut_previouszero. (exists pfa_gap_cut_previouszeroindex. pfa_gap_cut_previouszeroindex + S (pfp_repeat_index_cut_previouszero) = (t)) -> (((exists ff_h_pfp_cut_previouszeroentry. ff_h_pfp_cut_previouszeroentry + S (0) = S ((S (pfp_repeat_index_cut_previouszero)) * c)) /\ exists ff_q_pfp_cut_previouszeroentry. b = ff_q_pfp_cut_previouszeroentry * S ((S (pfp_repeat_index_cut_previouszero)) * c) + (0)))) /\ (((M)=0 \/ (((~((M)=0)) /\ ((exists pftrim_leading_cut_previoushead. ((((exists ff_h_pfp_cut_previousheadentry. ff_h_pfp_cut_previousheadentry + S (pftrim_leading_cut_previoushead) = S ((S (t)) * c)) /\ exists ff_q_pfp_cut_previousheadentry. b = ff_q_pfp_cut_previousheadentry * S ((S (t)) * c) + (pftrim_leading_cut_previoushead))) /\ ((~(pftrim_leading_cut_previoushead=0)))))))))))))) - 0018
exact IH - 0019
cases hold - 0020
cases hold_witness - 0021
cases hold_witness_witness - 0022
cases hold_witness_witness_right - 0023
cases hold_witness_witness_right_right - 0024
have hlen : L=x - 0025
trans x+x1 - 0026
exact hold_witness_witness_left - 0027
rewrite hold_witness_witness_right_right_left - 0028
simp - 0029
have hzero : forall pfp_repeat_index_cut_zero_old. (exists pfa_gap_cut_zero_oldindex. pfa_gap_cut_zero_oldindex + S (pfp_repeat_index_cut_zero_old) = (L)) -> (((exists ff_h_pfp_cut_zero_oldentry. ff_h_pfp_cut_zero_oldentry + S (0) = S ((S (pfp_repeat_index_cut_zero_old)) * c)) /\ exists ff_q_pfp_cut_zero_oldentry. b = ff_q_pfp_cut_zero_oldentry * S ((S (pfp_repeat_index_cut_zero_old)) * c) + (0))) - 0030
rewrite hlen - 0031
exact hold_witness_witness_right_left - 0032
have ha : exists a. (((exists ff_h_pfp_cut_last. ff_h_pfp_cut_last + S (a) = S ((S (L)) * c)) /\ exists ff_q_pfp_cut_last. b = ff_q_pfp_cut_last * S ((S (L)) * c) + (a))) - 0033
specialize beta_at_exists (b) - 0034
specialize beta_at_exists (c) - 0035
specialize beta_at_exists (L) - 0036
apply beta_at_exists - 0037
cases ha - 0038
have hz : x2=0 \/ ~(x2=0) - 0039
specialize eq_decidable (x2) - 0040
specialize eq_decidable (0) - 0041
apply eq_decidable - 0042
cases hz - 0043
exists S L - 0044
exists 0 - 0045
split - 0046
simp - 0047
split - 0048
intro i - 0049
intro hi - 0050
have hindex : i=L \/ (exists pfa_gap_cut_old_index. pfa_gap_cut_old_index + S (i) = (L)) - 0051
specialize finite_lt_succ_eq_or_lt (L) - 0052
specialize finite_lt_succ_eq_or_lt (i) - 0053
apply finite_lt_succ_eq_or_lt - 0054
exact hi - 0055
cases hindex - 0056
rewrite hindex_left - 0057
rewrite hindex_left - 0058
rewrite hz_left at ha_witness - 0059
rewrite hz_left at ha_witness - 0060
exact ha_witness - 0061
specialize hzero (i) - 0062
apply hzero - 0063
exact hindex_right - 0064
left - 0065
refl - 0066
exists L - 0067
exists 1 - 0068
split - 0069
simp - 0070
split - 0071
exact hzero - 0072
right - 0073
split - 0074
intro hbad - 0075
specialize succ_ne_zero (0) - 0076
apply succ_ne_zero - 0077
exact hbad - 0078
exists x2 - 0079
split - 0080
exact ha_witness - 0081
exact hz_right - 0082
cases hold_witness_witness_right_right_right - 0083
exists x - 0084
exists S x1 - 0085
split - 0086
trans S (x+x1) - 0087
congr - 0088
exact hold_witness_witness_left - 0089
symm - 0090
apply PA4 - 0091
split - 0092
exact hold_witness_witness_right_left - 0093
right - 0094
split - 0095
intro hbad - 0096
specialize succ_ne_zero (x1) - 0097
apply succ_ne_zero - 0098
exact hbad - 0099
exact hold_witness_witness_right_right_right_right