PA004S

finite_surjective_succ_intro

Stable checked-use theorem · independently closed

A surjective prefix plus its new top value is surjective at successor length.

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 PA statement

forall b c n sn. sn = S n -> (forall fp_value_surj_n. (exists fp_gap_surj_n_value. fp_gap_surj_n_value + S fp_value_surj_n = n) -> exists fp_i_surj_n. ((exists fp_gap_surj_n_index. fp_gap_surj_n_index + S fp_i_surj_n = n) /\ (((exists ff_h_surj_n_entry. ff_h_surj_n_entry + S (fp_value_surj_n) = S ((S (fp_i_surj_n)) * c)) /\ exists ff_q_surj_n_entry. b = ff_q_surj_n_entry * S ((S (fp_i_surj_n)) * c) + (fp_value_surj_n))))) -> (((exists ff_h_last_n. ff_h_last_n + S (n) = S ((S (n)) * c)) /\ exists ff_q_last_n. b = ff_q_last_n * S ((S (n)) * c) + (n))) -> (forall fp_value_surj_succ. (exists fp_gap_surj_succ_value. fp_gap_surj_succ_value + S fp_value_surj_succ = sn) -> exists fp_i_surj_succ. ((exists fp_gap_surj_succ_index. fp_gap_surj_succ_index + S fp_i_surj_succ = sn) /\ (((exists ff_h_surj_succ_entry. ff_h_surj_succ_entry + S (fp_value_surj_succ) = S ((S (fp_i_surj_succ)) * c)) /\ exists ff_q_surj_succ_entry. b = ff_q_surj_succ_entry * S ((S (fp_i_surj_succ)) * c) + (fp_value_surj_succ)))))

Structural proof guide

Generated structural guide

A surjective prefix plus its new top value is surjective at successor length.

Use the direct prerequisites finite_lt_succ_eq_or_lt, le_refl, le_succ as previously established PA formulas.

The proof proceeds by case analysis (3), intermediate claims (2), equality transport (4).

Referenced ingredients

Proof neighborhood

Direct dependencies

Direct dependents

Formal native tactic body

Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Stable checked-use theorem is independently kernel-checked when replayed.

Read the argument

Proof checkpoints

37 script commands · 15 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.

Named ingredients (3)
01Fix variables and assumptionsL1–7

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

  1. L1
    intro b
  2. L2
    intro c
  3. L3
    intro n
  4. L4
    intro sn
  5. L5
    intro hsn
  6. L6
    intro hsurj
  7. L7
    intro hlast
02Calculate and transport equalitiesL8–9

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L8
    rewrite hsn
  2. L9
    rewrite hsn
03Fix variables and assumptionsL10–11

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

  1. L10
    intro y
  2. L11
    intro hy
04Establish hsplitL12–16

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.

  1. L12
    have hsplit : y = n \/ exists h. h + S y = n
  2. L13
    specialize finite_lt_succ_eq_or_lt n
  3. L14
    specialize finite_lt_succ_eq_or_lt y
  4. L15
    apply finite_lt_succ_eq_or_lt
  5. L16
    exact hy
05Separate the logical casesL17–17

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

  1. L17
    cases hsplit
06Construct an explicit witnessL18–18

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

  1. L18
    exists n
07Separate the logical casesL19–19

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

  1. L19
    split
08Use earlier factsL20–21

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

  1. L20
    specialize le_refl (S n)
  2. L21
    exact le_refl
09Calculate and transport equalitiesL22–23

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L22
    rewrite hsplit_left
  2. L23
    rewrite hsplit_left
10Use earlier factsL24–25

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

  1. L24
    exact hlast
  2. L25
    specialize hsurj y
11Establish hpreL26–28

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hsurj.

  1. L26
    have hpre : exists i. ((exists h. h + S i = n) /\ ((exists h. h + S y = S ((S i) * c)) /\ exists q. b = q * S ((S i) * c) + y))
  2. L27
    apply hsurj
  3. L28
    exact hsplit_right
12Separate the logical casesL29–30

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

  1. L29
    cases hpre
  2. L30
    cases hpre_witness
13Construct an explicit witnessL31–31

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

  1. L31
    exists x
14Separate the logical casesL32–32

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

  1. L32
    split
15Use earlier factsL33–37

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

  1. L33
    specialize le_succ (S x)
  2. L34
    specialize le_succ n
  3. L35
    apply le_succ
  4. L36
    exact hpre_witness_left
  5. L37
    exact hpre_witness_right

Library-wide reading audit

Original exact command ledger · 37 lines
  1. 0001intro b
  2. 0002intro c
  3. 0003intro n
  4. 0004intro sn
  5. 0005intro hsn
  6. 0006intro hsurj
  7. 0007intro hlast
  8. 0008rewrite hsn
  9. 0009rewrite hsn
  10. 0010intro y
  11. 0011intro hy
  12. 0012have hsplit : y = n \/ exists h. h + S y = n
  13. 0013specialize finite_lt_succ_eq_or_lt n
  14. 0014specialize finite_lt_succ_eq_or_lt y
  15. 0015apply finite_lt_succ_eq_or_lt
  16. 0016exact hy
  17. 0017cases hsplit
  18. 0018exists n
  19. 0019split
  20. 0020specialize le_refl (S n)
  21. 0021exact le_refl
  22. 0022rewrite hsplit_left
  23. 0023rewrite hsplit_left
  24. 0024exact hlast
  25. 0025specialize hsurj y
  26. 0026have hpre : exists i. ((exists h. h + S i = n) /\ ((exists h. h + S y = S ((S i) * c)) /\ exists q. b = q * S ((S i) * c) + y))
  27. 0027apply hsurj
  28. 0028exact hsplit_right
  29. 0029cases hpre
  30. 0030cases hpre_witness
  31. 0031exists x
  32. 0032split
  33. 0033specialize le_succ (S x)
  34. 0034specialize le_succ n
  35. 0035apply le_succ
  36. 0036exact hpre_witness_left
  37. 0037exact hpre_witness_right