SK0014

power_product_construct

Two actual k-th power traces construct the power trace of the product of their roots.

Alpha v34 checked-use · first admitted v29 · 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.

For n>1 the exponent gcd and a real beta table classify and witness all positive root degrees. The unit n=1 has a separate uniform certificate for every positive degree. Zero is excluded. NaturalSquarefreeDecomposition is deliberately distinct from the unrelated polynomial definition.

Exact theorem in conservative defined notation

∀ a. ∀ b. ∀ k. ∀ u. ∀ v. Pow(a,k,u)Pow(b,k,v)Pow(a · b,k,u · v)

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

Definition DAG

Actual proof prerequisites

pow_exists · checked external prerequisitepow_mul_base · checked external prerequisitepower_value_eq_transport
Original expanded first-order statement
forall a b k u v. (exists pa_b_pvs_product_first pa_c_pvs_product_first. ((forall pa_i_pvs_product_first_repeat. (exists pa_lt_pvs_product_first_repeat_bound. pa_lt_pvs_product_first_repeat_bound + S pa_i_pvs_product_first_repeat = k) -> (((exists pa_h_pvs_product_first_repeat_decoded. pa_h_pvs_product_first_repeat_decoded + S (a) = S ((S (pa_i_pvs_product_first_repeat)) * pa_c_pvs_product_first)) /\ exists pa_q_pvs_product_first_repeat_decoded. pa_b_pvs_product_first = pa_q_pvs_product_first_repeat_decoded * S ((S (pa_i_pvs_product_first_repeat)) * pa_c_pvs_product_first) + (a)))) /\ (exists pa_u_pvs_product_first_product pa_v_pvs_product_first_product. ((((exists pa_h_pvs_product_first_product_start. pa_h_pvs_product_first_product_start + S (1) = S ((S (0)) * pa_v_pvs_product_first_product)) /\ exists pa_q_pvs_product_first_product_start. pa_u_pvs_product_first_product = pa_q_pvs_product_first_product_start * S ((S (0)) * pa_v_pvs_product_first_product) + (1))) /\ ((((exists pa_h_pvs_product_first_product_terminal. pa_h_pvs_product_first_product_terminal + S (u) = S ((S (k)) * pa_v_pvs_product_first_product)) /\ exists pa_q_pvs_product_first_product_terminal. pa_u_pvs_product_first_product = pa_q_pvs_product_first_product_terminal * S ((S (k)) * pa_v_pvs_product_first_product) + (u))) /\ forall pa_i_pvs_product_first_product. (exists pa_lt_pvs_product_first_product_bound. pa_lt_pvs_product_first_product_bound + S pa_i_pvs_product_first_product = k) -> exists pa_p_pvs_product_first_product pa_r_pvs_product_first_product pa_s_pvs_product_first_product. ((((exists pa_h_pvs_product_first_product_factor. pa_h_pvs_product_first_product_factor + S (pa_p_pvs_product_first_product) = S ((S (pa_i_pvs_product_first_product)) * pa_c_pvs_product_first)) /\ exists pa_q_pvs_product_first_product_factor. pa_b_pvs_product_first = pa_q_pvs_product_first_product_factor * S ((S (pa_i_pvs_product_first_product)) * pa_c_pvs_product_first) + (pa_p_pvs_product_first_product))) /\ ((((exists pa_h_pvs_product_first_product_partial. pa_h_pvs_product_first_product_partial + S (pa_r_pvs_product_first_product) = S ((S (pa_i_pvs_product_first_product)) * pa_v_pvs_product_first_product)) /\ exists pa_q_pvs_product_first_product_partial. pa_u_pvs_product_first_product = pa_q_pvs_product_first_product_partial * S ((S (pa_i_pvs_product_first_product)) * pa_v_pvs_product_first_product) + (pa_r_pvs_product_first_product))) /\ ((((exists pa_h_pvs_product_first_product_successor. pa_h_pvs_product_first_product_successor + S (pa_s_pvs_product_first_product) = S ((S (S pa_i_pvs_product_first_product)) * pa_v_pvs_product_first_product)) /\ exists pa_q_pvs_product_first_product_successor. pa_u_pvs_product_first_product = pa_q_pvs_product_first_product_successor * S ((S (S pa_i_pvs_product_first_product)) * pa_v_pvs_product_first_product) + (pa_s_pvs_product_first_product))) /\ pa_s_pvs_product_first_product = pa_r_pvs_product_first_product * pa_p_pvs_product_first_product)))))))) -> (exists pa_b_pvs_product_second pa_c_pvs_product_second. ((forall pa_i_pvs_product_second_repeat. (exists pa_lt_pvs_product_second_repeat_bound. pa_lt_pvs_product_second_repeat_bound + S pa_i_pvs_product_second_repeat = k) -> (((exists pa_h_pvs_product_second_repeat_decoded. pa_h_pvs_product_second_repeat_decoded + S (b) = S ((S (pa_i_pvs_product_second_repeat)) * pa_c_pvs_product_second)) /\ exists pa_q_pvs_product_second_repeat_decoded. pa_b_pvs_product_second = pa_q_pvs_product_second_repeat_decoded * S ((S (pa_i_pvs_product_second_repeat)) * pa_c_pvs_product_second) + (b)))) /\ (exists pa_u_pvs_product_second_product pa_v_pvs_product_second_product. ((((exists pa_h_pvs_product_second_product_start. pa_h_pvs_product_second_product_start + S (1) = S ((S (0)) * pa_v_pvs_product_second_product)) /\ exists pa_q_pvs_product_second_product_start. pa_u_pvs_product_second_product = pa_q_pvs_product_second_product_start * S ((S (0)) * pa_v_pvs_product_second_product) + (1))) /\ ((((exists pa_h_pvs_product_second_product_terminal. pa_h_pvs_product_second_product_terminal + S (v) = S ((S (k)) * pa_v_pvs_product_second_product)) /\ exists pa_q_pvs_product_second_product_terminal. pa_u_pvs_product_second_product = pa_q_pvs_product_second_product_terminal * S ((S (k)) * pa_v_pvs_product_second_product) + (v))) /\ forall pa_i_pvs_product_second_product. (exists pa_lt_pvs_product_second_product_bound. pa_lt_pvs_product_second_product_bound + S pa_i_pvs_product_second_product = k) -> exists pa_p_pvs_product_second_product pa_r_pvs_product_second_product pa_s_pvs_product_second_product. ((((exists pa_h_pvs_product_second_product_factor. pa_h_pvs_product_second_product_factor + S (pa_p_pvs_product_second_product) = S ((S (pa_i_pvs_product_second_product)) * pa_c_pvs_product_second)) /\ exists pa_q_pvs_product_second_product_factor. pa_b_pvs_product_second = pa_q_pvs_product_second_product_factor * S ((S (pa_i_pvs_product_second_product)) * pa_c_pvs_product_second) + (pa_p_pvs_product_second_product))) /\ ((((exists pa_h_pvs_product_second_product_partial. pa_h_pvs_product_second_product_partial + S (pa_r_pvs_product_second_product) = S ((S (pa_i_pvs_product_second_product)) * pa_v_pvs_product_second_product)) /\ exists pa_q_pvs_product_second_product_partial. pa_u_pvs_product_second_product = pa_q_pvs_product_second_product_partial * S ((S (pa_i_pvs_product_second_product)) * pa_v_pvs_product_second_product) + (pa_r_pvs_product_second_product))) /\ ((((exists pa_h_pvs_product_second_product_successor. pa_h_pvs_product_second_product_successor + S (pa_s_pvs_product_second_product) = S ((S (S pa_i_pvs_product_second_product)) * pa_v_pvs_product_second_product)) /\ exists pa_q_pvs_product_second_product_successor. pa_u_pvs_product_second_product = pa_q_pvs_product_second_product_successor * S ((S (S pa_i_pvs_product_second_product)) * pa_v_pvs_product_second_product) + (pa_s_pvs_product_second_product))) /\ pa_s_pvs_product_second_product = pa_r_pvs_product_second_product * pa_p_pvs_product_second_product)))))))) -> (exists pa_b_pvs_product_constructed pa_c_pvs_product_constructed. ((forall pa_i_pvs_product_constructed_repeat. (exists pa_lt_pvs_product_constructed_repeat_bound. pa_lt_pvs_product_constructed_repeat_bound + S pa_i_pvs_product_constructed_repeat = k) -> (((exists pa_h_pvs_product_constructed_repeat_decoded. pa_h_pvs_product_constructed_repeat_decoded + S (a * b) = S ((S (pa_i_pvs_product_constructed_repeat)) * pa_c_pvs_product_constructed)) /\ exists pa_q_pvs_product_constructed_repeat_decoded. pa_b_pvs_product_constructed = pa_q_pvs_product_constructed_repeat_decoded * S ((S (pa_i_pvs_product_constructed_repeat)) * pa_c_pvs_product_constructed) + (a * b)))) /\ (exists pa_u_pvs_product_constructed_product pa_v_pvs_product_constructed_product. ((((exists pa_h_pvs_product_constructed_product_start. pa_h_pvs_product_constructed_product_start + S (1) = S ((S (0)) * pa_v_pvs_product_constructed_product)) /\ exists pa_q_pvs_product_constructed_product_start. pa_u_pvs_product_constructed_product = pa_q_pvs_product_constructed_product_start * S ((S (0)) * pa_v_pvs_product_constructed_product) + (1))) /\ ((((exists pa_h_pvs_product_constructed_product_terminal. pa_h_pvs_product_constructed_product_terminal + S (u * v) = S ((S (k)) * pa_v_pvs_product_constructed_product)) /\ exists pa_q_pvs_product_constructed_product_terminal. pa_u_pvs_product_constructed_product = pa_q_pvs_product_constructed_product_terminal * S ((S (k)) * pa_v_pvs_product_constructed_product) + (u * v))) /\ forall pa_i_pvs_product_constructed_product. (exists pa_lt_pvs_product_constructed_product_bound. pa_lt_pvs_product_constructed_product_bound + S pa_i_pvs_product_constructed_product = k) -> exists pa_p_pvs_product_constructed_product pa_r_pvs_product_constructed_product pa_s_pvs_product_constructed_product. ((((exists pa_h_pvs_product_constructed_product_factor. pa_h_pvs_product_constructed_product_factor + S (pa_p_pvs_product_constructed_product) = S ((S (pa_i_pvs_product_constructed_product)) * pa_c_pvs_product_constructed)) /\ exists pa_q_pvs_product_constructed_product_factor. pa_b_pvs_product_constructed = pa_q_pvs_product_constructed_product_factor * S ((S (pa_i_pvs_product_constructed_product)) * pa_c_pvs_product_constructed) + (pa_p_pvs_product_constructed_product))) /\ ((((exists pa_h_pvs_product_constructed_product_partial. pa_h_pvs_product_constructed_product_partial + S (pa_r_pvs_product_constructed_product) = S ((S (pa_i_pvs_product_constructed_product)) * pa_v_pvs_product_constructed_product)) /\ exists pa_q_pvs_product_constructed_product_partial. pa_u_pvs_product_constructed_product = pa_q_pvs_product_constructed_product_partial * S ((S (pa_i_pvs_product_constructed_product)) * pa_v_pvs_product_constructed_product) + (pa_r_pvs_product_constructed_product))) /\ ((((exists pa_h_pvs_product_constructed_product_successor. pa_h_pvs_product_constructed_product_successor + S (pa_s_pvs_product_constructed_product) = S ((S (S pa_i_pvs_product_constructed_product)) * pa_v_pvs_product_constructed_product)) /\ exists pa_q_pvs_product_constructed_product_successor. pa_u_pvs_product_constructed_product = pa_q_pvs_product_constructed_product_successor * S ((S (S pa_i_pvs_product_constructed_product)) * pa_v_pvs_product_constructed_product) + (pa_s_pvs_product_constructed_product))) /\ pa_s_pvs_product_constructed_product = pa_r_pvs_product_constructed_product * pa_p_pvs_product_constructed_product))))))))

Complete tactic proof in conservative notation

All 28 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

28 script commands · 5 reading checkpoints · 1 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 (1)
01Fix variables and assumptionsL1–7

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

  1. L1
    intro a
  2. L2
    intro b
  3. L3
    intro k
  4. L4
    intro u
  5. L5
    intro v
  6. L6
    intro hfirst
  7. L7
    intro hsecond
02Establish hexL8–11

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

  1. L8
    have hex : ∃ z. Pow(a · b,k,z)Definitions: Pow(a · b,k,z)Original native command in the exact edition
  2. L9
    specialize pow_exists (a * b)
  3. L10
    specialize pow_exists (k)
  4. L11
    apply pow_exists
03Separate the logical casesL12–12

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

  1. L12
    cases hex
04Use earlier factsL13–22

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

  1. L13
    specialize power_value_eq_transport (a * b)
  2. L14
    specialize power_value_eq_transport (k)
  3. L15
    specialize power_value_eq_transport (x)
  4. L16
    specialize power_value_eq_transport (u * v)
  5. L17
    apply power_value_eq_transport
  6. L18
    specialize pow_mul_base (a)
  7. L19
    specialize pow_mul_base (b)
  8. L20
    specialize pow_mul_base (k)
  9. L21
    specialize pow_mul_base (u)
  10. L22
    specialize pow_mul_base (v)
05Use earlier factsL23–28

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

  1. L23
    specialize pow_mul_base (x)
  2. L24
    apply pow_mul_base
  3. L25
    exact hfirst
  4. L26
    exact hsecond
  5. L27
    exact hex_witness
  6. L28
    exact hex_witness

Library-wide reading audit

Original defined command ledger · 28 lines
  1. 0001intro a
  2. 0002intro b
  3. 0003intro k
  4. 0004intro u
  5. 0005intro v
  6. 0006intro hfirst
  7. 0007intro hsecond
  8. 0008have hex : ∃ z. Pow(a · b,k,z)
  9. 0009specialize pow_exists (a * b)
  10. 0010specialize pow_exists (k)
  11. 0011apply pow_exists
  12. 0012cases hex
  13. 0013specialize power_value_eq_transport (a * b)
  14. 0014specialize power_value_eq_transport (k)
  15. 0015specialize power_value_eq_transport (x)
  16. 0016specialize power_value_eq_transport (u * v)
  17. 0017apply power_value_eq_transport
  18. 0018specialize pow_mul_base (a)
  19. 0019specialize pow_mul_base (b)
  20. 0020specialize pow_mul_base (k)
  21. 0021specialize pow_mul_base (u)
  22. 0022specialize pow_mul_base (v)
  23. 0023specialize pow_mul_base (x)
  24. 0024apply pow_mul_base
  25. 0025exact hfirst
  26. 0026exact hsecond
  27. 0027exact hex_witness
  28. 0028exact hex_witness