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.
Statement with defined notation
∀ p. ∀ n. ∀ F. Prime(p) → Factorial(n,F) → Dvd(p,F) → Le(p,n)Every purple notation token opens its conservative definition. Expanding the displayed statement recovers the exact first-order Peano-arithmetic formula checked by the unchanged kernel.
Definitions used by this theorem
In the theorem statement
4 occurrences
In local proof propositions
4 occurrences
Exact expanded native-PA statement
forall p n F. ((~(p = 1) /\ forall bpr_left_bfplod_prime bpr_right_bfplod_prime. p = bpr_left_bfplod_prime * bpr_right_bfplod_prime -> bpr_left_bfplod_prime = 1 \/ bpr_right_bfplod_prime = 1)) -> (exists ff_b_bfplod_source ff_c_bfplod_source. ((forall ff_i_bfplod_source_range. (exists ff_lt_bfplod_source_range_bound. ff_lt_bfplod_source_range_bound + S ff_i_bfplod_source_range = n) -> (((exists ff_h_bfplod_source_range_decoded. ff_h_bfplod_source_range_decoded + S (1 + ff_i_bfplod_source_range) = S ((S (ff_i_bfplod_source_range)) * ff_c_bfplod_source)) /\ exists ff_q_bfplod_source_range_decoded. ff_b_bfplod_source = ff_q_bfplod_source_range_decoded * S ((S (ff_i_bfplod_source_range)) * ff_c_bfplod_source) + (1 + ff_i_bfplod_source_range)))) /\ (exists ff_u_bfplod_source_product ff_v_bfplod_source_product. ((((exists ff_h_bfplod_source_product_start. ff_h_bfplod_source_product_start + S (1) = S ((S (0)) * ff_v_bfplod_source_product)) /\ exists ff_q_bfplod_source_product_start. ff_u_bfplod_source_product = ff_q_bfplod_source_product_start * S ((S (0)) * ff_v_bfplod_source_product) + (1))) /\ ((((exists ff_h_bfplod_source_product_terminal. ff_h_bfplod_source_product_terminal + S (F) = S ((S (n)) * ff_v_bfplod_source_product)) /\ exists ff_q_bfplod_source_product_terminal. ff_u_bfplod_source_product = ff_q_bfplod_source_product_terminal * S ((S (n)) * ff_v_bfplod_source_product) + (F))) /\ forall ff_i_bfplod_source_product. (exists ff_lt_bfplod_source_product_bound. ff_lt_bfplod_source_product_bound + S ff_i_bfplod_source_product = n) -> exists ff_p_bfplod_source_product ff_r_bfplod_source_product ff_s_bfplod_source_product. ((((exists ff_h_bfplod_source_product_factor. ff_h_bfplod_source_product_factor + S (ff_p_bfplod_source_product) = S ((S (ff_i_bfplod_source_product)) * ff_c_bfplod_source)) /\ exists ff_q_bfplod_source_product_factor. ff_b_bfplod_source = ff_q_bfplod_source_product_factor * S ((S (ff_i_bfplod_source_product)) * ff_c_bfplod_source) + (ff_p_bfplod_source_product))) /\ ((((exists ff_h_bfplod_source_product_partial. ff_h_bfplod_source_product_partial + S (ff_r_bfplod_source_product) = S ((S (ff_i_bfplod_source_product)) * ff_v_bfplod_source_product)) /\ exists ff_q_bfplod_source_product_partial. ff_u_bfplod_source_product = ff_q_bfplod_source_product_partial * S ((S (ff_i_bfplod_source_product)) * ff_v_bfplod_source_product) + (ff_r_bfplod_source_product))) /\ ((((exists ff_h_bfplod_source_product_successor. ff_h_bfplod_source_product_successor + S (ff_s_bfplod_source_product) = S ((S (S ff_i_bfplod_source_product)) * ff_v_bfplod_source_product)) /\ exists ff_q_bfplod_source_product_successor. ff_u_bfplod_source_product = ff_q_bfplod_source_product_successor * S ((S (S ff_i_bfplod_source_product)) * ff_v_bfplod_source_product) + (ff_s_bfplod_source_product))) /\ ff_s_bfplod_source_product = ff_r_bfplod_source_product * ff_p_bfplod_source_product)))))))) -> (exists bpr_quotient_bfplod_divides. F = (p) * bpr_quotient_bfplod_divides) -> (exists bpr_le_gap_bfplod_result. bpr_le_gap_bfplod_result + (p) = (n))Proof neighborhood
Direct theorem prerequisites
BT002E divisor_one BT0018 le_succ BT003N euclid_prime_dvd_product BT002D divisor_le_nonzero BT000C succ_ne_zero BT0091 factorial_zero BT0092 factorial_succ_decomposeDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. Every changed line has an exact-AST conservative-expansion receipt; the kernel still receives the immutable original tactic script.
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 (7)
01Fix variables and assumptionsL1–1
Work with arbitrary variables or the premises of the current implication.
- L1
intro p
02Induction on nL2–4
03Separate the logical casesL5–5
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L5
cases hp
04Fix variables and assumptionsL6–7
05Establish hF_oneL8–14
06Establish hp_oneL15–18
07Separate the logical casesL19–19
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L19
exfalso
08Use earlier factsL20–21
09Fix variables and assumptionsL22–23
10Separate the logical casesL24–24
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L24
cases hp
11Fix variables and assumptionsL25–26
12Establish hdecompositionL27–33
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply factorial succ decompose.
- L27
have hdecomposition : ∃ r. Factorial(n,r) ∧ F = r · S nDefinitions: Factorial(n,r)Original native command in the exact edition - L28
specialize factorial_succ_decompose n - L29
specialize factorial_succ_decompose (S n) - L30
specialize factorial_succ_decompose F - L31
apply factorial_succ_decompose - L32
refl - L33
exact hfactorial
13Separate the logical casesL34–35
14Calculate and transport equalitiesL36–36
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L36
rewrite hdecomposition_witness_right at hdivides
15Establish hsplitL37–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply euclid prime dvd product.
- L37
have hsplit : Dvd(p,x) ∨ Dvd(p,S n)Definitions: Dvd(p,x)Dvd(p,S n)Original native command in the exact edition - L38
specialize euclid_prime_dvd_product p - L39
specialize euclid_prime_dvd_product x - L40
specialize euclid_prime_dvd_product (S n) - L41
apply euclid_prime_dvd_product
16Separate the logical casesL42–42
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L42
split
17Use earlier factsL43–45
18Separate the logical casesL46–46
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L46
cases hsplit
19Establish hpreviousL47–49
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
20Separate the logical casesL50–50
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L50
split
21Use earlier factsL51–60
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original defined command ledger · 64 lines
- 0001
intro p - 0002
induction n - 0003
intro F - 0004
intro hp - 0005
cases hp - 0006
intro hfactorial - 0007
intro hdivides - 0008
have hF_one : F = 1 - 0009
specialize factorial_zero 0 - 0010
specialize factorial_zero F - 0011
apply factorial_zero - 0012
refl - 0013
exact hfactorial - 0014
rewrite hF_one at hdivides - 0015
have hp_one : p = 1 - 0016
specialize divisor_one p - 0017
apply divisor_one - 0018
exact hdivides - 0019
exfalso - 0020
apply hp_left - 0021
exact hp_one - 0022
intro F - 0023
intro hp - 0024
cases hp - 0025
intro hfactorial - 0026
intro hdivides - 0027
have hdecomposition : ∃ r. Factorial(n,r) ∧ F = r · S nExact native replay line
have hdecomposition : exists r. (exists ff_b_bfplod_previous ff_c_bfplod_previous. ((forall ff_i_bfplod_previous_range. (exists ff_lt_bfplod_previous_range_bound. ff_lt_bfplod_previous_range_bound + S ff_i_bfplod_previous_range = n) -> (((exists ff_h_bfplod_previous_range_decoded. ff_h_bfplod_previous_range_decoded + S (1 + ff_i_bfplod_previous_range) = S ((S (ff_i_bfplod_previous_range)) * ff_c_bfplod_previous)) /\ exists ff_q_bfplod_previous_range_decoded. ff_b_bfplod_previous = ff_q_bfplod_previous_range_decoded * S ((S (ff_i_bfplod_previous_range)) * ff_c_bfplod_previous) + (1 + ff_i_bfplod_previous_range)))) /\ (exists ff_u_bfplod_previous_product ff_v_bfplod_previous_product. ((((exists ff_h_bfplod_previous_product_start. ff_h_bfplod_previous_product_start + S (1) = S ((S (0)) * ff_v_bfplod_previous_product)) /\ exists ff_q_bfplod_previous_product_start. ff_u_bfplod_previous_product = ff_q_bfplod_previous_product_start * S ((S (0)) * ff_v_bfplod_previous_product) + (1))) /\ ((((exists ff_h_bfplod_previous_product_terminal. ff_h_bfplod_previous_product_terminal + S (r) = S ((S (n)) * ff_v_bfplod_previous_product)) /\ exists ff_q_bfplod_previous_product_terminal. ff_u_bfplod_previous_product = ff_q_bfplod_previous_product_terminal * S ((S (n)) * ff_v_bfplod_previous_product) + (r))) /\ forall ff_i_bfplod_previous_product. (exists ff_lt_bfplod_previous_product_bound. ff_lt_bfplod_previous_product_bound + S ff_i_bfplod_previous_product = n) -> exists ff_p_bfplod_previous_product ff_r_bfplod_previous_product ff_s_bfplod_previous_product. ((((exists ff_h_bfplod_previous_product_factor. ff_h_bfplod_previous_product_factor + S (ff_p_bfplod_previous_product) = S ((S (ff_i_bfplod_previous_product)) * ff_c_bfplod_previous)) /\ exists ff_q_bfplod_previous_product_factor. ff_b_bfplod_previous = ff_q_bfplod_previous_product_factor * S ((S (ff_i_bfplod_previous_product)) * ff_c_bfplod_previous) + (ff_p_bfplod_previous_product))) /\ ((((exists ff_h_bfplod_previous_product_partial. ff_h_bfplod_previous_product_partial + S (ff_r_bfplod_previous_product) = S ((S (ff_i_bfplod_previous_product)) * ff_v_bfplod_previous_product)) /\ exists ff_q_bfplod_previous_product_partial. ff_u_bfplod_previous_product = ff_q_bfplod_previous_product_partial * S ((S (ff_i_bfplod_previous_product)) * ff_v_bfplod_previous_product) + (ff_r_bfplod_previous_product))) /\ ((((exists ff_h_bfplod_previous_product_successor. ff_h_bfplod_previous_product_successor + S (ff_s_bfplod_previous_product) = S ((S (S ff_i_bfplod_previous_product)) * ff_v_bfplod_previous_product)) /\ exists ff_q_bfplod_previous_product_successor. ff_u_bfplod_previous_product = ff_q_bfplod_previous_product_successor * S ((S (S ff_i_bfplod_previous_product)) * ff_v_bfplod_previous_product) + (ff_s_bfplod_previous_product))) /\ ff_s_bfplod_previous_product = ff_r_bfplod_previous_product * ff_p_bfplod_previous_product)))))))) /\ F = r * S n - 0028
specialize factorial_succ_decompose n - 0029
specialize factorial_succ_decompose (S n) - 0030
specialize factorial_succ_decompose F - 0031
apply factorial_succ_decompose - 0032
refl - 0033
exact hfactorial - 0034
cases hdecomposition - 0035
cases hdecomposition_witness - 0036
rewrite hdecomposition_witness_right at hdivides - 0037
have hsplit : Dvd(p,x) ∨ Dvd(p,S n)Exact native replay line
have hsplit : (exists bpr_quotient_bfplod_split_left. x = (p) * bpr_quotient_bfplod_split_left) \/ (exists bpr_quotient_bfplod_split_right. S n = (p) * bpr_quotient_bfplod_split_right) - 0038
specialize euclid_prime_dvd_product p - 0039
specialize euclid_prime_dvd_product x - 0040
specialize euclid_prime_dvd_product (S n) - 0041
apply euclid_prime_dvd_product - 0042
split - 0043
exact hp_left - 0044
exact hp_right - 0045
exact hdivides - 0046
cases hsplit - 0047
have hprevious : Le(p,n)Exact native replay line
have hprevious : exists g. g + p = n - 0048
specialize IH x - 0049
apply IH - 0050
split - 0051
exact hp_left - 0052
exact hp_right - 0053
exact hdecomposition_witness_left - 0054
exact hsplit_left - 0055
specialize le_succ p - 0056
specialize le_succ n - 0057
apply le_succ - 0058
exact hprevious - 0059
specialize divisor_le_nonzero p - 0060
specialize divisor_le_nonzero (S n) - 0061
apply divisor_le_nonzero - 0062
specialize succ_ne_zero n - 0063
exact succ_ne_zero - 0064
exact hsplit_right