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 n p d. (~((p) = 1) /\ forall pvs_left_divisor_total_prime pvs_right_divisor_total_prime. (p) = pvs_left_divisor_total_prime * pvs_right_divisor_total_prime -> pvs_left_divisor_total_prime = 1 \/ pvs_right_divisor_total_prime = 1) -> exists e. ((((~((d)=0)) /\ (((exists pvs_factor_divisor_total_resultdivisor. (n) = (d) * pvs_factor_divisor_total_resultdivisor) /\ ((((~(exists pvs_factor_divisor_total_resulttogglefresh_input. (d) = (p) * pvs_factor_divisor_total_resulttogglefresh_input)) /\ ((e)=(p)*(d)))) \/ (((((d)=(p)*(e)) /\ (~(exists pvs_factor_divisor_total_resulttogglefresh_output. (e) = (p) * pvs_factor_divisor_total_resulttogglefresh_output)))) \/ (((exists pvs_factor_divisor_total_resulttogglesquare. (d) = ((p)*(p)) * pvs_factor_divisor_total_resulttogglesquare) /\ ((e)=(d)))))))))) \/ ((((d)=0 \/ ~(exists pvs_factor_divisor_total_resultnondivisor. (n) = (d) * pvs_factor_divisor_total_resultnondivisor)) /\ ((e)=(d)))))Constructive proof overview
Generated structural guide
Decide positive-divisor membership and construct the raw toggle there, using identity at zero and nondivisors.
The unchanged tactic script uses 4 declared prerequisites and contains 44 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
eq_decidable Stable theorem; checked-use authorized multiple_decidable_nonzero Stable theorem; checked-use authorized MC0003 prime_factor_toggle_exists prime_nonzero 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.
Named ingredients (1)
01Fix variables and assumptionsL1–4
02Establish hzL5–8
03Separate the logical casesL9–9
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L9
cases hz
04Construct an explicit witnessL10–10
Supply the displayed value, then prove that it has the required property.
- L10
exists d
05Separate the logical casesL11–13
06Use earlier factsL14–14
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L14
exact hz_left
07Calculate and transport equalitiesL15–15
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L15
refl
08Establish hdL16–20
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply multiple decidable nonzero.
- L16
have hd : (exists pvs_factor_divisor_total_yes. (n) = (d) * pvs_factor_divisor_total_yes) \/ ~(exists pvs_factor_divisor_total_no. (n) = (d) * pvs_factor_divisor_total_no) - L17
specialize multiple_decidable_nonzero (d) - L18
specialize multiple_decidable_nonzero (n) - L19
apply multiple_decidable_nonzero - L20
exact hz_right
09Separate the logical casesL21–21
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L21
cases hd
10Establish heL22–30
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime factor toggle exists.
- L22
have he : exists e. ((((~(exists pvs_factor_divisor_total_togglefresh_input. (d) = (p) * pvs_factor_divisor_total_togglefresh_input)) /\ ((e)=(p)*(d)))) \/ (((((d)=(p)*(e)) /\ (~(exists pvs_factor_divisor_total_togglefresh_output. (e) = (p) * pvs_factor_divisor_total_togglefresh_output)))) \/ (((exists pvs_factor_divisor_total_togglesquare. (d) = ((p)*(p)) * pvs_factor_divisor_total_togglesquare) /\ ((e)=(d)))))) - L23
specialize prime_factor_toggle_exists (p) - L24
specialize prime_factor_toggle_exists (d) - L25
apply prime_factor_toggle_exists - L26
intro hzero - L27
specialize prime_nonzero (p) - L28
apply prime_nonzero - L29
exact hp - L30
exact hzero
11Separate the logical casesL31–31
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L31
cases he
12Construct an explicit witnessL32–32
Supply the displayed value, then prove that it has the required property.
- L32
exists x
13Separate the logical casesL33–34
14Use earlier factsL35–35
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L35
exact hz_right
15Separate the logical casesL36–36
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L36
split
16Use earlier factsL37–38
17Construct an explicit witnessL39–39
Supply the displayed value, then prove that it has the required property.
- L39
exists d
18Separate the logical casesL40–42
19Use earlier factsL43–43
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L43
exact hd_right
20Calculate and transport equalitiesL44–44
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L44
refl
Original exact command ledger · 44 lines
- 0001
intro n - 0002
intro p - 0003
intro d - 0004
intro hp - 0005
have hz : d=0 \/ ~(d=0) - 0006
specialize eq_decidable (d) - 0007
specialize eq_decidable (0) - 0008
apply eq_decidable - 0009
cases hz - 0010
exists d - 0011
right - 0012
split - 0013
left - 0014
exact hz_left - 0015
refl - 0016
have hd : (exists pvs_factor_divisor_total_yes. (n) = (d) * pvs_factor_divisor_total_yes) \/ ~(exists pvs_factor_divisor_total_no. (n) = (d) * pvs_factor_divisor_total_no) - 0017
specialize multiple_decidable_nonzero (d) - 0018
specialize multiple_decidable_nonzero (n) - 0019
apply multiple_decidable_nonzero - 0020
exact hz_right - 0021
cases hd - 0022
have he : exists e. ((((~(exists pvs_factor_divisor_total_togglefresh_input. (d) = (p) * pvs_factor_divisor_total_togglefresh_input)) /\ ((e)=(p)*(d)))) \/ (((((d)=(p)*(e)) /\ (~(exists pvs_factor_divisor_total_togglefresh_output. (e) = (p) * pvs_factor_divisor_total_togglefresh_output)))) \/ (((exists pvs_factor_divisor_total_togglesquare. (d) = ((p)*(p)) * pvs_factor_divisor_total_togglesquare) /\ ((e)=(d)))))) - 0023
specialize prime_factor_toggle_exists (p) - 0024
specialize prime_factor_toggle_exists (d) - 0025
apply prime_factor_toggle_exists - 0026
intro hzero - 0027
specialize prime_nonzero (p) - 0028
apply prime_nonzero - 0029
exact hp - 0030
exact hzero - 0031
cases he - 0032
exists x - 0033
left - 0034
split - 0035
exact hz_right - 0036
split - 0037
exact hd_left - 0038
exact he_witness - 0039
exists d - 0040
right - 0041
split - 0042
right - 0043
exact hd_right - 0044
refl