PA007J

beta_sign_factor_product_power_exists

Alpha v16 checked-use theorem · independently closed; not Stable

For p=S r, the recoded sign product exists and equals the relational power r^e.

Exact expanded PA statement

forall p r sb sc l e. p = S r -> (((exists ff_u_recode_count_sum ff_v_recode_count_sum. ((((exists ff_h_recode_count_sum_start. ff_h_recode_count_sum_start + S (0) = S ((S (0)) * ff_v_recode_count_sum)) /\ exists ff_q_recode_count_sum_start. ff_u_recode_count_sum = ff_q_recode_count_sum_start * S ((S (0)) * ff_v_recode_count_sum) + (0))) /\ ((((exists ff_h_recode_count_sum_terminal. ff_h_recode_count_sum_terminal + S (e) = S ((S (l)) * ff_v_recode_count_sum)) /\ exists ff_q_recode_count_sum_terminal. ff_u_recode_count_sum = ff_q_recode_count_sum_terminal * S ((S (l)) * ff_v_recode_count_sum) + (e))) /\ forall ff_i_recode_count_sum. (exists ff_lt_recode_count_sum_bound. ff_lt_recode_count_sum_bound + S ff_i_recode_count_sum = l) -> exists ff_a_recode_count_sum ff_r_recode_count_sum ff_s_recode_count_sum. ((((exists ff_h_recode_count_sum_summand. ff_h_recode_count_sum_summand + S (ff_a_recode_count_sum) = S ((S (ff_i_recode_count_sum)) * sc)) /\ exists ff_q_recode_count_sum_summand. sb = ff_q_recode_count_sum_summand * S ((S (ff_i_recode_count_sum)) * sc) + (ff_a_recode_count_sum))) /\ ((((exists ff_h_recode_count_sum_partial. ff_h_recode_count_sum_partial + S (ff_r_recode_count_sum) = S ((S (ff_i_recode_count_sum)) * ff_v_recode_count_sum)) /\ exists ff_q_recode_count_sum_partial. ff_u_recode_count_sum = ff_q_recode_count_sum_partial * S ((S (ff_i_recode_count_sum)) * ff_v_recode_count_sum) + (ff_r_recode_count_sum))) /\ ((((exists ff_h_recode_count_sum_successor. ff_h_recode_count_sum_successor + S (ff_s_recode_count_sum) = S ((S (S ff_i_recode_count_sum)) * ff_v_recode_count_sum)) /\ exists ff_q_recode_count_sum_successor. ff_u_recode_count_sum = ff_q_recode_count_sum_successor * S ((S (S ff_i_recode_count_sum)) * ff_v_recode_count_sum) + (ff_s_recode_count_sum))) /\ ff_s_recode_count_sum = ff_r_recode_count_sum + ff_a_recode_count_sum)))))) /\ (forall ff_i_recode_count_bits. (exists ff_lt_recode_count_bits_bound. ff_lt_recode_count_bits_bound + S ff_i_recode_count_bits = l) -> exists ff_bit_recode_count_bits. ((((exists ff_h_recode_count_bits_decoded. ff_h_recode_count_bits_decoded + S (ff_bit_recode_count_bits) = S ((S (ff_i_recode_count_bits)) * sc)) /\ exists ff_q_recode_count_bits_decoded. sb = ff_q_recode_count_bits_decoded * S ((S (ff_i_recode_count_bits)) * sc) + (ff_bit_recode_count_bits))) /\ (ff_bit_recode_count_bits = 0 \/ ff_bit_recode_count_bits = 1))))) -> (exists fb fc F R. ((forall gspf_index_recode_endpoint_signs gspf_bit_recode_endpoint_signs. (exists gsp_lt_gap_recode_endpoint_signs_bound. gsp_lt_gap_recode_endpoint_signs_bound + S gspf_index_recode_endpoint_signs = l) -> (((exists ff_h_gspf_recode_endpoint_signs_bit. ff_h_gspf_recode_endpoint_signs_bit + S (gspf_bit_recode_endpoint_signs) = S ((S (gspf_index_recode_endpoint_signs)) * sc)) /\ exists ff_q_gspf_recode_endpoint_signs_bit. sb = ff_q_gspf_recode_endpoint_signs_bit * S ((S (gspf_index_recode_endpoint_signs)) * sc) + (gspf_bit_recode_endpoint_signs))) -> (((gspf_bit_recode_endpoint_signs = 0) /\ (((exists gsp_beta_height_gspf_recode_endpoint_signs_one. gsp_beta_height_gspf_recode_endpoint_signs_one + S (1) = S ((S (gspf_index_recode_endpoint_signs)) * fc)) /\ exists gsp_beta_quotient_gspf_recode_endpoint_signs_one. fb = gsp_beta_quotient_gspf_recode_endpoint_signs_one * S ((S (gspf_index_recode_endpoint_signs)) * fc) + (1)))) \/ ((gspf_bit_recode_endpoint_signs = 1) /\ (((exists ff_h_gspf_recode_endpoint_signs_predecessor. ff_h_gspf_recode_endpoint_signs_predecessor + S (r) = S ((S (gspf_index_recode_endpoint_signs)) * fc)) /\ exists ff_q_gspf_recode_endpoint_signs_predecessor. fb = ff_q_gspf_recode_endpoint_signs_predecessor * S ((S (gspf_index_recode_endpoint_signs)) * fc) + (r)))))) /\ ((exists ff_u_recode_endpoint_product ff_v_recode_endpoint_product. ((((exists ff_h_recode_endpoint_product_start. ff_h_recode_endpoint_product_start + S (1) = S ((S (0)) * ff_v_recode_endpoint_product)) /\ exists ff_q_recode_endpoint_product_start. ff_u_recode_endpoint_product = ff_q_recode_endpoint_product_start * S ((S (0)) * ff_v_recode_endpoint_product) + (1))) /\ ((((exists ff_h_recode_endpoint_product_terminal. ff_h_recode_endpoint_product_terminal + S (F) = S ((S (l)) * ff_v_recode_endpoint_product)) /\ exists ff_q_recode_endpoint_product_terminal. ff_u_recode_endpoint_product = ff_q_recode_endpoint_product_terminal * S ((S (l)) * ff_v_recode_endpoint_product) + (F))) /\ forall ff_i_recode_endpoint_product. (exists ff_lt_recode_endpoint_product_bound. ff_lt_recode_endpoint_product_bound + S ff_i_recode_endpoint_product = l) -> exists ff_p_recode_endpoint_product ff_r_recode_endpoint_product ff_s_recode_endpoint_product. ((((exists ff_h_recode_endpoint_product_factor. ff_h_recode_endpoint_product_factor + S (ff_p_recode_endpoint_product) = S ((S (ff_i_recode_endpoint_product)) * fc)) /\ exists ff_q_recode_endpoint_product_factor. fb = ff_q_recode_endpoint_product_factor * S ((S (ff_i_recode_endpoint_product)) * fc) + (ff_p_recode_endpoint_product))) /\ ((((exists ff_h_recode_endpoint_product_partial. ff_h_recode_endpoint_product_partial + S (ff_r_recode_endpoint_product) = S ((S (ff_i_recode_endpoint_product)) * ff_v_recode_endpoint_product)) /\ exists ff_q_recode_endpoint_product_partial. ff_u_recode_endpoint_product = ff_q_recode_endpoint_product_partial * S ((S (ff_i_recode_endpoint_product)) * ff_v_recode_endpoint_product) + (ff_r_recode_endpoint_product))) /\ ((((exists ff_h_recode_endpoint_product_successor. ff_h_recode_endpoint_product_successor + S (ff_s_recode_endpoint_product) = S ((S (S ff_i_recode_endpoint_product)) * ff_v_recode_endpoint_product)) /\ exists ff_q_recode_endpoint_product_successor. ff_u_recode_endpoint_product = ff_q_recode_endpoint_product_successor * S ((S (S ff_i_recode_endpoint_product)) * ff_v_recode_endpoint_product) + (ff_s_recode_endpoint_product))) /\ ff_s_recode_endpoint_product = ff_r_recode_endpoint_product * ff_p_recode_endpoint_product)))))) /\ ((exists ff_b_recode_endpoint_power ff_c_recode_endpoint_power. ((forall ff_i_recode_endpoint_power_repeat. (exists ff_lt_recode_endpoint_power_repeat_bound. ff_lt_recode_endpoint_power_repeat_bound + S ff_i_recode_endpoint_power_repeat = e) -> (((exists ff_h_recode_endpoint_power_repeat_decoded. ff_h_recode_endpoint_power_repeat_decoded + S (r) = S ((S (ff_i_recode_endpoint_power_repeat)) * ff_c_recode_endpoint_power)) /\ exists ff_q_recode_endpoint_power_repeat_decoded. ff_b_recode_endpoint_power = ff_q_recode_endpoint_power_repeat_decoded * S ((S (ff_i_recode_endpoint_power_repeat)) * ff_c_recode_endpoint_power) + (r)))) /\ (exists ff_u_recode_endpoint_power_product ff_v_recode_endpoint_power_product. ((((exists ff_h_recode_endpoint_power_product_start. ff_h_recode_endpoint_power_product_start + S (1) = S ((S (0)) * ff_v_recode_endpoint_power_product)) /\ exists ff_q_recode_endpoint_power_product_start. ff_u_recode_endpoint_power_product = ff_q_recode_endpoint_power_product_start * S ((S (0)) * ff_v_recode_endpoint_power_product) + (1))) /\ ((((exists ff_h_recode_endpoint_power_product_terminal. ff_h_recode_endpoint_power_product_terminal + S (R) = S ((S (e)) * ff_v_recode_endpoint_power_product)) /\ exists ff_q_recode_endpoint_power_product_terminal. ff_u_recode_endpoint_power_product = ff_q_recode_endpoint_power_product_terminal * S ((S (e)) * ff_v_recode_endpoint_power_product) + (R))) /\ forall ff_i_recode_endpoint_power_product. (exists ff_lt_recode_endpoint_power_product_bound. ff_lt_recode_endpoint_power_product_bound + S ff_i_recode_endpoint_power_product = e) -> exists ff_p_recode_endpoint_power_product ff_r_recode_endpoint_power_product ff_s_recode_endpoint_power_product. ((((exists ff_h_recode_endpoint_power_product_factor. ff_h_recode_endpoint_power_product_factor + S (ff_p_recode_endpoint_power_product) = S ((S (ff_i_recode_endpoint_power_product)) * ff_c_recode_endpoint_power)) /\ exists ff_q_recode_endpoint_power_product_factor. ff_b_recode_endpoint_power = ff_q_recode_endpoint_power_product_factor * S ((S (ff_i_recode_endpoint_power_product)) * ff_c_recode_endpoint_power) + (ff_p_recode_endpoint_power_product))) /\ ((((exists ff_h_recode_endpoint_power_product_partial. ff_h_recode_endpoint_power_product_partial + S (ff_r_recode_endpoint_power_product) = S ((S (ff_i_recode_endpoint_power_product)) * ff_v_recode_endpoint_power_product)) /\ exists ff_q_recode_endpoint_power_product_partial. ff_u_recode_endpoint_power_product = ff_q_recode_endpoint_power_product_partial * S ((S (ff_i_recode_endpoint_power_product)) * ff_v_recode_endpoint_power_product) + (ff_r_recode_endpoint_power_product))) /\ ((((exists ff_h_recode_endpoint_power_product_successor. ff_h_recode_endpoint_power_product_successor + S (ff_s_recode_endpoint_power_product) = S ((S (S ff_i_recode_endpoint_power_product)) * ff_v_recode_endpoint_power_product)) /\ exists ff_q_recode_endpoint_power_product_successor. ff_u_recode_endpoint_power_product = ff_q_recode_endpoint_power_product_successor * S ((S (S ff_i_recode_endpoint_power_product)) * ff_v_recode_endpoint_power_product) + (ff_s_recode_endpoint_power_product))) /\ ff_s_recode_endpoint_power_product = ff_r_recode_endpoint_power_product * ff_p_recode_endpoint_power_product)))))))) /\ F = R))))

Structural proof guide

Generated structural guide

For p=S r, the recoded sign product exists and equals the relational power r^e.

Use the direct prerequisites beta_sign_factor_prefix_exists, beta_product_exists, pow_exists, beta_sign_factor_product_power as previously established PA formulas.

The proof proceeds by case analysis (4), intermediate claims (4).

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 Alpha-v16 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.

  1. 0001intro p
  2. 0002intro r
  3. 0003intro sb
  4. 0004intro sc
  5. 0005intro l
  6. 0006intro e
  7. 0007intro hp
  8. 0008intro hcount
  9. 0009have hsigns_exists : exists fb fc. (forall gspf_index_recode_endpoint_signs_exists gspf_bit_recode_endpoint_signs_exists. (exists gsp_lt_gap_recode_endpoint_signs_exists_bound. gsp_lt_gap_recode_endpoint_signs_exists_bound + S gspf_index_recode_endpoint_signs_exists = l) -> (((exists ff_h_gspf_recode_endpoint_signs_exists_bit. ff_h_gspf_recode_endpoint_signs_exists_bit + S (gspf_bit_recode_endpoint_signs_exists) = S ((S (gspf_index_recode_endpoint_signs_exists)) * sc)) /\ exists ff_q_gspf_recode_endpoint_signs_exists_bit. sb = ff_q_gspf_recode_endpoint_signs_exists_bit * S ((S (gspf_index_recode_endpoint_signs_exists)) * sc) + (gspf_bit_recode_endpoint_signs_exists))) -> (((gspf_bit_recode_endpoint_signs_exists = 0) /\ (((exists gsp_beta_height_gspf_recode_endpoint_signs_exists_one. gsp_beta_height_gspf_recode_endpoint_signs_exists_one + S (1) = S ((S (gspf_index_recode_endpoint_signs_exists)) * fc)) /\ exists gsp_beta_quotient_gspf_recode_endpoint_signs_exists_one. fb = gsp_beta_quotient_gspf_recode_endpoint_signs_exists_one * S ((S (gspf_index_recode_endpoint_signs_exists)) * fc) + (1)))) \/ ((gspf_bit_recode_endpoint_signs_exists = 1) /\ (((exists ff_h_gspf_recode_endpoint_signs_exists_predecessor. ff_h_gspf_recode_endpoint_signs_exists_predecessor + S (r) = S ((S (gspf_index_recode_endpoint_signs_exists)) * fc)) /\ exists ff_q_gspf_recode_endpoint_signs_exists_predecessor. fb = ff_q_gspf_recode_endpoint_signs_exists_predecessor * S ((S (gspf_index_recode_endpoint_signs_exists)) * fc) + (r))))))
  10. 0010specialize beta_sign_factor_prefix_exists sb
  11. 0011specialize beta_sign_factor_prefix_exists sc
  12. 0012specialize beta_sign_factor_prefix_exists r
  13. 0013specialize beta_sign_factor_prefix_exists l
  14. 0014specialize beta_sign_factor_prefix_exists e
  15. 0015apply beta_sign_factor_prefix_exists
  16. 0016exact hcount
  17. 0017cases hsigns_exists
  18. 0018cases hsigns_exists_witness
  19. 0019have hproduct_exists : exists F. (exists ff_u_recode_endpoint_product_exists ff_v_recode_endpoint_product_exists. ((((exists ff_h_recode_endpoint_product_exists_start. ff_h_recode_endpoint_product_exists_start + S (1) = S ((S (0)) * ff_v_recode_endpoint_product_exists)) /\ exists ff_q_recode_endpoint_product_exists_start. ff_u_recode_endpoint_product_exists = ff_q_recode_endpoint_product_exists_start * S ((S (0)) * ff_v_recode_endpoint_product_exists) + (1))) /\ ((((exists ff_h_recode_endpoint_product_exists_terminal. ff_h_recode_endpoint_product_exists_terminal + S (F) = S ((S (l)) * ff_v_recode_endpoint_product_exists)) /\ exists ff_q_recode_endpoint_product_exists_terminal. ff_u_recode_endpoint_product_exists = ff_q_recode_endpoint_product_exists_terminal * S ((S (l)) * ff_v_recode_endpoint_product_exists) + (F))) /\ forall ff_i_recode_endpoint_product_exists. (exists ff_lt_recode_endpoint_product_exists_bound. ff_lt_recode_endpoint_product_exists_bound + S ff_i_recode_endpoint_product_exists = l) -> exists ff_p_recode_endpoint_product_exists ff_r_recode_endpoint_product_exists ff_s_recode_endpoint_product_exists. ((((exists ff_h_recode_endpoint_product_exists_factor. ff_h_recode_endpoint_product_exists_factor + S (ff_p_recode_endpoint_product_exists) = S ((S (ff_i_recode_endpoint_product_exists)) * x1)) /\ exists ff_q_recode_endpoint_product_exists_factor. x = ff_q_recode_endpoint_product_exists_factor * S ((S (ff_i_recode_endpoint_product_exists)) * x1) + (ff_p_recode_endpoint_product_exists))) /\ ((((exists ff_h_recode_endpoint_product_exists_partial. ff_h_recode_endpoint_product_exists_partial + S (ff_r_recode_endpoint_product_exists) = S ((S (ff_i_recode_endpoint_product_exists)) * ff_v_recode_endpoint_product_exists)) /\ exists ff_q_recode_endpoint_product_exists_partial. ff_u_recode_endpoint_product_exists = ff_q_recode_endpoint_product_exists_partial * S ((S (ff_i_recode_endpoint_product_exists)) * ff_v_recode_endpoint_product_exists) + (ff_r_recode_endpoint_product_exists))) /\ ((((exists ff_h_recode_endpoint_product_exists_successor. ff_h_recode_endpoint_product_exists_successor + S (ff_s_recode_endpoint_product_exists) = S ((S (S ff_i_recode_endpoint_product_exists)) * ff_v_recode_endpoint_product_exists)) /\ exists ff_q_recode_endpoint_product_exists_successor. ff_u_recode_endpoint_product_exists = ff_q_recode_endpoint_product_exists_successor * S ((S (S ff_i_recode_endpoint_product_exists)) * ff_v_recode_endpoint_product_exists) + (ff_s_recode_endpoint_product_exists))) /\ ff_s_recode_endpoint_product_exists = ff_r_recode_endpoint_product_exists * ff_p_recode_endpoint_product_exists))))))
  20. 0020specialize beta_product_exists x
  21. 0021specialize beta_product_exists x1
  22. 0022specialize beta_product_exists l
  23. 0023exact beta_product_exists
  24. 0024cases hproduct_exists
  25. 0025have hpower_exists : exists R. (exists ff_b_recode_endpoint_power_exists ff_c_recode_endpoint_power_exists. ((forall ff_i_recode_endpoint_power_exists_repeat. (exists ff_lt_recode_endpoint_power_exists_repeat_bound. ff_lt_recode_endpoint_power_exists_repeat_bound + S ff_i_recode_endpoint_power_exists_repeat = e) -> (((exists ff_h_recode_endpoint_power_exists_repeat_decoded. ff_h_recode_endpoint_power_exists_repeat_decoded + S (r) = S ((S (ff_i_recode_endpoint_power_exists_repeat)) * ff_c_recode_endpoint_power_exists)) /\ exists ff_q_recode_endpoint_power_exists_repeat_decoded. ff_b_recode_endpoint_power_exists = ff_q_recode_endpoint_power_exists_repeat_decoded * S ((S (ff_i_recode_endpoint_power_exists_repeat)) * ff_c_recode_endpoint_power_exists) + (r)))) /\ (exists ff_u_recode_endpoint_power_exists_product ff_v_recode_endpoint_power_exists_product. ((((exists ff_h_recode_endpoint_power_exists_product_start. ff_h_recode_endpoint_power_exists_product_start + S (1) = S ((S (0)) * ff_v_recode_endpoint_power_exists_product)) /\ exists ff_q_recode_endpoint_power_exists_product_start. ff_u_recode_endpoint_power_exists_product = ff_q_recode_endpoint_power_exists_product_start * S ((S (0)) * ff_v_recode_endpoint_power_exists_product) + (1))) /\ ((((exists ff_h_recode_endpoint_power_exists_product_terminal. ff_h_recode_endpoint_power_exists_product_terminal + S (R) = S ((S (e)) * ff_v_recode_endpoint_power_exists_product)) /\ exists ff_q_recode_endpoint_power_exists_product_terminal. ff_u_recode_endpoint_power_exists_product = ff_q_recode_endpoint_power_exists_product_terminal * S ((S (e)) * ff_v_recode_endpoint_power_exists_product) + (R))) /\ forall ff_i_recode_endpoint_power_exists_product. (exists ff_lt_recode_endpoint_power_exists_product_bound. ff_lt_recode_endpoint_power_exists_product_bound + S ff_i_recode_endpoint_power_exists_product = e) -> exists ff_p_recode_endpoint_power_exists_product ff_r_recode_endpoint_power_exists_product ff_s_recode_endpoint_power_exists_product. ((((exists ff_h_recode_endpoint_power_exists_product_factor. ff_h_recode_endpoint_power_exists_product_factor + S (ff_p_recode_endpoint_power_exists_product) = S ((S (ff_i_recode_endpoint_power_exists_product)) * ff_c_recode_endpoint_power_exists)) /\ exists ff_q_recode_endpoint_power_exists_product_factor. ff_b_recode_endpoint_power_exists = ff_q_recode_endpoint_power_exists_product_factor * S ((S (ff_i_recode_endpoint_power_exists_product)) * ff_c_recode_endpoint_power_exists) + (ff_p_recode_endpoint_power_exists_product))) /\ ((((exists ff_h_recode_endpoint_power_exists_product_partial. ff_h_recode_endpoint_power_exists_product_partial + S (ff_r_recode_endpoint_power_exists_product) = S ((S (ff_i_recode_endpoint_power_exists_product)) * ff_v_recode_endpoint_power_exists_product)) /\ exists ff_q_recode_endpoint_power_exists_product_partial. ff_u_recode_endpoint_power_exists_product = ff_q_recode_endpoint_power_exists_product_partial * S ((S (ff_i_recode_endpoint_power_exists_product)) * ff_v_recode_endpoint_power_exists_product) + (ff_r_recode_endpoint_power_exists_product))) /\ ((((exists ff_h_recode_endpoint_power_exists_product_successor. ff_h_recode_endpoint_power_exists_product_successor + S (ff_s_recode_endpoint_power_exists_product) = S ((S (S ff_i_recode_endpoint_power_exists_product)) * ff_v_recode_endpoint_power_exists_product)) /\ exists ff_q_recode_endpoint_power_exists_product_successor. ff_u_recode_endpoint_power_exists_product = ff_q_recode_endpoint_power_exists_product_successor * S ((S (S ff_i_recode_endpoint_power_exists_product)) * ff_v_recode_endpoint_power_exists_product) + (ff_s_recode_endpoint_power_exists_product))) /\ ff_s_recode_endpoint_power_exists_product = ff_r_recode_endpoint_power_exists_product * ff_p_recode_endpoint_power_exists_product))))))))
  26. 0026specialize pow_exists r
  27. 0027specialize pow_exists e
  28. 0028exact pow_exists
  29. 0029cases hpower_exists
  30. 0030have hequal : x2 = x3
  31. 0031specialize beta_sign_factor_product_power sb
  32. 0032specialize beta_sign_factor_product_power sc
  33. 0033specialize beta_sign_factor_product_power x
  34. 0034specialize beta_sign_factor_product_power x1
  35. 0035specialize beta_sign_factor_product_power r
  36. 0036specialize beta_sign_factor_product_power l
  37. 0037specialize beta_sign_factor_product_power e
  38. 0038specialize beta_sign_factor_product_power x2
  39. 0039specialize beta_sign_factor_product_power x3
  40. 0040apply beta_sign_factor_product_power
  41. 0041exact hcount
  42. 0042exact hsigns_exists_witness_witness
  43. 0043exact hproduct_exists_witness
  44. 0044exact hpower_exists_witness
  45. 0045exists x
  46. 0046exists x1
  47. 0047exists x2
  48. 0048exists x3
  49. 0049split
  50. 0050exact hsigns_exists_witness_witness
  51. 0051split
  52. 0052exact hproduct_exists_witness
  53. 0053split
  54. 0054exact hpower_exists_witness
  55. 0055exact hequal