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 original first-admission records.
Exact expanded first-order arithmetic statement
forall a n. (exists pen_least_scan. ((~(pen_least_scan = 1) /\ forall bpr_left_pc_pen_scan_found_prime bpr_right_pc_pen_scan_found_prime. pen_least_scan = bpr_left_pc_pen_scan_found_prime * bpr_right_pc_pen_scan_found_prime -> bpr_left_pc_pen_scan_found_prime = 1 \/ bpr_right_pc_pen_scan_found_prime = 1)) /\ ((exists pc_lt_pen_scan_found_greater. pc_lt_pen_scan_found_greater + S (a) = (pen_least_scan)) /\ forall pen_comparison_scan_found. ((~(pen_comparison_scan_found = 1) /\ forall bpr_left_pc_pen_scan_found_comparison bpr_right_pc_pen_scan_found_comparison. pen_comparison_scan_found = bpr_left_pc_pen_scan_found_comparison * bpr_right_pc_pen_scan_found_comparison -> bpr_left_pc_pen_scan_found_comparison = 1 \/ bpr_right_pc_pen_scan_found_comparison = 1)) -> (exists pc_lt_pen_scan_found_above. pc_lt_pen_scan_found_above + S (a) = (pen_comparison_scan_found)) -> (exists pc_le_pen_scan_found_minimal. pc_le_pen_scan_found_minimal + (pen_least_scan) = (pen_comparison_scan_found)))) \/ (forall pen_unseen_scan. ((~(pen_unseen_scan = 1) /\ forall bpr_left_pc_pen_scan_prime bpr_right_pc_pen_scan_prime. pen_unseen_scan = bpr_left_pc_pen_scan_prime * bpr_right_pc_pen_scan_prime -> bpr_left_pc_pen_scan_prime = 1 \/ bpr_right_pc_pen_scan_prime = 1)) -> (exists pc_lt_pen_scan_above. pc_lt_pen_scan_above + S (a) = (pen_unseen_scan)) -> (exists pc_lt_pen_scan_unseen. pc_lt_pen_scan_unseen + S (a + n) = (pen_unseen_scan)))Constructive proof overview
Generated structural guide
Finite decidable scanning either finds the actual least prime above a or proves every such prime exceeds the scanned interval.
The unchanged tactic script uses 3 declared prerequisites and contains 57 exact native proof lines.
Alpha v34 checked-use · first admitted v28 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
prime_decidable Stable theorem; checked-use authorized add_comm Stable theorem; checked-use authorized le_eq_or_lt 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–1
Work with arbitrary variables or the premises of the current implication.
- L1
intro a
02Induction on nL2–2
Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.
- L2
induction n
03Separate the logical casesL3–3
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L3
right
04Fix variables and assumptionsL4–6
05Establish hzL7–10
06Separate the logical casesL11–12
07Use earlier factsL13–13
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L13
exact IH_left
08Establish hdecL14–16
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime decidable.
- L14
have hdec : ((~(S (a + n) = 1) /\ forall bpr_left_pc_pen_scan_candidate bpr_right_pc_pen_scan_candidate. S (a + n) = bpr_left_pc_pen_scan_candidate * bpr_right_pc_pen_scan_candidate -> bpr_left_pc_pen_scan_candidate = 1 \/ bpr_right_pc_pen_scan_candidate = 1)) \/ ~((~(S (a + n) = 1) /\ forall bpr_left_pc_pen_scan_candidate_not bpr_right_pc_pen_scan_candidate_not. S (a + n) = bpr_left_pc_pen_scan_candidate_not * bpr_right_pc_pen_scan_candidate_not -> bpr_left_pc_pen_scan_candidate_not = 1 \/ bpr_right_pc_pen_scan_candidate_not = 1)) - L15
specialize prime_decidable (S (a + n)) - L16
apply prime_decidable
09Separate the logical casesL17–18
10Construct an explicit witnessL19–19
Supply the displayed value, then prove that it has the required property.
- L19
exists S (a + n)
11Separate the logical casesL20–20
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L20
split
12Use earlier factsL21–21
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L21
exact hdec_left
13Separate the logical casesL22–22
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L22
split
14Construct an explicit witnessL23–23
Supply the displayed value, then prove that it has the required property.
- L23
exists n
15Calculate and transport equalitiesL24–25
16Use earlier factsL26–26
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L26
apply add_comm
17Fix variables and assumptionsL27–29
18Use earlier factsL30–33
19Separate the logical casesL34–34
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L34
right
20Fix variables and assumptionsL35–37
21Establish hprevL38–42
22Establish hcaseL43–47
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le eq or lt.
23Separate the logical casesL48–49
24Use earlier factsL50–50
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L50
apply hdec_right
25Calculate and transport equalitiesL51–52
26Use earlier factsL53–53
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L53
exact hp
Original exact command ledger · 57 lines
- 0001
intro a - 0002
induction n - 0003
right - 0004
intro q - 0005
intro hp - 0006
intro ha - 0007
have hz : a + 0 = a - 0008
apply PA3 - 0009
rewrite hz - 0010
exact ha - 0011
cases IH - 0012
left - 0013
exact IH_left - 0014
have hdec : ((~(S (a + n) = 1) /\ forall bpr_left_pc_pen_scan_candidate bpr_right_pc_pen_scan_candidate. S (a + n) = bpr_left_pc_pen_scan_candidate * bpr_right_pc_pen_scan_candidate -> bpr_left_pc_pen_scan_candidate = 1 \/ bpr_right_pc_pen_scan_candidate = 1)) \/ ~((~(S (a + n) = 1) /\ forall bpr_left_pc_pen_scan_candidate_not bpr_right_pc_pen_scan_candidate_not. S (a + n) = bpr_left_pc_pen_scan_candidate_not * bpr_right_pc_pen_scan_candidate_not -> bpr_left_pc_pen_scan_candidate_not = 1 \/ bpr_right_pc_pen_scan_candidate_not = 1)) - 0015
specialize prime_decidable (S (a + n)) - 0016
apply prime_decidable - 0017
cases hdec - 0018
left - 0019
exists S (a + n) - 0020
split - 0021
exact hdec_left - 0022
split - 0023
exists n - 0024
rewrite PA4 - 0025
congr - 0026
apply add_comm - 0027
intro q - 0028
intro hp - 0029
intro ha - 0030
specialize IH_right q - 0031
apply IH_right - 0032
exact hp - 0033
exact ha - 0034
right - 0035
intro q - 0036
intro hp - 0037
intro ha - 0038
have hprev : exists pc_le_pen_scan_previous. pc_le_pen_scan_previous + (S (a + n)) = (q) - 0039
specialize IH_right q - 0040
apply IH_right - 0041
exact hp - 0042
exact ha - 0043
have hcase : S (a + n) = q \/ (exists pc_lt_pen_scan_later. pc_lt_pen_scan_later + S (S (a + n)) = (q)) - 0044
specialize le_eq_or_lt (S (a + n)) - 0045
specialize le_eq_or_lt q - 0046
apply le_eq_or_lt - 0047
exact hprev - 0048
cases hcase - 0049
exfalso - 0050
apply hdec_right - 0051
rewrite hcase_left - 0052
rewrite hcase_left - 0053
exact hp - 0054
have hsucc : a + S n = S (a + n) - 0055
apply PA4 - 0056
rewrite hsucc - 0057
exact hcase_right