PA00BD

pair_order_terminal_successor_product_eq_range_two

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

The lifted terminal product equals the product of the canonical nonendpoint range.

Exact expanded PA statement

forall b c r s z d f g l P Q. (forall gmp_index_wtp_alignment_range. (exists gsp_lt_gap_wtp_alignment_range_index_bound. gsp_lt_gap_wtp_alignment_range_index_bound + S gmp_index_wtp_alignment_range = l) -> exists gmp_magnitude_wtp_alignment_range. ((((exists ff_h_gmp_wtp_alignment_range_decoded. ff_h_gmp_wtp_alignment_range_decoded + S (gmp_magnitude_wtp_alignment_range) = S ((S (gmp_index_wtp_alignment_range)) * c)) /\ exists ff_q_gmp_wtp_alignment_range_decoded. b = ff_q_gmp_wtp_alignment_range_decoded * S ((S (gmp_index_wtp_alignment_range)) * c) + (gmp_magnitude_wtp_alignment_range))) /\ ((exists gsp_lt_gap_wtp_alignment_range_positive. gsp_lt_gap_wtp_alignment_range_positive + S 0 = gmp_magnitude_wtp_alignment_range) /\ (exists gsp_le_gap_wtp_alignment_range_bounded. gsp_le_gap_wtp_alignment_range_bounded + gmp_magnitude_wtp_alignment_range = l)))) -> (forall fp_i_wtp_source_injective fp_j_wtp_source_injective fp_value_wtp_source_injective. (exists fp_gap_wtp_source_injective_i. fp_gap_wtp_source_injective_i + S fp_i_wtp_source_injective = l) -> (exists fp_gap_wtp_source_injective_j. fp_gap_wtp_source_injective_j + S fp_j_wtp_source_injective = l) -> (((exists ff_h_wtp_source_injective_left. ff_h_wtp_source_injective_left + S (fp_value_wtp_source_injective) = S ((S (fp_i_wtp_source_injective)) * c)) /\ exists ff_q_wtp_source_injective_left. b = ff_q_wtp_source_injective_left * S ((S (fp_i_wtp_source_injective)) * c) + (fp_value_wtp_source_injective))) -> (((exists ff_h_wtp_source_injective_right. ff_h_wtp_source_injective_right + S (fp_value_wtp_source_injective) = S ((S (fp_j_wtp_source_injective)) * c)) /\ exists ff_q_wtp_source_injective_right. b = ff_q_wtp_source_injective_right * S ((S (fp_j_wtp_source_injective)) * c) + (fp_value_wtp_source_injective))) -> fp_i_wtp_source_injective = fp_j_wtp_source_injective) -> (forall gmp_index_wtp_alignment_recode gmp_predecessor_wtp_alignment_recode. (exists gsp_lt_gap_wtp_alignment_recode_index_bound. gsp_lt_gap_wtp_alignment_recode_index_bound + S gmp_index_wtp_alignment_recode = l) -> (((exists gsp_beta_height_gmp_wtp_alignment_recode_source. gsp_beta_height_gmp_wtp_alignment_recode_source + S (S gmp_predecessor_wtp_alignment_recode) = S ((S (gmp_index_wtp_alignment_recode)) * c)) /\ exists gsp_beta_quotient_gmp_wtp_alignment_recode_source. b = gsp_beta_quotient_gmp_wtp_alignment_recode_source * S ((S (gmp_index_wtp_alignment_recode)) * c) + (S gmp_predecessor_wtp_alignment_recode))) -> (((exists ff_h_gmp_wtp_alignment_recode_target. ff_h_gmp_wtp_alignment_recode_target + S (gmp_predecessor_wtp_alignment_recode) = S ((S (gmp_index_wtp_alignment_recode)) * s)) /\ exists ff_q_gmp_wtp_alignment_recode_target. r = ff_q_gmp_wtp_alignment_recode_target * S ((S (gmp_index_wtp_alignment_recode)) * s) + (gmp_predecessor_wtp_alignment_recode)))) -> (forall wsl_index_wtp_alignment_lift wsl_value_wtp_alignment_lift. (exists wpo_gap_wtp_alignment_lift_bound. wpo_gap_wtp_alignment_lift_bound + S (wsl_index_wtp_alignment_lift) = l) -> (((exists wpo_beta_height_wtp_alignment_lift_source. wpo_beta_height_wtp_alignment_lift_source + S (wsl_value_wtp_alignment_lift) = S ((S (wsl_index_wtp_alignment_lift)) * c)) /\ exists wpo_beta_quotient_wtp_alignment_lift_source. b = wpo_beta_quotient_wtp_alignment_lift_source * S ((S (wsl_index_wtp_alignment_lift)) * c) + (wsl_value_wtp_alignment_lift))) -> (((exists wpo_beta_height_wtp_alignment_lift_target. wpo_beta_height_wtp_alignment_lift_target + S (S wsl_value_wtp_alignment_lift) = S ((S (wsl_index_wtp_alignment_lift)) * g)) /\ exists wpo_beta_quotient_wtp_alignment_lift_target. f = wpo_beta_quotient_wtp_alignment_lift_target * S ((S (wsl_index_wtp_alignment_lift)) * g) + (S wsl_value_wtp_alignment_lift)))) -> (forall wtp_range_index_wtp_alignment_range_two. (exists wtp_range_gap_wtp_alignment_range_two. wtp_range_gap_wtp_alignment_range_two + S wtp_range_index_wtp_alignment_range_two = l) -> (((exists ff_h_wtp_alignment_range_two_decoded. ff_h_wtp_alignment_range_two_decoded + S (2 + wtp_range_index_wtp_alignment_range_two) = S ((S (wtp_range_index_wtp_alignment_range_two)) * d)) /\ exists ff_q_wtp_alignment_range_two_decoded. z = ff_q_wtp_alignment_range_two_decoded * S ((S (wtp_range_index_wtp_alignment_range_two)) * d) + (2 + wtp_range_index_wtp_alignment_range_two)))) -> (exists ff_u_wtp_canonical_product ff_v_wtp_canonical_product. ((((exists ff_h_wtp_canonical_product_start. ff_h_wtp_canonical_product_start + S (1) = S ((S (0)) * ff_v_wtp_canonical_product)) /\ exists ff_q_wtp_canonical_product_start. ff_u_wtp_canonical_product = ff_q_wtp_canonical_product_start * S ((S (0)) * ff_v_wtp_canonical_product) + (1))) /\ ((((exists ff_h_wtp_canonical_product_terminal. ff_h_wtp_canonical_product_terminal + S (P) = S ((S (l)) * ff_v_wtp_canonical_product)) /\ exists ff_q_wtp_canonical_product_terminal. ff_u_wtp_canonical_product = ff_q_wtp_canonical_product_terminal * S ((S (l)) * ff_v_wtp_canonical_product) + (P))) /\ forall ff_i_wtp_canonical_product. (exists ff_lt_wtp_canonical_product_bound. ff_lt_wtp_canonical_product_bound + S ff_i_wtp_canonical_product = l) -> exists ff_p_wtp_canonical_product ff_r_wtp_canonical_product ff_s_wtp_canonical_product. ((((exists ff_h_wtp_canonical_product_factor. ff_h_wtp_canonical_product_factor + S (ff_p_wtp_canonical_product) = S ((S (ff_i_wtp_canonical_product)) * d)) /\ exists ff_q_wtp_canonical_product_factor. z = ff_q_wtp_canonical_product_factor * S ((S (ff_i_wtp_canonical_product)) * d) + (ff_p_wtp_canonical_product))) /\ ((((exists ff_h_wtp_canonical_product_partial. ff_h_wtp_canonical_product_partial + S (ff_r_wtp_canonical_product) = S ((S (ff_i_wtp_canonical_product)) * ff_v_wtp_canonical_product)) /\ exists ff_q_wtp_canonical_product_partial. ff_u_wtp_canonical_product = ff_q_wtp_canonical_product_partial * S ((S (ff_i_wtp_canonical_product)) * ff_v_wtp_canonical_product) + (ff_r_wtp_canonical_product))) /\ ((((exists ff_h_wtp_canonical_product_successor. ff_h_wtp_canonical_product_successor + S (ff_s_wtp_canonical_product) = S ((S (S ff_i_wtp_canonical_product)) * ff_v_wtp_canonical_product)) /\ exists ff_q_wtp_canonical_product_successor. ff_u_wtp_canonical_product = ff_q_wtp_canonical_product_successor * S ((S (S ff_i_wtp_canonical_product)) * ff_v_wtp_canonical_product) + (ff_s_wtp_canonical_product))) /\ ff_s_wtp_canonical_product = ff_r_wtp_canonical_product * ff_p_wtp_canonical_product)))))) -> (exists ff_u_wtp_lifted_product ff_v_wtp_lifted_product. ((((exists ff_h_wtp_lifted_product_start. ff_h_wtp_lifted_product_start + S (1) = S ((S (0)) * ff_v_wtp_lifted_product)) /\ exists ff_q_wtp_lifted_product_start. ff_u_wtp_lifted_product = ff_q_wtp_lifted_product_start * S ((S (0)) * ff_v_wtp_lifted_product) + (1))) /\ ((((exists ff_h_wtp_lifted_product_terminal. ff_h_wtp_lifted_product_terminal + S (Q) = S ((S (l)) * ff_v_wtp_lifted_product)) /\ exists ff_q_wtp_lifted_product_terminal. ff_u_wtp_lifted_product = ff_q_wtp_lifted_product_terminal * S ((S (l)) * ff_v_wtp_lifted_product) + (Q))) /\ forall ff_i_wtp_lifted_product. (exists ff_lt_wtp_lifted_product_bound. ff_lt_wtp_lifted_product_bound + S ff_i_wtp_lifted_product = l) -> exists ff_p_wtp_lifted_product ff_r_wtp_lifted_product ff_s_wtp_lifted_product. ((((exists ff_h_wtp_lifted_product_factor. ff_h_wtp_lifted_product_factor + S (ff_p_wtp_lifted_product) = S ((S (ff_i_wtp_lifted_product)) * g)) /\ exists ff_q_wtp_lifted_product_factor. f = ff_q_wtp_lifted_product_factor * S ((S (ff_i_wtp_lifted_product)) * g) + (ff_p_wtp_lifted_product))) /\ ((((exists ff_h_wtp_lifted_product_partial. ff_h_wtp_lifted_product_partial + S (ff_r_wtp_lifted_product) = S ((S (ff_i_wtp_lifted_product)) * ff_v_wtp_lifted_product)) /\ exists ff_q_wtp_lifted_product_partial. ff_u_wtp_lifted_product = ff_q_wtp_lifted_product_partial * S ((S (ff_i_wtp_lifted_product)) * ff_v_wtp_lifted_product) + (ff_r_wtp_lifted_product))) /\ ((((exists ff_h_wtp_lifted_product_successor. ff_h_wtp_lifted_product_successor + S (ff_s_wtp_lifted_product) = S ((S (S ff_i_wtp_lifted_product)) * ff_v_wtp_lifted_product)) /\ exists ff_q_wtp_lifted_product_successor. ff_u_wtp_lifted_product = ff_q_wtp_lifted_product_successor * S ((S (S ff_i_wtp_lifted_product)) * ff_v_wtp_lifted_product) + (ff_s_wtp_lifted_product))) /\ ff_s_wtp_lifted_product = ff_r_wtp_lifted_product * ff_p_wtp_lifted_product)))))) -> P = Q

Structural proof guide

Generated structural guide

The lifted terminal product equals the product of the canonical nonendpoint range.

Use the direct prerequisites beta_magnitude_predecessor_recode_bounded, beta_magnitude_predecessor_recode_injective, pair_order_predecessor_range_two_successor_lift_aligned, beta_product_permutation_invariant as previously established PA formulas.

The proof proceeds by intermediate claims (3).

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 b
  2. 0002intro c
  3. 0003intro r
  4. 0004intro s
  5. 0005intro z
  6. 0006intro d
  7. 0007intro f
  8. 0008intro g
  9. 0009intro l
  10. 0010intro P
  11. 0011intro Q
  12. 0012intro hrange
  13. 0013intro hinjective
  14. 0014intro hrecode
  15. 0015intro hlift
  16. 0016intro hcanonical
  17. 0017intro hcanonical_product
  18. 0018intro hlifted_product
  19. 0019have hbounded : forall fp_i_wtp_predecessor_bounded. (exists fp_gap_wtp_predecessor_bounded_index. fp_gap_wtp_predecessor_bounded_index + S fp_i_wtp_predecessor_bounded = l) -> exists fp_value_wtp_predecessor_bounded. ((((exists ff_h_wtp_predecessor_bounded_entry. ff_h_wtp_predecessor_bounded_entry + S (fp_value_wtp_predecessor_bounded) = S ((S (fp_i_wtp_predecessor_bounded)) * s)) /\ exists ff_q_wtp_predecessor_bounded_entry. r = ff_q_wtp_predecessor_bounded_entry * S ((S (fp_i_wtp_predecessor_bounded)) * s) + (fp_value_wtp_predecessor_bounded))) /\ (exists fp_gap_wtp_predecessor_bounded_value. fp_gap_wtp_predecessor_bounded_value + S fp_value_wtp_predecessor_bounded = l))
  20. 0020specialize beta_magnitude_predecessor_recode_bounded b
  21. 0021specialize beta_magnitude_predecessor_recode_bounded c
  22. 0022specialize beta_magnitude_predecessor_recode_bounded r
  23. 0023specialize beta_magnitude_predecessor_recode_bounded s
  24. 0024specialize beta_magnitude_predecessor_recode_bounded l
  25. 0025apply beta_magnitude_predecessor_recode_bounded
  26. 0026exact hrange
  27. 0027exact hrecode
  28. 0028have hmap_injective : forall fp_i_wtp_predecessor_injective fp_j_wtp_predecessor_injective fp_value_wtp_predecessor_injective. (exists fp_gap_wtp_predecessor_injective_i. fp_gap_wtp_predecessor_injective_i + S fp_i_wtp_predecessor_injective = l) -> (exists fp_gap_wtp_predecessor_injective_j. fp_gap_wtp_predecessor_injective_j + S fp_j_wtp_predecessor_injective = l) -> (((exists ff_h_wtp_predecessor_injective_left. ff_h_wtp_predecessor_injective_left + S (fp_value_wtp_predecessor_injective) = S ((S (fp_i_wtp_predecessor_injective)) * s)) /\ exists ff_q_wtp_predecessor_injective_left. r = ff_q_wtp_predecessor_injective_left * S ((S (fp_i_wtp_predecessor_injective)) * s) + (fp_value_wtp_predecessor_injective))) -> (((exists ff_h_wtp_predecessor_injective_right. ff_h_wtp_predecessor_injective_right + S (fp_value_wtp_predecessor_injective) = S ((S (fp_j_wtp_predecessor_injective)) * s)) /\ exists ff_q_wtp_predecessor_injective_right. r = ff_q_wtp_predecessor_injective_right * S ((S (fp_j_wtp_predecessor_injective)) * s) + (fp_value_wtp_predecessor_injective))) -> fp_i_wtp_predecessor_injective = fp_j_wtp_predecessor_injective
  29. 0029specialize beta_magnitude_predecessor_recode_injective b
  30. 0030specialize beta_magnitude_predecessor_recode_injective c
  31. 0031specialize beta_magnitude_predecessor_recode_injective r
  32. 0032specialize beta_magnitude_predecessor_recode_injective s
  33. 0033specialize beta_magnitude_predecessor_recode_injective l
  34. 0034apply beta_magnitude_predecessor_recode_injective
  35. 0035exact hrange
  36. 0036exact hinjective
  37. 0037exact hrecode
  38. 0038have haligned : forall fpr_i_wtp_alignment fpr_j_wtp_alignment fpr_x_wtp_alignment. (exists fpr_h_wtp_alignment. fpr_h_wtp_alignment + S fpr_i_wtp_alignment = l) -> (((exists ff_h_wtp_alignment_map. ff_h_wtp_alignment_map + S (fpr_j_wtp_alignment) = S ((S (fpr_i_wtp_alignment)) * s)) /\ exists ff_q_wtp_alignment_map. r = ff_q_wtp_alignment_map * S ((S (fpr_i_wtp_alignment)) * s) + (fpr_j_wtp_alignment))) -> (((exists ff_h_wtp_alignment_source. ff_h_wtp_alignment_source + S (fpr_x_wtp_alignment) = S ((S (fpr_j_wtp_alignment)) * d)) /\ exists ff_q_wtp_alignment_source. z = ff_q_wtp_alignment_source * S ((S (fpr_j_wtp_alignment)) * d) + (fpr_x_wtp_alignment))) -> (((exists ff_h_wtp_alignment_target. ff_h_wtp_alignment_target + S (fpr_x_wtp_alignment) = S ((S (fpr_i_wtp_alignment)) * g)) /\ exists ff_q_wtp_alignment_target. f = ff_q_wtp_alignment_target * S ((S (fpr_i_wtp_alignment)) * g) + (fpr_x_wtp_alignment)))
  39. 0039specialize pair_order_predecessor_range_two_successor_lift_aligned b
  40. 0040specialize pair_order_predecessor_range_two_successor_lift_aligned c
  41. 0041specialize pair_order_predecessor_range_two_successor_lift_aligned r
  42. 0042specialize pair_order_predecessor_range_two_successor_lift_aligned s
  43. 0043specialize pair_order_predecessor_range_two_successor_lift_aligned z
  44. 0044specialize pair_order_predecessor_range_two_successor_lift_aligned d
  45. 0045specialize pair_order_predecessor_range_two_successor_lift_aligned f
  46. 0046specialize pair_order_predecessor_range_two_successor_lift_aligned g
  47. 0047specialize pair_order_predecessor_range_two_successor_lift_aligned l
  48. 0048apply pair_order_predecessor_range_two_successor_lift_aligned
  49. 0049exact hrange
  50. 0050exact hrecode
  51. 0051exact hlift
  52. 0052exact hcanonical
  53. 0053specialize beta_product_permutation_invariant l
  54. 0054specialize beta_product_permutation_invariant r
  55. 0055specialize beta_product_permutation_invariant s
  56. 0056specialize beta_product_permutation_invariant z
  57. 0057specialize beta_product_permutation_invariant d
  58. 0058specialize beta_product_permutation_invariant f
  59. 0059specialize beta_product_permutation_invariant g
  60. 0060specialize beta_product_permutation_invariant P
  61. 0061specialize beta_product_permutation_invariant Q
  62. 0062apply beta_product_permutation_invariant
  63. 0063exact hbounded
  64. 0064exact hmap_injective
  65. 0065exact haligned
  66. 0066exact hcanonical_product
  67. 0067exact hlifted_product