BT009V · Bertrand theorem

pow_two_from_one_successor

Stable checked-use theorem · independently kernel verified

A successor of exponent one gives the relational square.

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

∀ a. ∀ o. ∀ e. ∀ n. o = 1 → e = S o → Pow(a,e,n) → n = a · a

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

1 occurrences

In local proof propositions

1 occurrences

Exact expanded native-PA statement
forall a o e n. o = 1 -> e = S o -> (exists ff_b_two_carrier ff_c_two_carrier. ((forall ff_i_two_carrier_repeat. (exists ff_lt_two_carrier_repeat_bound. ff_lt_two_carrier_repeat_bound + S ff_i_two_carrier_repeat = e) -> (((exists ff_h_two_carrier_repeat_decoded. ff_h_two_carrier_repeat_decoded + S (a) = S ((S (ff_i_two_carrier_repeat)) * ff_c_two_carrier)) /\ exists ff_q_two_carrier_repeat_decoded. ff_b_two_carrier = ff_q_two_carrier_repeat_decoded * S ((S (ff_i_two_carrier_repeat)) * ff_c_two_carrier) + (a)))) /\ (exists ff_u_two_carrier_product ff_v_two_carrier_product. ((((exists ff_h_two_carrier_product_start. ff_h_two_carrier_product_start + S (1) = S ((S (0)) * ff_v_two_carrier_product)) /\ exists ff_q_two_carrier_product_start. ff_u_two_carrier_product = ff_q_two_carrier_product_start * S ((S (0)) * ff_v_two_carrier_product) + (1))) /\ ((((exists ff_h_two_carrier_product_terminal. ff_h_two_carrier_product_terminal + S (n) = S ((S (e)) * ff_v_two_carrier_product)) /\ exists ff_q_two_carrier_product_terminal. ff_u_two_carrier_product = ff_q_two_carrier_product_terminal * S ((S (e)) * ff_v_two_carrier_product) + (n))) /\ forall ff_i_two_carrier_product. (exists ff_lt_two_carrier_product_bound. ff_lt_two_carrier_product_bound + S ff_i_two_carrier_product = e) -> exists ff_p_two_carrier_product ff_r_two_carrier_product ff_s_two_carrier_product. ((((exists ff_h_two_carrier_product_factor. ff_h_two_carrier_product_factor + S (ff_p_two_carrier_product) = S ((S (ff_i_two_carrier_product)) * ff_c_two_carrier)) /\ exists ff_q_two_carrier_product_factor. ff_b_two_carrier = ff_q_two_carrier_product_factor * S ((S (ff_i_two_carrier_product)) * ff_c_two_carrier) + (ff_p_two_carrier_product))) /\ ((((exists ff_h_two_carrier_product_partial. ff_h_two_carrier_product_partial + S (ff_r_two_carrier_product) = S ((S (ff_i_two_carrier_product)) * ff_v_two_carrier_product)) /\ exists ff_q_two_carrier_product_partial. ff_u_two_carrier_product = ff_q_two_carrier_product_partial * S ((S (ff_i_two_carrier_product)) * ff_v_two_carrier_product) + (ff_r_two_carrier_product))) /\ ((((exists ff_h_two_carrier_product_successor. ff_h_two_carrier_product_successor + S (ff_s_two_carrier_product) = S ((S (S ff_i_two_carrier_product)) * ff_v_two_carrier_product)) /\ exists ff_q_two_carrier_product_successor. ff_u_two_carrier_product = ff_q_two_carrier_product_successor * S ((S (S ff_i_two_carrier_product)) * ff_v_two_carrier_product) + (ff_s_two_carrier_product))) /\ ff_s_two_carrier_product = ff_r_two_carrier_product * ff_p_two_carrier_product)))))))) -> n = a * a

Proof neighborhood

Direct theorem prerequisites

Direct 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

28 script commands · 5 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 a
  2. L2
    intro o
  3. L3
    intro e
  4. L4
    intro n
  5. L5
    intro ho
  6. L6
    intro he
  7. L7
    intro hpow
02Establish hstepL8–15

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

  1. L8
    have hstep : ∃ r. Pow(a,o,r) ∧ n = r · aDefinitions: Pow(a,o,r)Original native command in the exact edition
  2. L9
    specialize pow_successor_decompose a
  3. L10
    specialize pow_successor_decompose o
  4. L11
    specialize pow_successor_decompose e
  5. L12
    specialize pow_successor_decompose n
  6. L13
    apply pow_successor_decompose
  7. L14
    exact he
  8. L15
    exact hpow
03Separate the logical casesL16–17

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

  1. L16
    cases hstep
  2. L17
    cases hstep_witness
04Establish hrL18–27

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

  1. L18
    have hr : x = a
  2. L19
    specialize pow_one a
  3. L20
    specialize pow_one o
  4. L21
    specialize pow_one x
  5. L22
    apply pow_one
  6. L23
    exact ho
  7. L24
    exact hstep_witness_left
  8. L25
    trans x * a
  9. L26
    exact hstep_witness_right
  10. L27
    rewrite hr
05Calculate and transport equalitiesL28–28

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

  1. L28
    refl

Library-wide reading audit

Original defined command ledger · 28 lines
  1. 0001intro a
  2. 0002intro o
  3. 0003intro e
  4. 0004intro n
  5. 0005intro ho
  6. 0006intro he
  7. 0007intro hpow
  8. 0008have hstep : ∃ r. Pow(a,o,r) ∧ n = r · a
    Exact native replay linehave hstep : exists r. (exists ff_b_two_predecessor ff_c_two_predecessor. ((forall ff_i_two_predecessor_repeat. (exists ff_lt_two_predecessor_repeat_bound. ff_lt_two_predecessor_repeat_bound + S ff_i_two_predecessor_repeat = o) -> (((exists ff_h_two_predecessor_repeat_decoded. ff_h_two_predecessor_repeat_decoded + S (a) = S ((S (ff_i_two_predecessor_repeat)) * ff_c_two_predecessor)) /\ exists ff_q_two_predecessor_repeat_decoded. ff_b_two_predecessor = ff_q_two_predecessor_repeat_decoded * S ((S (ff_i_two_predecessor_repeat)) * ff_c_two_predecessor) + (a)))) /\ (exists ff_u_two_predecessor_product ff_v_two_predecessor_product. ((((exists ff_h_two_predecessor_product_start. ff_h_two_predecessor_product_start + S (1) = S ((S (0)) * ff_v_two_predecessor_product)) /\ exists ff_q_two_predecessor_product_start. ff_u_two_predecessor_product = ff_q_two_predecessor_product_start * S ((S (0)) * ff_v_two_predecessor_product) + (1))) /\ ((((exists ff_h_two_predecessor_product_terminal. ff_h_two_predecessor_product_terminal + S (r) = S ((S (o)) * ff_v_two_predecessor_product)) /\ exists ff_q_two_predecessor_product_terminal. ff_u_two_predecessor_product = ff_q_two_predecessor_product_terminal * S ((S (o)) * ff_v_two_predecessor_product) + (r))) /\ forall ff_i_two_predecessor_product. (exists ff_lt_two_predecessor_product_bound. ff_lt_two_predecessor_product_bound + S ff_i_two_predecessor_product = o) -> exists ff_p_two_predecessor_product ff_r_two_predecessor_product ff_s_two_predecessor_product. ((((exists ff_h_two_predecessor_product_factor. ff_h_two_predecessor_product_factor + S (ff_p_two_predecessor_product) = S ((S (ff_i_two_predecessor_product)) * ff_c_two_predecessor)) /\ exists ff_q_two_predecessor_product_factor. ff_b_two_predecessor = ff_q_two_predecessor_product_factor * S ((S (ff_i_two_predecessor_product)) * ff_c_two_predecessor) + (ff_p_two_predecessor_product))) /\ ((((exists ff_h_two_predecessor_product_partial. ff_h_two_predecessor_product_partial + S (ff_r_two_predecessor_product) = S ((S (ff_i_two_predecessor_product)) * ff_v_two_predecessor_product)) /\ exists ff_q_two_predecessor_product_partial. ff_u_two_predecessor_product = ff_q_two_predecessor_product_partial * S ((S (ff_i_two_predecessor_product)) * ff_v_two_predecessor_product) + (ff_r_two_predecessor_product))) /\ ((((exists ff_h_two_predecessor_product_successor. ff_h_two_predecessor_product_successor + S (ff_s_two_predecessor_product) = S ((S (S ff_i_two_predecessor_product)) * ff_v_two_predecessor_product)) /\ exists ff_q_two_predecessor_product_successor. ff_u_two_predecessor_product = ff_q_two_predecessor_product_successor * S ((S (S ff_i_two_predecessor_product)) * ff_v_two_predecessor_product) + (ff_s_two_predecessor_product))) /\ ff_s_two_predecessor_product = ff_r_two_predecessor_product * ff_p_two_predecessor_product)))))))) /\ n = r * a
  9. 0009specialize pow_successor_decompose a
  10. 0010specialize pow_successor_decompose o
  11. 0011specialize pow_successor_decompose e
  12. 0012specialize pow_successor_decompose n
  13. 0013apply pow_successor_decompose
  14. 0014exact he
  15. 0015exact hpow
  16. 0016cases hstep
  17. 0017cases hstep_witness
  18. 0018have hr : x = a
  19. 0019specialize pow_one a
  20. 0020specialize pow_one o
  21. 0021specialize pow_one x
  22. 0022apply pow_one
  23. 0023exact ho
  24. 0024exact hstep_witness_left
  25. 0025trans x * a
  26. 0026exact hstep_witness_right
  27. 0027rewrite hr
  28. 0028refl