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
∀ n. ∀ F. n = 1 → Factorial(n,F) → F = 1Every purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.
Definitions used by this theorem
In the theorem statement
1 occurrences
In local proof propositions
1 occurrences
Exact expanded native-PA statement
forall n F. n = 1 -> (exists ff_b_wer_one ff_c_wer_one. ((forall ff_i_wer_one_range. (exists ff_lt_wer_one_range_bound. ff_lt_wer_one_range_bound + S ff_i_wer_one_range = n) -> (((exists ff_h_wer_one_range_decoded. ff_h_wer_one_range_decoded + S (1 + ff_i_wer_one_range) = S ((S (ff_i_wer_one_range)) * ff_c_wer_one)) /\ exists ff_q_wer_one_range_decoded. ff_b_wer_one = ff_q_wer_one_range_decoded * S ((S (ff_i_wer_one_range)) * ff_c_wer_one) + (1 + ff_i_wer_one_range)))) /\ (exists ff_u_wer_one_product ff_v_wer_one_product. ((((exists ff_h_wer_one_product_start. ff_h_wer_one_product_start + S (1) = S ((S (0)) * ff_v_wer_one_product)) /\ exists ff_q_wer_one_product_start. ff_u_wer_one_product = ff_q_wer_one_product_start * S ((S (0)) * ff_v_wer_one_product) + (1))) /\ ((((exists ff_h_wer_one_product_terminal. ff_h_wer_one_product_terminal + S (F) = S ((S (n)) * ff_v_wer_one_product)) /\ exists ff_q_wer_one_product_terminal. ff_u_wer_one_product = ff_q_wer_one_product_terminal * S ((S (n)) * ff_v_wer_one_product) + (F))) /\ forall ff_i_wer_one_product. (exists ff_lt_wer_one_product_bound. ff_lt_wer_one_product_bound + S ff_i_wer_one_product = n) -> exists ff_p_wer_one_product ff_r_wer_one_product ff_s_wer_one_product. ((((exists ff_h_wer_one_product_factor. ff_h_wer_one_product_factor + S (ff_p_wer_one_product) = S ((S (ff_i_wer_one_product)) * ff_c_wer_one)) /\ exists ff_q_wer_one_product_factor. ff_b_wer_one = ff_q_wer_one_product_factor * S ((S (ff_i_wer_one_product)) * ff_c_wer_one) + (ff_p_wer_one_product))) /\ ((((exists ff_h_wer_one_product_partial. ff_h_wer_one_product_partial + S (ff_r_wer_one_product) = S ((S (ff_i_wer_one_product)) * ff_v_wer_one_product)) /\ exists ff_q_wer_one_product_partial. ff_u_wer_one_product = ff_q_wer_one_product_partial * S ((S (ff_i_wer_one_product)) * ff_v_wer_one_product) + (ff_r_wer_one_product))) /\ ((((exists ff_h_wer_one_product_successor. ff_h_wer_one_product_successor + S (ff_s_wer_one_product) = S ((S (S ff_i_wer_one_product)) * ff_v_wer_one_product)) /\ exists ff_q_wer_one_product_successor. ff_u_wer_one_product = ff_q_wer_one_product_successor * S ((S (S ff_i_wer_one_product)) * ff_v_wer_one_product) + (ff_s_wer_one_product))) /\ ff_s_wer_one_product = ff_r_wer_one_product * ff_p_wer_one_product)))))))) -> F = 1Proof neighborhood
Direct theorem prerequisites
Direct theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed command.
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 (3)
01Fix variables and assumptionsL1–4
02Establish hdecompL5–11
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply factorial succ decompose.
- L5
have hdecomp : ∃ R. Factorial(0,R) ∧ F = R · 1Definitions: Factorial(0,R)Original native command in the exact edition - L6
specialize factorial_succ_decompose 0 - L7
specialize factorial_succ_decompose n - L8
specialize factorial_succ_decompose F - L9
apply factorial_succ_decompose - L10
exact hn - L11
exact hfactorial
03Separate the logical casesL12–13
04Establish hzeroL14–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply factorial zero.
Original defined command ledger · 25 lines
- 0001
intro n - 0002
intro F - 0003
intro hn - 0004
intro hfactorial - 0005
have hdecomp : ∃ R. Factorial(0,R) ∧ F = R · 1Exact native replay line
have hdecomp : exists R. ((exists wer_factor_code_wer_one_zero wer_factor_scale_wer_one_zero. ((forall wer_range_index_wer_one_zero_range. (exists wer_range_gap_wer_one_zero_range. wer_range_gap_wer_one_zero_range + S wer_range_index_wer_one_zero_range = 0) -> (((exists ff_h_wer_one_zero_range_decoded. ff_h_wer_one_zero_range_decoded + S (1 + wer_range_index_wer_one_zero_range) = S ((S (wer_range_index_wer_one_zero_range)) * wer_factor_scale_wer_one_zero)) /\ exists ff_q_wer_one_zero_range_decoded. wer_factor_code_wer_one_zero = ff_q_wer_one_zero_range_decoded * S ((S (wer_range_index_wer_one_zero_range)) * wer_factor_scale_wer_one_zero) + (1 + wer_range_index_wer_one_zero_range)))) /\ (exists ff_u_wer_one_zero_product ff_v_wer_one_zero_product. ((((exists ff_h_wer_one_zero_product_start. ff_h_wer_one_zero_product_start + S (1) = S ((S (0)) * ff_v_wer_one_zero_product)) /\ exists ff_q_wer_one_zero_product_start. ff_u_wer_one_zero_product = ff_q_wer_one_zero_product_start * S ((S (0)) * ff_v_wer_one_zero_product) + (1))) /\ ((((exists ff_h_wer_one_zero_product_terminal. ff_h_wer_one_zero_product_terminal + S (R) = S ((S (0)) * ff_v_wer_one_zero_product)) /\ exists ff_q_wer_one_zero_product_terminal. ff_u_wer_one_zero_product = ff_q_wer_one_zero_product_terminal * S ((S (0)) * ff_v_wer_one_zero_product) + (R))) /\ forall ff_i_wer_one_zero_product. (exists ff_lt_wer_one_zero_product_bound. ff_lt_wer_one_zero_product_bound + S ff_i_wer_one_zero_product = 0) -> exists ff_p_wer_one_zero_product ff_r_wer_one_zero_product ff_s_wer_one_zero_product. ((((exists ff_h_wer_one_zero_product_factor. ff_h_wer_one_zero_product_factor + S (ff_p_wer_one_zero_product) = S ((S (ff_i_wer_one_zero_product)) * wer_factor_scale_wer_one_zero)) /\ exists ff_q_wer_one_zero_product_factor. wer_factor_code_wer_one_zero = ff_q_wer_one_zero_product_factor * S ((S (ff_i_wer_one_zero_product)) * wer_factor_scale_wer_one_zero) + (ff_p_wer_one_zero_product))) /\ ((((exists ff_h_wer_one_zero_product_partial. ff_h_wer_one_zero_product_partial + S (ff_r_wer_one_zero_product) = S ((S (ff_i_wer_one_zero_product)) * ff_v_wer_one_zero_product)) /\ exists ff_q_wer_one_zero_product_partial. ff_u_wer_one_zero_product = ff_q_wer_one_zero_product_partial * S ((S (ff_i_wer_one_zero_product)) * ff_v_wer_one_zero_product) + (ff_r_wer_one_zero_product))) /\ ((((exists ff_h_wer_one_zero_product_successor. ff_h_wer_one_zero_product_successor + S (ff_s_wer_one_zero_product) = S ((S (S ff_i_wer_one_zero_product)) * ff_v_wer_one_zero_product)) /\ exists ff_q_wer_one_zero_product_successor. ff_u_wer_one_zero_product = ff_q_wer_one_zero_product_successor * S ((S (S ff_i_wer_one_zero_product)) * ff_v_wer_one_zero_product) + (ff_s_wer_one_zero_product))) /\ ff_s_wer_one_zero_product = ff_r_wer_one_zero_product * ff_p_wer_one_zero_product)))))))) /\ F = R * 1) - 0006
specialize factorial_succ_decompose 0 - 0007
specialize factorial_succ_decompose n - 0008
specialize factorial_succ_decompose F - 0009
apply factorial_succ_decompose - 0010
exact hn - 0011
exact hfactorial - 0012
cases hdecomp - 0013
cases hdecomp_witness - 0014
have hzero : x = 1 - 0015
specialize factorial_zero 0 - 0016
specialize factorial_zero x - 0017
apply factorial_zero - 0018
refl - 0019
exact hdecomp_witness_left - 0020
trans x * 1 - 0021
exact hdecomp_witness_right - 0022
trans x - 0023
specialize mul_one x - 0024
exact mul_one - 0025
exact hzero