PA005V

pow_two_from_one_successor

Stable checked-use theorem · independently closed

A successor of exponent one gives the relational square.

Exact expanded 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

Structural proof guide

Generated structural guide

A successor of exponent one gives the relational square.

Use the direct prerequisites pow_successor_decompose, pow_one as previously established PA formulas.

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

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.

  1. 0001intro a
  2. 0002intro o
  3. 0003intro e
  4. 0004intro n
  5. 0005intro ho
  6. 0006intro he
  7. 0007intro hpow
  8. 0008have 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