AF000A

factor_permutation_successor_decompose

Every nonempty prime factorization supplies an actual last prime, its actual quotient, and a genuine shorter factorization.

Alpha v34 checked-use · first admitted v28 · independently kernel and Lean verified; not Stable

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.

The original division, gcd, cancellation, and factor-existence foundations are exposed through checked wrappers. Unordered uniqueness adds an actual bounded, injective, surjective index map matching repeated prime occurrences. The empty factor list represents one, not zero.

Exact theorem in conservative defined notation

∀ n. ∀ b. ∀ c. ∀ l. PrimeFactorList(n,b,c,S l) → ∃ x. ∃ y. Prime(x) ∧ (BetaAt(b,c,l,x) ∧ (n = y · x ∧ PrimeFactorList(y,b,c,l)))

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

beta_product_succ_decompose · checked external prerequisitefactor_permutation_all_prime_entryfactor_permutation_cancel_lastle_refl · checked external prerequisite
Original expanded first-order statement
forall n b c l. ((~(n = 0) /\ ((exists ff_u_fsat_decompose_full_product ff_v_fsat_decompose_full_product. ((((exists ff_h_fsat_decompose_full_product_start. ff_h_fsat_decompose_full_product_start + S (1) = S ((S (0)) * ff_v_fsat_decompose_full_product)) /\ exists ff_q_fsat_decompose_full_product_start. ff_u_fsat_decompose_full_product = ff_q_fsat_decompose_full_product_start * S ((S (0)) * ff_v_fsat_decompose_full_product) + (1))) /\ ((((exists ff_h_fsat_decompose_full_product_terminal. ff_h_fsat_decompose_full_product_terminal + S (n) = S ((S (S l)) * ff_v_fsat_decompose_full_product)) /\ exists ff_q_fsat_decompose_full_product_terminal. ff_u_fsat_decompose_full_product = ff_q_fsat_decompose_full_product_terminal * S ((S (S l)) * ff_v_fsat_decompose_full_product) + (n))) /\ forall ff_i_fsat_decompose_full_product. (exists ff_lt_fsat_decompose_full_product_bound. ff_lt_fsat_decompose_full_product_bound + S ff_i_fsat_decompose_full_product = S l) -> exists ff_p_fsat_decompose_full_product ff_r_fsat_decompose_full_product ff_s_fsat_decompose_full_product. ((((exists ff_h_fsat_decompose_full_product_factor. ff_h_fsat_decompose_full_product_factor + S (ff_p_fsat_decompose_full_product) = S ((S (ff_i_fsat_decompose_full_product)) * c)) /\ exists ff_q_fsat_decompose_full_product_factor. b = ff_q_fsat_decompose_full_product_factor * S ((S (ff_i_fsat_decompose_full_product)) * c) + (ff_p_fsat_decompose_full_product))) /\ ((((exists ff_h_fsat_decompose_full_product_partial. ff_h_fsat_decompose_full_product_partial + S (ff_r_fsat_decompose_full_product) = S ((S (ff_i_fsat_decompose_full_product)) * ff_v_fsat_decompose_full_product)) /\ exists ff_q_fsat_decompose_full_product_partial. ff_u_fsat_decompose_full_product = ff_q_fsat_decompose_full_product_partial * S ((S (ff_i_fsat_decompose_full_product)) * ff_v_fsat_decompose_full_product) + (ff_r_fsat_decompose_full_product))) /\ ((((exists ff_h_fsat_decompose_full_product_successor. ff_h_fsat_decompose_full_product_successor + S (ff_s_fsat_decompose_full_product) = S ((S (S ff_i_fsat_decompose_full_product)) * ff_v_fsat_decompose_full_product)) /\ exists ff_q_fsat_decompose_full_product_successor. ff_u_fsat_decompose_full_product = ff_q_fsat_decompose_full_product_successor * S ((S (S ff_i_fsat_decompose_full_product)) * ff_v_fsat_decompose_full_product) + (ff_s_fsat_decompose_full_product))) /\ ff_s_fsat_decompose_full_product = ff_r_fsat_decompose_full_product * ff_p_fsat_decompose_full_product)))))) /\ (forall ftsf_index_fsat_decompose_full_primes. (exists ftsf_gap_fsat_decompose_full_primes_bound. ftsf_gap_fsat_decompose_full_primes_bound + S ftsf_index_fsat_decompose_full_primes = (S l)) -> exists ftsf_factor_fsat_decompose_full_primes. ((((exists ff_h_ftsf_fsat_decompose_full_primes_entry. ff_h_ftsf_fsat_decompose_full_primes_entry + S (ftsf_factor_fsat_decompose_full_primes) = S ((S (ftsf_index_fsat_decompose_full_primes)) * c)) /\ exists ff_q_ftsf_fsat_decompose_full_primes_entry. b = ff_q_ftsf_fsat_decompose_full_primes_entry * S ((S (ftsf_index_fsat_decompose_full_primes)) * c) + (ftsf_factor_fsat_decompose_full_primes))) /\ ((~(ftsf_factor_fsat_decompose_full_primes = 1) /\ forall frm_prime_left_ftsf_fsat_decompose_full_primes_prime frm_prime_right_ftsf_fsat_decompose_full_primes_prime. ftsf_factor_fsat_decompose_full_primes = frm_prime_left_ftsf_fsat_decompose_full_primes_prime * frm_prime_right_ftsf_fsat_decompose_full_primes_prime -> frm_prime_left_ftsf_fsat_decompose_full_primes_prime = 1 \/ frm_prime_right_ftsf_fsat_decompose_full_primes_prime = 1))))))) -> exists p r. (((~(p = 1) /\ forall frm_prime_left_pfp_decompose_prime frm_prime_right_pfp_decompose_prime. p = frm_prime_left_pfp_decompose_prime * frm_prime_right_pfp_decompose_prime -> frm_prime_left_pfp_decompose_prime = 1 \/ frm_prime_right_pfp_decompose_prime = 1)) /\ (((((exists ff_h_pfp_decompose_last. ff_h_pfp_decompose_last + S (p) = S ((S (l)) * c)) /\ exists ff_q_pfp_decompose_last. b = ff_q_pfp_decompose_last * S ((S (l)) * c) + (p))) /\ (((n = r * p) /\ ((~(r = 0) /\ ((exists ff_u_fsat_decompose_prefix_product ff_v_fsat_decompose_prefix_product. ((((exists ff_h_fsat_decompose_prefix_product_start. ff_h_fsat_decompose_prefix_product_start + S (1) = S ((S (0)) * ff_v_fsat_decompose_prefix_product)) /\ exists ff_q_fsat_decompose_prefix_product_start. ff_u_fsat_decompose_prefix_product = ff_q_fsat_decompose_prefix_product_start * S ((S (0)) * ff_v_fsat_decompose_prefix_product) + (1))) /\ ((((exists ff_h_fsat_decompose_prefix_product_terminal. ff_h_fsat_decompose_prefix_product_terminal + S (r) = S ((S (l)) * ff_v_fsat_decompose_prefix_product)) /\ exists ff_q_fsat_decompose_prefix_product_terminal. ff_u_fsat_decompose_prefix_product = ff_q_fsat_decompose_prefix_product_terminal * S ((S (l)) * ff_v_fsat_decompose_prefix_product) + (r))) /\ forall ff_i_fsat_decompose_prefix_product. (exists ff_lt_fsat_decompose_prefix_product_bound. ff_lt_fsat_decompose_prefix_product_bound + S ff_i_fsat_decompose_prefix_product = l) -> exists ff_p_fsat_decompose_prefix_product ff_r_fsat_decompose_prefix_product ff_s_fsat_decompose_prefix_product. ((((exists ff_h_fsat_decompose_prefix_product_factor. ff_h_fsat_decompose_prefix_product_factor + S (ff_p_fsat_decompose_prefix_product) = S ((S (ff_i_fsat_decompose_prefix_product)) * c)) /\ exists ff_q_fsat_decompose_prefix_product_factor. b = ff_q_fsat_decompose_prefix_product_factor * S ((S (ff_i_fsat_decompose_prefix_product)) * c) + (ff_p_fsat_decompose_prefix_product))) /\ ((((exists ff_h_fsat_decompose_prefix_product_partial. ff_h_fsat_decompose_prefix_product_partial + S (ff_r_fsat_decompose_prefix_product) = S ((S (ff_i_fsat_decompose_prefix_product)) * ff_v_fsat_decompose_prefix_product)) /\ exists ff_q_fsat_decompose_prefix_product_partial. ff_u_fsat_decompose_prefix_product = ff_q_fsat_decompose_prefix_product_partial * S ((S (ff_i_fsat_decompose_prefix_product)) * ff_v_fsat_decompose_prefix_product) + (ff_r_fsat_decompose_prefix_product))) /\ ((((exists ff_h_fsat_decompose_prefix_product_successor. ff_h_fsat_decompose_prefix_product_successor + S (ff_s_fsat_decompose_prefix_product) = S ((S (S ff_i_fsat_decompose_prefix_product)) * ff_v_fsat_decompose_prefix_product)) /\ exists ff_q_fsat_decompose_prefix_product_successor. ff_u_fsat_decompose_prefix_product = ff_q_fsat_decompose_prefix_product_successor * S ((S (S ff_i_fsat_decompose_prefix_product)) * ff_v_fsat_decompose_prefix_product) + (ff_s_fsat_decompose_prefix_product))) /\ ff_s_fsat_decompose_prefix_product = ff_r_fsat_decompose_prefix_product * ff_p_fsat_decompose_prefix_product)))))) /\ (forall ftsf_index_fsat_decompose_prefix_primes. (exists ftsf_gap_fsat_decompose_prefix_primes_bound. ftsf_gap_fsat_decompose_prefix_primes_bound + S ftsf_index_fsat_decompose_prefix_primes = (l)) -> exists ftsf_factor_fsat_decompose_prefix_primes. ((((exists ff_h_ftsf_fsat_decompose_prefix_primes_entry. ff_h_ftsf_fsat_decompose_prefix_primes_entry + S (ftsf_factor_fsat_decompose_prefix_primes) = S ((S (ftsf_index_fsat_decompose_prefix_primes)) * c)) /\ exists ff_q_ftsf_fsat_decompose_prefix_primes_entry. b = ff_q_ftsf_fsat_decompose_prefix_primes_entry * S ((S (ftsf_index_fsat_decompose_prefix_primes)) * c) + (ftsf_factor_fsat_decompose_prefix_primes))) /\ ((~(ftsf_factor_fsat_decompose_prefix_primes = 1) /\ forall frm_prime_left_ftsf_fsat_decompose_prefix_primes_prime frm_prime_right_ftsf_fsat_decompose_prefix_primes_prime. ftsf_factor_fsat_decompose_prefix_primes = frm_prime_left_ftsf_fsat_decompose_prefix_primes_prime * frm_prime_right_ftsf_fsat_decompose_prefix_primes_prime -> frm_prime_left_ftsf_fsat_decompose_prefix_primes_prime = 1 \/ frm_prime_right_ftsf_fsat_decompose_prefix_primes_prime = 1))))))))))))

Complete tactic proof in conservative notation

All 49 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.

Read the argument

Proof checkpoints

49 script commands · 16 reading checkpoints · 2 local claims

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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (2)
01Fix variables and assumptionsL1–5

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro n
  2. L2
    intro b
  3. L3
    intro c
  4. L4
    intro l
  5. L5
    intro hf
02Establish hprodL6–6

Establish this local claim before using it. It is not an additional assumption.

  1. L6
    have hprod : Product(b,c,S l,n)Definitions: Product(b,c,S l,n)Original native command in the exact edition
03Separate the logical casesL7–8

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L7
    cases hf
  2. L8
    cases hf_right
04Use earlier factsL9–9

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L9
    exact hf_right_left
05Establish hdL10–16

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product succ decompose.

  1. L10
    have hd : ∃ p. ∃ r. BetaAt(b,c,l,p) ∧ (Product(b,c,l,r) ∧ n = r · p)Definitions: BetaAt(b,c,l,p)Product(b,c,l,r)Original native command in the exact edition
  2. L11
    specialize beta_product_succ_decompose (b)
  3. L12
    specialize beta_product_succ_decompose (c)
  4. L13
    specialize beta_product_succ_decompose (l)
  5. L14
    specialize beta_product_succ_decompose (n)
  6. L15
    apply beta_product_succ_decompose
  7. L16
    exact hprod
06Separate the logical casesL17–20

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L17
    cases hd
  2. L18
    cases hd_witness
  3. L19
    cases hd_witness_witness
  4. L20
    cases hd_witness_witness_right
07Construct an explicit witnessL21–22

Supply the displayed value, then prove that it has the required property.

  1. L21
    exists x
  2. L22
    exists x1
08Separate the logical casesL23–23

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L23
    split
09Use earlier factsL24–29

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L24
    specialize factor_permutation_all_prime_entry (b)
  2. L25
    specialize factor_permutation_all_prime_entry (c)
  3. L26
    specialize factor_permutation_all_prime_entry (S l)
  4. L27
    specialize factor_permutation_all_prime_entry (l)
  5. L28
    specialize factor_permutation_all_prime_entry (x)
  6. L29
    apply factor_permutation_all_prime_entry
10Separate the logical casesL30–31

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L30
    cases hf
  2. L31
    cases hf_right
11Use earlier factsL32–35

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L32
    exact hf_right_right
  2. L33
    specialize le_refl (S l)
  3. L34
    apply le_refl
  4. L35
    exact hd_witness_witness_left
12Separate the logical casesL36–36

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L36
    split
13Use earlier factsL37–37

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L37
    exact hd_witness_witness_left
14Separate the logical casesL38–38

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L38
    split
15Use earlier factsL39–48

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L39
    exact hd_witness_witness_right_right
  2. L40
    specialize factor_permutation_cancel_last (n)
  3. L41
    specialize factor_permutation_cancel_last (x)
  4. L42
    specialize factor_permutation_cancel_last (x1)
  5. L43
    specialize factor_permutation_cancel_last (b)
  6. L44
    specialize factor_permutation_cancel_last (c)
  7. L45
    specialize factor_permutation_cancel_last (l)
  8. L46
    apply factor_permutation_cancel_last
  9. L47
    exact hf
  10. L48
    exact hd_witness_witness_left
16Use earlier factsL49–49

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L49
    exact hd_witness_witness_right_right

Library-wide reading audit

Original defined command ledger · 49 lines
  1. 0001intro n
  2. 0002intro b
  3. 0003intro c
  4. 0004intro l
  5. 0005intro hf
  6. 0006have hprod : Product(b,c,S l,n)
  7. 0007cases hf
  8. 0008cases hf_right
  9. 0009exact hf_right_left
  10. 0010have hd : ∃ p. ∃ r. BetaAt(b,c,l,p) ∧ (Product(b,c,l,r) ∧ n = r · p)
  11. 0011specialize beta_product_succ_decompose (b)
  12. 0012specialize beta_product_succ_decompose (c)
  13. 0013specialize beta_product_succ_decompose (l)
  14. 0014specialize beta_product_succ_decompose (n)
  15. 0015apply beta_product_succ_decompose
  16. 0016exact hprod
  17. 0017cases hd
  18. 0018cases hd_witness
  19. 0019cases hd_witness_witness
  20. 0020cases hd_witness_witness_right
  21. 0021exists x
  22. 0022exists x1
  23. 0023split
  24. 0024specialize factor_permutation_all_prime_entry (b)
  25. 0025specialize factor_permutation_all_prime_entry (c)
  26. 0026specialize factor_permutation_all_prime_entry (S l)
  27. 0027specialize factor_permutation_all_prime_entry (l)
  28. 0028specialize factor_permutation_all_prime_entry (x)
  29. 0029apply factor_permutation_all_prime_entry
  30. 0030cases hf
  31. 0031cases hf_right
  32. 0032exact hf_right_right
  33. 0033specialize le_refl (S l)
  34. 0034apply le_refl
  35. 0035exact hd_witness_witness_left
  36. 0036split
  37. 0037exact hd_witness_witness_left
  38. 0038split
  39. 0039exact hd_witness_witness_right_right
  40. 0040specialize factor_permutation_cancel_last (n)
  41. 0041specialize factor_permutation_cancel_last (x)
  42. 0042specialize factor_permutation_cancel_last (x1)
  43. 0043specialize factor_permutation_cancel_last (b)
  44. 0044specialize factor_permutation_cancel_last (c)
  45. 0045specialize factor_permutation_cancel_last (l)
  46. 0046apply factor_permutation_cancel_last
  47. 0047exact hf
  48. 0048exact hd_witness_witness_left
  49. 0049exact hd_witness_witness_right_right