BT00VF

primorial_interval_divides_choose_between

Alpha body-checked ยท checked-use disabled

A selector interval between both denominator indices divides Choose.

Exact expanded PA statement

forall a l n k j c z. k + j = n -> (((exists bcf_lt_gap_bpidcb_choose_out_of_range. bcf_lt_gap_bpidcb_choose_out_of_range + S (n) = k) /\ c = 0) \/ ((exists bcf_le_gap_bpidcb_choose_in_range. bcf_le_gap_bpidcb_choose_in_range + (k) = n) /\ (exists bcf_row_code_code_bpidcb_choose bcf_row_code_scale_bpidcb_choose bcf_row_scale_code_bpidcb_choose bcf_row_scale_scale_bpidcb_choose bcf_row_code_bpidcb_choose bcf_row_scale_bpidcb_choose. ((forall bcf_row_index_bpidcb_choose_table. (exists bcf_lt_gap_bpidcb_choose_table_row_bound. bcf_lt_gap_bpidcb_choose_table_row_bound + S (bcf_row_index_bpidcb_choose_table) = S (n)) -> exists bcf_row_code_bpidcb_choose_table bcf_row_scale_bpidcb_choose_table. ((((exists bcf_height_bpidcb_choose_table_decoded_row_code. bcf_height_bpidcb_choose_table_decoded_row_code + S (bcf_row_code_bpidcb_choose_table) = S ((S (bcf_row_index_bpidcb_choose_table)) * bcf_row_code_scale_bpidcb_choose)) /\ exists bcf_quotient_bpidcb_choose_table_decoded_row_code. bcf_row_code_code_bpidcb_choose = bcf_quotient_bpidcb_choose_table_decoded_row_code * S ((S (bcf_row_index_bpidcb_choose_table)) * bcf_row_code_scale_bpidcb_choose) + (bcf_row_code_bpidcb_choose_table))) /\ ((((exists bcf_height_bpidcb_choose_table_decoded_row_scale. bcf_height_bpidcb_choose_table_decoded_row_scale + S (bcf_row_scale_bpidcb_choose_table) = S ((S (bcf_row_index_bpidcb_choose_table)) * bcf_row_scale_scale_bpidcb_choose)) /\ exists bcf_quotient_bpidcb_choose_table_decoded_row_scale. bcf_row_scale_code_bpidcb_choose = bcf_quotient_bpidcb_choose_table_decoded_row_scale * S ((S (bcf_row_index_bpidcb_choose_table)) * bcf_row_scale_scale_bpidcb_choose) + (bcf_row_scale_bpidcb_choose_table))) /\ ((bcf_row_index_bpidcb_choose_table = 0 /\ (forall bcf_index_bpidcb_choose_table_zero_row. (exists bcf_lt_gap_bpidcb_choose_table_zero_row_bound. bcf_lt_gap_bpidcb_choose_table_zero_row_bound + S (bcf_index_bpidcb_choose_table_zero_row) = S (n)) -> exists bcf_value_bpidcb_choose_table_zero_row. ((((exists bcf_height_bpidcb_choose_table_zero_row_entry. bcf_height_bpidcb_choose_table_zero_row_entry + S (bcf_value_bpidcb_choose_table_zero_row) = S ((S (bcf_index_bpidcb_choose_table_zero_row)) * bcf_row_scale_bpidcb_choose_table)) /\ exists bcf_quotient_bpidcb_choose_table_zero_row_entry. bcf_row_code_bpidcb_choose_table = bcf_quotient_bpidcb_choose_table_zero_row_entry * S ((S (bcf_index_bpidcb_choose_table_zero_row)) * bcf_row_scale_bpidcb_choose_table) + (bcf_value_bpidcb_choose_table_zero_row))) /\ ((bcf_index_bpidcb_choose_table_zero_row = 0 /\ bcf_value_bpidcb_choose_table_zero_row = 1) \/ exists bcf_predecessor_bpidcb_choose_table_zero_row. bcf_index_bpidcb_choose_table_zero_row = S bcf_predecessor_bpidcb_choose_table_zero_row /\ bcf_value_bpidcb_choose_table_zero_row = 0)))) \/ exists bcf_predecessor_bpidcb_choose_table bcf_previous_code_bpidcb_choose_table bcf_previous_scale_bpidcb_choose_table. bcf_row_index_bpidcb_choose_table = S bcf_predecessor_bpidcb_choose_table /\ ((((exists bcf_height_bpidcb_choose_table_decoded_previous_code. bcf_height_bpidcb_choose_table_decoded_previous_code + S (bcf_previous_code_bpidcb_choose_table) = S ((S (bcf_predecessor_bpidcb_choose_table)) * bcf_row_code_scale_bpidcb_choose)) /\ exists bcf_quotient_bpidcb_choose_table_decoded_previous_code. bcf_row_code_code_bpidcb_choose = bcf_quotient_bpidcb_choose_table_decoded_previous_code * S ((S (bcf_predecessor_bpidcb_choose_table)) * bcf_row_code_scale_bpidcb_choose) + (bcf_previous_code_bpidcb_choose_table))) /\ ((((exists bcf_height_bpidcb_choose_table_decoded_previous_scale. bcf_height_bpidcb_choose_table_decoded_previous_scale + S (bcf_previous_scale_bpidcb_choose_table) = S ((S (bcf_predecessor_bpidcb_choose_table)) * bcf_row_scale_scale_bpidcb_choose)) /\ exists bcf_quotient_bpidcb_choose_table_decoded_previous_scale. bcf_row_scale_code_bpidcb_choose = bcf_quotient_bpidcb_choose_table_decoded_previous_scale * S ((S (bcf_predecessor_bpidcb_choose_table)) * bcf_row_scale_scale_bpidcb_choose) + (bcf_previous_scale_bpidcb_choose_table))) /\ (forall bcf_index_bpidcb_choose_table_row_step. (exists bcf_lt_gap_bpidcb_choose_table_row_step_bound. bcf_lt_gap_bpidcb_choose_table_row_step_bound + S (bcf_index_bpidcb_choose_table_row_step) = S (n)) -> exists bcf_value_bpidcb_choose_table_row_step. ((((exists bcf_height_bpidcb_choose_table_row_step_entry. bcf_height_bpidcb_choose_table_row_step_entry + S (bcf_value_bpidcb_choose_table_row_step) = S ((S (bcf_index_bpidcb_choose_table_row_step)) * bcf_row_scale_bpidcb_choose_table)) /\ exists bcf_quotient_bpidcb_choose_table_row_step_entry. bcf_row_code_bpidcb_choose_table = bcf_quotient_bpidcb_choose_table_row_step_entry * S ((S (bcf_index_bpidcb_choose_table_row_step)) * bcf_row_scale_bpidcb_choose_table) + (bcf_value_bpidcb_choose_table_row_step))) /\ ((bcf_index_bpidcb_choose_table_row_step = 0 /\ bcf_value_bpidcb_choose_table_row_step = 1) \/ exists bcf_predecessor_bpidcb_choose_table_row_step bcf_left_bpidcb_choose_table_row_step bcf_right_bpidcb_choose_table_row_step. bcf_index_bpidcb_choose_table_row_step = S bcf_predecessor_bpidcb_choose_table_row_step /\ ((((exists bcf_height_bpidcb_choose_table_row_step_previous_left. bcf_height_bpidcb_choose_table_row_step_previous_left + S (bcf_left_bpidcb_choose_table_row_step) = S ((S (bcf_predecessor_bpidcb_choose_table_row_step)) * bcf_previous_scale_bpidcb_choose_table)) /\ exists bcf_quotient_bpidcb_choose_table_row_step_previous_left. bcf_previous_code_bpidcb_choose_table = bcf_quotient_bpidcb_choose_table_row_step_previous_left * S ((S (bcf_predecessor_bpidcb_choose_table_row_step)) * bcf_previous_scale_bpidcb_choose_table) + (bcf_left_bpidcb_choose_table_row_step))) /\ ((((exists bcf_height_bpidcb_choose_table_row_step_previous_right. bcf_height_bpidcb_choose_table_row_step_previous_right + S (bcf_right_bpidcb_choose_table_row_step) = S ((S (S (bcf_predecessor_bpidcb_choose_table_row_step))) * bcf_previous_scale_bpidcb_choose_table)) /\ exists bcf_quotient_bpidcb_choose_table_row_step_previous_right. bcf_previous_code_bpidcb_choose_table = bcf_quotient_bpidcb_choose_table_row_step_previous_right * S ((S (S (bcf_predecessor_bpidcb_choose_table_row_step))) * bcf_previous_scale_bpidcb_choose_table) + (bcf_right_bpidcb_choose_table_row_step))) /\ bcf_value_bpidcb_choose_table_row_step = bcf_left_bpidcb_choose_table_row_step + bcf_right_bpidcb_choose_table_row_step))))))))))) /\ ((((exists bcf_height_bpidcb_choose_decoded_row_code. bcf_height_bpidcb_choose_decoded_row_code + S (bcf_row_code_bpidcb_choose) = S ((S (n)) * bcf_row_code_scale_bpidcb_choose)) /\ exists bcf_quotient_bpidcb_choose_decoded_row_code. bcf_row_code_code_bpidcb_choose = bcf_quotient_bpidcb_choose_decoded_row_code * S ((S (n)) * bcf_row_code_scale_bpidcb_choose) + (bcf_row_code_bpidcb_choose))) /\ ((((exists bcf_height_bpidcb_choose_decoded_row_scale. bcf_height_bpidcb_choose_decoded_row_scale + S (bcf_row_scale_bpidcb_choose) = S ((S (n)) * bcf_row_scale_scale_bpidcb_choose)) /\ exists bcf_quotient_bpidcb_choose_decoded_row_scale. bcf_row_scale_code_bpidcb_choose = bcf_quotient_bpidcb_choose_decoded_row_scale * S ((S (n)) * bcf_row_scale_scale_bpidcb_choose) + (bcf_row_scale_bpidcb_choose))) /\ (((exists bcf_height_bpidcb_choose_decoded_value. bcf_height_bpidcb_choose_decoded_value + S (c) = S ((S (k)) * bcf_row_scale_bpidcb_choose)) /\ exists bcf_quotient_bpidcb_choose_decoded_value. bcf_row_code_bpidcb_choose = bcf_quotient_bpidcb_choose_decoded_value * S ((S (k)) * bcf_row_scale_bpidcb_choose) + (c))))))))) -> (exists bpr_code_bpidcb_interval bpr_scale_bpidcb_interval. ((forall bpr_index_bpidcb_interval_mask. (exists bpr_gap_bpidcb_interval_mask_bound. bpr_gap_bpidcb_interval_mask_bound + S (bpr_index_bpidcb_interval_mask) = l) -> exists bpr_value_bpidcb_interval_mask. ((((exists bpr_height_bpidcb_interval_mask_decoded. bpr_height_bpidcb_interval_mask_decoded + S (bpr_value_bpidcb_interval_mask) = S ((S (bpr_index_bpidcb_interval_mask)) * bpr_scale_bpidcb_interval)) /\ exists bpr_quotient_bpidcb_interval_mask_decoded. bpr_code_bpidcb_interval = bpr_quotient_bpidcb_interval_mask_decoded * S ((S (bpr_index_bpidcb_interval_mask)) * bpr_scale_bpidcb_interval) + (bpr_value_bpidcb_interval_mask))) /\ (((((~(S (a + bpr_index_bpidcb_interval_mask) = 1) /\ forall bpr_left_bpidcb_interval_mask_choice_prime bpr_right_bpidcb_interval_mask_choice_prime. S (a + bpr_index_bpidcb_interval_mask) = bpr_left_bpidcb_interval_mask_choice_prime * bpr_right_bpidcb_interval_mask_choice_prime -> bpr_left_bpidcb_interval_mask_choice_prime = 1 \/ bpr_right_bpidcb_interval_mask_choice_prime = 1)) /\ bpr_value_bpidcb_interval_mask = S (a + bpr_index_bpidcb_interval_mask)) \/ (~((~(S (a + bpr_index_bpidcb_interval_mask) = 1) /\ forall bpr_left_bpidcb_interval_mask_choice_prime bpr_right_bpidcb_interval_mask_choice_prime. S (a + bpr_index_bpidcb_interval_mask) = bpr_left_bpidcb_interval_mask_choice_prime * bpr_right_bpidcb_interval_mask_choice_prime -> bpr_left_bpidcb_interval_mask_choice_prime = 1 \/ bpr_right_bpidcb_interval_mask_choice_prime = 1)) /\ bpr_value_bpidcb_interval_mask = 1))))) /\ (exists ff_u_bpidcb_interval_product ff_v_bpidcb_interval_product. ((((exists ff_h_bpidcb_interval_product_start. ff_h_bpidcb_interval_product_start + S (1) = S ((S (0)) * ff_v_bpidcb_interval_product)) /\ exists ff_q_bpidcb_interval_product_start. ff_u_bpidcb_interval_product = ff_q_bpidcb_interval_product_start * S ((S (0)) * ff_v_bpidcb_interval_product) + (1))) /\ ((((exists ff_h_bpidcb_interval_product_terminal. ff_h_bpidcb_interval_product_terminal + S (z) = S ((S (l)) * ff_v_bpidcb_interval_product)) /\ exists ff_q_bpidcb_interval_product_terminal. ff_u_bpidcb_interval_product = ff_q_bpidcb_interval_product_terminal * S ((S (l)) * ff_v_bpidcb_interval_product) + (z))) /\ forall ff_i_bpidcb_interval_product. (exists ff_lt_bpidcb_interval_product_bound. ff_lt_bpidcb_interval_product_bound + S ff_i_bpidcb_interval_product = l) -> exists ff_p_bpidcb_interval_product ff_r_bpidcb_interval_product ff_s_bpidcb_interval_product. ((((exists ff_h_bpidcb_interval_product_factor. ff_h_bpidcb_interval_product_factor + S (ff_p_bpidcb_interval_product) = S ((S (ff_i_bpidcb_interval_product)) * bpr_scale_bpidcb_interval)) /\ exists ff_q_bpidcb_interval_product_factor. bpr_code_bpidcb_interval = ff_q_bpidcb_interval_product_factor * S ((S (ff_i_bpidcb_interval_product)) * bpr_scale_bpidcb_interval) + (ff_p_bpidcb_interval_product))) /\ ((((exists ff_h_bpidcb_interval_product_partial. ff_h_bpidcb_interval_product_partial + S (ff_r_bpidcb_interval_product) = S ((S (ff_i_bpidcb_interval_product)) * ff_v_bpidcb_interval_product)) /\ exists ff_q_bpidcb_interval_product_partial. ff_u_bpidcb_interval_product = ff_q_bpidcb_interval_product_partial * S ((S (ff_i_bpidcb_interval_product)) * ff_v_bpidcb_interval_product) + (ff_r_bpidcb_interval_product))) /\ ((((exists ff_h_bpidcb_interval_product_successor. ff_h_bpidcb_interval_product_successor + S (ff_s_bpidcb_interval_product) = S ((S (S ff_i_bpidcb_interval_product)) * ff_v_bpidcb_interval_product)) /\ exists ff_q_bpidcb_interval_product_successor. ff_u_bpidcb_interval_product = ff_q_bpidcb_interval_product_successor * S ((S (S ff_i_bpidcb_interval_product)) * ff_v_bpidcb_interval_product) + (ff_s_bpidcb_interval_product))) /\ ff_s_bpidcb_interval_product = ff_r_bpidcb_interval_product * ff_p_bpidcb_interval_product)))))))) -> (forall bpr_index_bpidcb_bounds. (exists bpr_gap_bpidcb_bounds_index. bpr_gap_bpidcb_bounds_index + S (bpr_index_bpidcb_bounds) = l) -> ((exists bpr_gap_bpidcb_bounds_left. bpr_gap_bpidcb_bounds_left + S (k) = S (a + bpr_index_bpidcb_bounds)) /\ ((exists bpr_gap_bpidcb_bounds_right. bpr_gap_bpidcb_bounds_right + S (j) = S (a + bpr_index_bpidcb_bounds)) /\ (exists bpr_le_gap_bpidcb_bounds_upper. bpr_le_gap_bpidcb_bounds_upper + (S (a + bpr_index_bpidcb_bounds)) = (n))))) -> (exists bpr_quotient_bpidcb_result. c = (z) * bpr_quotient_bpidcb_result)

Structural proof guide

A selector interval between both denominator indices divides Choose.

Direct prerequisites: beta_at_unique, one_multiple, choose_prime_divides_between, primorial_interval_pairwise_coprime, beta_pairwise_coprime_product_divides_common_multiple. The authored body proceeds by case analysis (10), intermediate claims (7), equality transport (6).

Proof neighborhood

Direct dependencies

Direct dependents

Formal native tactic body

Dependencies are hypotheses of this body receipt. The focused endpoint audits separately check the complete empty-context certificates.

  1. 0001intro a
  2. 0002intro l
  3. 0003intro n
  4. 0004intro k
  5. 0005intro j
  6. 0006intro c
  7. 0007intro z
  8. 0008intro hsum
  9. 0009intro hchoose
  10. 0010intro hinterval
  11. 0011intro hbounds
  12. 0012cases hinterval
  13. 0013cases hinterval_witness
  14. 0014cases hinterval_witness_witness
  15. 0015have hpairwise : forall bpr_left_index_bpidcb_pairwise bpr_right_index_bpidcb_pairwise bpr_left_value_bpidcb_pairwise bpr_right_value_bpidcb_pairwise. (exists bpr_gap_bpidcb_pairwise_left_bound. bpr_gap_bpidcb_pairwise_left_bound + S (bpr_left_index_bpidcb_pairwise) = l) -> (exists bpr_gap_bpidcb_pairwise_right_bound. bpr_gap_bpidcb_pairwise_right_bound + S (bpr_right_index_bpidcb_pairwise) = l) -> (((exists bpr_height_bpidcb_pairwise_left_at. bpr_height_bpidcb_pairwise_left_at + S (bpr_left_value_bpidcb_pairwise) = S ((S (bpr_left_index_bpidcb_pairwise)) * x1)) /\ exists bpr_quotient_bpidcb_pairwise_left_at. x = bpr_quotient_bpidcb_pairwise_left_at * S ((S (bpr_left_index_bpidcb_pairwise)) * x1) + (bpr_left_value_bpidcb_pairwise))) -> (((exists bpr_height_bpidcb_pairwise_right_at. bpr_height_bpidcb_pairwise_right_at + S (bpr_right_value_bpidcb_pairwise) = S ((S (bpr_right_index_bpidcb_pairwise)) * x1)) /\ exists bpr_quotient_bpidcb_pairwise_right_at. x = bpr_quotient_bpidcb_pairwise_right_at * S ((S (bpr_right_index_bpidcb_pairwise)) * x1) + (bpr_right_value_bpidcb_pairwise))) -> ~(bpr_left_index_bpidcb_pairwise = bpr_right_index_bpidcb_pairwise) -> (forall bpr_coprime_divisor_bpidcb_pairwise_coprime. (exists bpr_coprime_left_factor_bpidcb_pairwise_coprime. bpr_left_value_bpidcb_pairwise = bpr_coprime_divisor_bpidcb_pairwise_coprime * bpr_coprime_left_factor_bpidcb_pairwise_coprime) -> (exists bpr_coprime_right_factor_bpidcb_pairwise_coprime. bpr_right_value_bpidcb_pairwise = bpr_coprime_divisor_bpidcb_pairwise_coprime * bpr_coprime_right_factor_bpidcb_pairwise_coprime) -> bpr_coprime_divisor_bpidcb_pairwise_coprime = 1)
  16. 0016specialize primorial_interval_pairwise_coprime a
  17. 0017specialize primorial_interval_pairwise_coprime x
  18. 0018specialize primorial_interval_pairwise_coprime x1
  19. 0019specialize primorial_interval_pairwise_coprime l
  20. 0020apply primorial_interval_pairwise_coprime
  21. 0021exact hinterval_witness_witness_left
  22. 0022have hpointwise : forall bpr_divisor_index_bpidcb_pointwise bpr_divisor_value_bpidcb_pointwise. (exists bpr_gap_bpidcb_pointwise_index_bound. bpr_gap_bpidcb_pointwise_index_bound + S (bpr_divisor_index_bpidcb_pointwise) = l) -> (((exists bpr_height_bpidcb_pointwise_decoded. bpr_height_bpidcb_pointwise_decoded + S (bpr_divisor_value_bpidcb_pointwise) = S ((S (bpr_divisor_index_bpidcb_pointwise)) * x1)) /\ exists bpr_quotient_bpidcb_pointwise_decoded. x = bpr_quotient_bpidcb_pointwise_decoded * S ((S (bpr_divisor_index_bpidcb_pointwise)) * x1) + (bpr_divisor_value_bpidcb_pointwise))) -> exists bpr_quotient_bpidcb_pointwise_result. c = bpr_divisor_value_bpidcb_pointwise * bpr_quotient_bpidcb_pointwise_result
  23. 0023intro i
  24. 0024intro p
  25. 0025intro hi
  26. 0026intro hp
  27. 0027have hentry : exists x2. (((exists bpr_height_bpidcb_local_entry. bpr_height_bpidcb_local_entry + S (x2) = S ((S (i)) * x1)) /\ exists bpr_quotient_bpidcb_local_entry. x = bpr_quotient_bpidcb_local_entry * S ((S (i)) * x1) + (x2))) /\ (((((~(S (a + i) = 1) /\ forall bpr_left_bpidcb_local_choice_prime bpr_right_bpidcb_local_choice_prime. S (a + i) = bpr_left_bpidcb_local_choice_prime * bpr_right_bpidcb_local_choice_prime -> bpr_left_bpidcb_local_choice_prime = 1 \/ bpr_right_bpidcb_local_choice_prime = 1)) /\ x2 = S (a + i)) \/ (~((~(S (a + i) = 1) /\ forall bpr_left_bpidcb_local_choice_prime bpr_right_bpidcb_local_choice_prime. S (a + i) = bpr_left_bpidcb_local_choice_prime * bpr_right_bpidcb_local_choice_prime -> bpr_left_bpidcb_local_choice_prime = 1 \/ bpr_right_bpidcb_local_choice_prime = 1)) /\ x2 = 1)))
  28. 0028apply hinterval_witness_witness_left
  29. 0029exact hi
  30. 0030cases hentry
  31. 0031cases hentry_witness
  32. 0032have hxp : x2 = p
  33. 0033specialize beta_at_unique x
  34. 0034specialize beta_at_unique x1
  35. 0035specialize beta_at_unique i
  36. 0036specialize beta_at_unique x2
  37. 0037specialize beta_at_unique p
  38. 0038apply beta_at_unique
  39. 0039exact hentry_witness_left
  40. 0040exact hp
  41. 0041cases hentry_witness_right
  42. 0042cases hentry_witness_right_left
  43. 0043have hcandidate : p = S (a + i)
  44. 0044trans x2
  45. 0045symm
  46. 0046exact hxp
  47. 0047exact hentry_witness_right_left_right
  48. 0048have hlocal_bounds : (exists bpr_gap_bpidcb_local_left. bpr_gap_bpidcb_local_left + S (k) = S (a + i)) /\ ((exists bpr_gap_bpidcb_local_right. bpr_gap_bpidcb_local_right + S (j) = S (a + i)) /\ (exists bpr_le_gap_bpidcb_local_upper. bpr_le_gap_bpidcb_local_upper + (S (a + i)) = (n)))
  49. 0049specialize hbounds i
  50. 0050apply hbounds
  51. 0051exact hi
  52. 0052cases hlocal_bounds
  53. 0053cases hlocal_bounds_right
  54. 0054specialize choose_prime_divides_between n
  55. 0055specialize choose_prime_divides_between k
  56. 0056specialize choose_prime_divides_between j
  57. 0057specialize choose_prime_divides_between p
  58. 0058specialize choose_prime_divides_between c
  59. 0059apply choose_prime_divides_between
  60. 0060exact hsum
  61. 0061rewrite hcandidate
  62. 0062rewrite hcandidate
  63. 0063exact hentry_witness_right_left_left
  64. 0064rewrite hcandidate
  65. 0065exact hlocal_bounds_left
  66. 0066rewrite hcandidate
  67. 0067exact hlocal_bounds_right_left
  68. 0068rewrite hcandidate
  69. 0069exact hlocal_bounds_right_right
  70. 0070exact hchoose
  71. 0071cases hentry_witness_right_right
  72. 0072have hp_one : p = 1
  73. 0073trans x2
  74. 0074symm
  75. 0075exact hxp
  76. 0076exact hentry_witness_right_right_right
  77. 0077rewrite hp_one
  78. 0078specialize one_multiple c
  79. 0079exact one_multiple
  80. 0080specialize beta_pairwise_coprime_product_divides_common_multiple x
  81. 0081specialize beta_pairwise_coprime_product_divides_common_multiple x1
  82. 0082specialize beta_pairwise_coprime_product_divides_common_multiple l
  83. 0083specialize beta_pairwise_coprime_product_divides_common_multiple z
  84. 0084specialize beta_pairwise_coprime_product_divides_common_multiple c
  85. 0085apply beta_pairwise_coprime_product_divides_common_multiple
  86. 0086exact hpairwise
  87. 0087exact hpointwise
  88. 0088exact hinterval_witness_witness_right