PA004P · theorem

finite_bounded_prefix_without_top

Stable checked-use theorem · independently closed

If a successor prefix omits its top value, its old prefix is bounded by the predecessor.

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

∀ b. ∀ c. ∀ n. ∀ sn. sn = S n → BoundedPrefix(b,c,sn) → (∀ x. Lt(x,n) → ¬BetaAt(b,c,x,n)) → BoundedPrefix(b,c,n)

Every 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

4 occurrences

In local proof propositions

3 occurrences

Exact expanded native-PA statement
forall b c n sn. sn = S n -> (forall fp_i_bounded_succ. (exists fp_gap_bounded_succ_index. fp_gap_bounded_succ_index + S fp_i_bounded_succ = sn) -> exists fp_value_bounded_succ. ((((exists ff_h_bounded_succ_entry. ff_h_bounded_succ_entry + S (fp_value_bounded_succ) = S ((S (fp_i_bounded_succ)) * c)) /\ exists ff_q_bounded_succ_entry. b = ff_q_bounded_succ_entry * S ((S (fp_i_bounded_succ)) * c) + (fp_value_bounded_succ))) /\ (exists fp_gap_bounded_succ_value. fp_gap_bounded_succ_value + S fp_value_bounded_succ = sn))) -> (forall i. (exists h. h + S i = n) -> ~(((exists ff_h_top_i. ff_h_top_i + S (n) = S ((S (i)) * c)) /\ exists ff_q_top_i. b = ff_q_top_i * S ((S (i)) * c) + (n)))) -> (forall fp_i_bounded_prefix. (exists fp_gap_bounded_prefix_index. fp_gap_bounded_prefix_index + S fp_i_bounded_prefix = n) -> exists fp_value_bounded_prefix. ((((exists ff_h_bounded_prefix_entry. ff_h_bounded_prefix_entry + S (fp_value_bounded_prefix) = S ((S (fp_i_bounded_prefix)) * c)) /\ exists ff_q_bounded_prefix_entry. b = ff_q_bounded_prefix_entry * S ((S (fp_i_bounded_prefix)) * c) + (fp_value_bounded_prefix))) /\ (exists fp_gap_bounded_prefix_value. fp_gap_bounded_prefix_value + S fp_value_bounded_prefix = n)))

Proof 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

37 script commands · 14 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–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 hbounded
  7. L7
    intro hnotop
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 at hbounded
  2. L9
    rewrite hsn at hbounded
03Fix variables and assumptionsL10–11

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

  1. L10
    intro i
  2. L11
    intro hi
04Use earlier factsL12–12

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

  1. L12
    specialize hbounded i
05Establish hfullL13–18

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

  1. L13
    have hfull : ∃ x. BetaAt(b,c,i,x) ∧ Lt(x,S n)Definitions: BetaAt(b,c,i,x)Lt(x,S n)Original native command in the exact edition
  2. L14
    apply hbounded
  3. L15
    specialize le_succ (S i)
  4. L16
    specialize le_succ n
  5. L17
    apply le_succ
  6. L18
    exact hi
06Separate the logical casesL19–20

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

  1. L19
    cases hfull
  2. L20
    cases hfull_witness
07Establish hsplitL21–25

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. L21
    have hsplit : x = n ∨ Lt(x,n)Definitions: Lt(x,n)Original native command in the exact edition
  2. L22
    specialize finite_lt_succ_eq_or_lt n
  3. L23
    specialize finite_lt_succ_eq_or_lt x
  4. L24
    apply finite_lt_succ_eq_or_lt
  5. L25
    exact hfull_witness_right
08Separate the logical casesL26–27

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

  1. L26
    cases hsplit
  2. L27
    exfalso
09Use earlier factsL28–30

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

  1. L28
    specialize hnotop i
  2. L29
    apply hnotop
  3. L30
    exact hi
10Calculate and transport equalitiesL31–32

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

  1. L31
    rewrite <- hsplit_left
  2. L32
    rewrite <- hsplit_left
11Use earlier factsL33–33

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

  1. L33
    exact hfull_witness_left
12Construct an explicit witnessL34–34

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

  1. L34
    exists x
13Separate the logical casesL35–35

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

  1. L35
    split
14Use earlier factsL36–37

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

  1. L36
    exact hfull_witness_left
  2. L37
    exact hsplit_right

Library-wide reading audit

Original defined command ledger · 37 lines
  1. 0001intro b
  2. 0002intro c
  3. 0003intro n
  4. 0004intro sn
  5. 0005intro hsn
  6. 0006intro hbounded
  7. 0007intro hnotop
  8. 0008rewrite hsn at hbounded
  9. 0009rewrite hsn at hbounded
  10. 0010intro i
  11. 0011intro hi
  12. 0012specialize hbounded i
  13. 0013have hfull : ∃ x. BetaAt(b,c,i,x)Lt(x,S n)
    Exact native replay linehave hfull : exists x. (((exists h. h + S x = S ((S i) * c)) /\ exists q. b = q * S ((S i) * c) + x) /\ exists h. h + S x = S n)
  14. 0014apply hbounded
  15. 0015specialize le_succ (S i)
  16. 0016specialize le_succ n
  17. 0017apply le_succ
  18. 0018exact hi
  19. 0019cases hfull
  20. 0020cases hfull_witness
  21. 0021have hsplit : x = n ∨ Lt(x,n)
    Exact native replay linehave hsplit : x = n \/ exists h. h + S x = n
  22. 0022specialize finite_lt_succ_eq_or_lt n
  23. 0023specialize finite_lt_succ_eq_or_lt x
  24. 0024apply finite_lt_succ_eq_or_lt
  25. 0025exact hfull_witness_right
  26. 0026cases hsplit
  27. 0027exfalso
  28. 0028specialize hnotop i
  29. 0029apply hnotop
  30. 0030exact hi
  31. 0031rewrite <- hsplit_left
  32. 0032rewrite <- hsplit_left
  33. 0033exact hfull_witness_left
  34. 0034exists x
  35. 0035split
  36. 0036exact hfull_witness_left
  37. 0037exact hsplit_right