PA005T · theorem

pow_one_from_zero_successor

Stable checked-use theorem · independently closed

A successor of a zero exponent gives the relational first power.

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. ∀ z. ∀ e. ∀ n. z = 0 → e = S z → Pow(a,e,n) → n = a

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

1 occurrences

In local proof propositions

1 occurrences

Exact expanded native-PA statement
forall a z e n. z = 0 -> e = S z -> (exists ff_b_one_carrier ff_c_one_carrier. ((forall ff_i_one_carrier_repeat. (exists ff_lt_one_carrier_repeat_bound. ff_lt_one_carrier_repeat_bound + S ff_i_one_carrier_repeat = e) -> (((exists ff_h_one_carrier_repeat_decoded. ff_h_one_carrier_repeat_decoded + S (a) = S ((S (ff_i_one_carrier_repeat)) * ff_c_one_carrier)) /\ exists ff_q_one_carrier_repeat_decoded. ff_b_one_carrier = ff_q_one_carrier_repeat_decoded * S ((S (ff_i_one_carrier_repeat)) * ff_c_one_carrier) + (a)))) /\ (exists ff_u_one_carrier_product ff_v_one_carrier_product. ((((exists ff_h_one_carrier_product_start. ff_h_one_carrier_product_start + S (1) = S ((S (0)) * ff_v_one_carrier_product)) /\ exists ff_q_one_carrier_product_start. ff_u_one_carrier_product = ff_q_one_carrier_product_start * S ((S (0)) * ff_v_one_carrier_product) + (1))) /\ ((((exists ff_h_one_carrier_product_terminal. ff_h_one_carrier_product_terminal + S (n) = S ((S (e)) * ff_v_one_carrier_product)) /\ exists ff_q_one_carrier_product_terminal. ff_u_one_carrier_product = ff_q_one_carrier_product_terminal * S ((S (e)) * ff_v_one_carrier_product) + (n))) /\ forall ff_i_one_carrier_product. (exists ff_lt_one_carrier_product_bound. ff_lt_one_carrier_product_bound + S ff_i_one_carrier_product = e) -> exists ff_p_one_carrier_product ff_r_one_carrier_product ff_s_one_carrier_product. ((((exists ff_h_one_carrier_product_factor. ff_h_one_carrier_product_factor + S (ff_p_one_carrier_product) = S ((S (ff_i_one_carrier_product)) * ff_c_one_carrier)) /\ exists ff_q_one_carrier_product_factor. ff_b_one_carrier = ff_q_one_carrier_product_factor * S ((S (ff_i_one_carrier_product)) * ff_c_one_carrier) + (ff_p_one_carrier_product))) /\ ((((exists ff_h_one_carrier_product_partial. ff_h_one_carrier_product_partial + S (ff_r_one_carrier_product) = S ((S (ff_i_one_carrier_product)) * ff_v_one_carrier_product)) /\ exists ff_q_one_carrier_product_partial. ff_u_one_carrier_product = ff_q_one_carrier_product_partial * S ((S (ff_i_one_carrier_product)) * ff_v_one_carrier_product) + (ff_r_one_carrier_product))) /\ ((((exists ff_h_one_carrier_product_successor. ff_h_one_carrier_product_successor + S (ff_s_one_carrier_product) = S ((S (S ff_i_one_carrier_product)) * ff_v_one_carrier_product)) /\ exists ff_q_one_carrier_product_successor. ff_u_one_carrier_product = ff_q_one_carrier_product_successor * S ((S (S ff_i_one_carrier_product)) * ff_v_one_carrier_product) + (ff_s_one_carrier_product))) /\ ff_s_one_carrier_product = ff_r_one_carrier_product * ff_p_one_carrier_product)))))))) -> n = a

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

29 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 (3)
01Fix variables and assumptionsL1–7

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

  1. L1
    intro a
  2. L2
    intro z
  3. L3
    intro e
  4. L4
    intro n
  5. L5
    intro hz
  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,z,r) ∧ n = r · aDefinitions: Pow(a,z,r)Original native command in the exact edition
  2. L9
    specialize pow_successor_decompose a
  3. L10
    specialize pow_successor_decompose z
  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 zero.

  1. L18
    have hr : x = 1
  2. L19
    specialize pow_zero a
  3. L20
    specialize pow_zero z
  4. L21
    specialize pow_zero x
  5. L22
    apply pow_zero
  6. L23
    exact hz
  7. L24
    exact hstep_witness_left
  8. L25
    trans x * a
  9. L26
    exact hstep_witness_right
  10. L27
    rewrite hr
05Use earlier factsL28–29

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

  1. L28
    specialize one_mul a
  2. L29
    exact one_mul

Library-wide reading audit

Original defined command ledger · 29 lines
  1. 0001intro a
  2. 0002intro z
  3. 0003intro e
  4. 0004intro n
  5. 0005intro hz
  6. 0006intro he
  7. 0007intro hpow
  8. 0008have hstep : ∃ r. Pow(a,z,r) ∧ n = r · a
    Exact native replay linehave hstep : exists r. (exists ff_b_one_predecessor ff_c_one_predecessor. ((forall ff_i_one_predecessor_repeat. (exists ff_lt_one_predecessor_repeat_bound. ff_lt_one_predecessor_repeat_bound + S ff_i_one_predecessor_repeat = z) -> (((exists ff_h_one_predecessor_repeat_decoded. ff_h_one_predecessor_repeat_decoded + S (a) = S ((S (ff_i_one_predecessor_repeat)) * ff_c_one_predecessor)) /\ exists ff_q_one_predecessor_repeat_decoded. ff_b_one_predecessor = ff_q_one_predecessor_repeat_decoded * S ((S (ff_i_one_predecessor_repeat)) * ff_c_one_predecessor) + (a)))) /\ (exists ff_u_one_predecessor_product ff_v_one_predecessor_product. ((((exists ff_h_one_predecessor_product_start. ff_h_one_predecessor_product_start + S (1) = S ((S (0)) * ff_v_one_predecessor_product)) /\ exists ff_q_one_predecessor_product_start. ff_u_one_predecessor_product = ff_q_one_predecessor_product_start * S ((S (0)) * ff_v_one_predecessor_product) + (1))) /\ ((((exists ff_h_one_predecessor_product_terminal. ff_h_one_predecessor_product_terminal + S (r) = S ((S (z)) * ff_v_one_predecessor_product)) /\ exists ff_q_one_predecessor_product_terminal. ff_u_one_predecessor_product = ff_q_one_predecessor_product_terminal * S ((S (z)) * ff_v_one_predecessor_product) + (r))) /\ forall ff_i_one_predecessor_product. (exists ff_lt_one_predecessor_product_bound. ff_lt_one_predecessor_product_bound + S ff_i_one_predecessor_product = z) -> exists ff_p_one_predecessor_product ff_r_one_predecessor_product ff_s_one_predecessor_product. ((((exists ff_h_one_predecessor_product_factor. ff_h_one_predecessor_product_factor + S (ff_p_one_predecessor_product) = S ((S (ff_i_one_predecessor_product)) * ff_c_one_predecessor)) /\ exists ff_q_one_predecessor_product_factor. ff_b_one_predecessor = ff_q_one_predecessor_product_factor * S ((S (ff_i_one_predecessor_product)) * ff_c_one_predecessor) + (ff_p_one_predecessor_product))) /\ ((((exists ff_h_one_predecessor_product_partial. ff_h_one_predecessor_product_partial + S (ff_r_one_predecessor_product) = S ((S (ff_i_one_predecessor_product)) * ff_v_one_predecessor_product)) /\ exists ff_q_one_predecessor_product_partial. ff_u_one_predecessor_product = ff_q_one_predecessor_product_partial * S ((S (ff_i_one_predecessor_product)) * ff_v_one_predecessor_product) + (ff_r_one_predecessor_product))) /\ ((((exists ff_h_one_predecessor_product_successor. ff_h_one_predecessor_product_successor + S (ff_s_one_predecessor_product) = S ((S (S ff_i_one_predecessor_product)) * ff_v_one_predecessor_product)) /\ exists ff_q_one_predecessor_product_successor. ff_u_one_predecessor_product = ff_q_one_predecessor_product_successor * S ((S (S ff_i_one_predecessor_product)) * ff_v_one_predecessor_product) + (ff_s_one_predecessor_product))) /\ ff_s_one_predecessor_product = ff_r_one_predecessor_product * ff_p_one_predecessor_product)))))))) /\ n = r * a
  9. 0009specialize pow_successor_decompose a
  10. 0010specialize pow_successor_decompose z
  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 = 1
  19. 0019specialize pow_zero a
  20. 0020specialize pow_zero z
  21. 0021specialize pow_zero x
  22. 0022apply pow_zero
  23. 0023exact hz
  24. 0024exact hstep_witness_left
  25. 0025trans x * a
  26. 0026exact hstep_witness_right
  27. 0027rewrite hr
  28. 0028specialize one_mul a
  29. 0029exact one_mul