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.
Exact expanded PA statement
forall s e f h u j g hn un. (forall bpt_a_hjt_h bpt_e_hjt_h. exists bpt_x_hjt_h. (exists ff_b_bpt_value_hjt_h ff_c_bpt_value_hjt_h. ((forall ff_i_bpt_value_hjt_h_repeat. (exists ff_lt_bpt_value_hjt_h_repeat_bound. ff_lt_bpt_value_hjt_h_repeat_bound + S ff_i_bpt_value_hjt_h_repeat = bpt_e_hjt_h) -> (((exists ff_h_bpt_value_hjt_h_repeat_decoded. ff_h_bpt_value_hjt_h_repeat_decoded + S (bpt_a_hjt_h) = S ((S (ff_i_bpt_value_hjt_h_repeat)) * ff_c_bpt_value_hjt_h)) /\ exists ff_q_bpt_value_hjt_h_repeat_decoded. ff_b_bpt_value_hjt_h = ff_q_bpt_value_hjt_h_repeat_decoded * S ((S (ff_i_bpt_value_hjt_h_repeat)) * ff_c_bpt_value_hjt_h) + (bpt_a_hjt_h)))) /\ (exists ff_u_bpt_value_hjt_h_product ff_v_bpt_value_hjt_h_product. ((((exists ff_h_bpt_value_hjt_h_product_start. ff_h_bpt_value_hjt_h_product_start + S (1) = S ((S (0)) * ff_v_bpt_value_hjt_h_product)) /\ exists ff_q_bpt_value_hjt_h_product_start. ff_u_bpt_value_hjt_h_product = ff_q_bpt_value_hjt_h_product_start * S ((S (0)) * ff_v_bpt_value_hjt_h_product) + (1))) /\ ((((exists ff_h_bpt_value_hjt_h_product_terminal. ff_h_bpt_value_hjt_h_product_terminal + S (bpt_x_hjt_h) = S ((S (bpt_e_hjt_h)) * ff_v_bpt_value_hjt_h_product)) /\ exists ff_q_bpt_value_hjt_h_product_terminal. ff_u_bpt_value_hjt_h_product = ff_q_bpt_value_hjt_h_product_terminal * S ((S (bpt_e_hjt_h)) * ff_v_bpt_value_hjt_h_product) + (bpt_x_hjt_h))) /\ forall ff_i_bpt_value_hjt_h_product. (exists ff_lt_bpt_value_hjt_h_product_bound. ff_lt_bpt_value_hjt_h_product_bound + S ff_i_bpt_value_hjt_h_product = bpt_e_hjt_h) -> exists ff_p_bpt_value_hjt_h_product ff_r_bpt_value_hjt_h_product ff_s_bpt_value_hjt_h_product. ((((exists ff_h_bpt_value_hjt_h_product_factor. ff_h_bpt_value_hjt_h_product_factor + S (ff_p_bpt_value_hjt_h_product) = S ((S (ff_i_bpt_value_hjt_h_product)) * ff_c_bpt_value_hjt_h)) /\ exists ff_q_bpt_value_hjt_h_product_factor. ff_b_bpt_value_hjt_h = ff_q_bpt_value_hjt_h_product_factor * S ((S (ff_i_bpt_value_hjt_h_product)) * ff_c_bpt_value_hjt_h) + (ff_p_bpt_value_hjt_h_product))) /\ ((((exists ff_h_bpt_value_hjt_h_product_partial. ff_h_bpt_value_hjt_h_product_partial + S (ff_r_bpt_value_hjt_h_product) = S ((S (ff_i_bpt_value_hjt_h_product)) * ff_v_bpt_value_hjt_h_product)) /\ exists ff_q_bpt_value_hjt_h_product_partial. ff_u_bpt_value_hjt_h_product = ff_q_bpt_value_hjt_h_product_partial * S ((S (ff_i_bpt_value_hjt_h_product)) * ff_v_bpt_value_hjt_h_product) + (ff_r_bpt_value_hjt_h_product))) /\ ((((exists ff_h_bpt_value_hjt_h_product_successor. ff_h_bpt_value_hjt_h_product_successor + S (ff_s_bpt_value_hjt_h_product) = S ((S (S ff_i_bpt_value_hjt_h_product)) * ff_v_bpt_value_hjt_h_product)) /\ exists ff_q_bpt_value_hjt_h_product_successor. ff_u_bpt_value_hjt_h_product = ff_q_bpt_value_hjt_h_product_successor * S ((S (S ff_i_bpt_value_hjt_h_product)) * ff_v_bpt_value_hjt_h_product) + (ff_s_bpt_value_hjt_h_product))) /\ ff_s_bpt_value_hjt_h_product = ff_r_bpt_value_hjt_h_product * ff_p_bpt_value_hjt_h_product))))))))) -> (exists bqb_le_gap_hjt_h_lower. bqb_le_gap_hjt_h_lower + (5) = (s)) -> (((exists bcs_lower_gap_hjt_h_ceiling. bcs_lower_gap_hjt_h_ceiling + (s * s) = 6 * (e)) /\ exists bcs_upper_gap_hjt_h_ceiling. bcs_upper_gap_hjt_h_ceiling + S (6 * (e)) = (s * s) + 6)) -> (((exists bcs_lower_gap_hjt_h_next_ceiling. bcs_lower_gap_hjt_h_next_ceiling + ((s + 6) * (s + 6)) = 6 * (f)) /\ exists bcs_upper_gap_hjt_h_next_ceiling. bcs_upper_gap_hjt_h_next_ceiling + S (6 * (f)) = ((s + 6) * (s + 6)) + 6)) -> (exists pa_b_hjt_h_now pa_c_hjt_h_now. ((forall pa_i_hjt_h_now_repeat. (exists pa_lt_hjt_h_now_repeat_bound. pa_lt_hjt_h_now_repeat_bound + S pa_i_hjt_h_now_repeat = 2 * s + 2) -> (((exists pa_h_hjt_h_now_repeat_decoded. pa_h_hjt_h_now_repeat_decoded + S (s + 1) = S ((S (pa_i_hjt_h_now_repeat)) * pa_c_hjt_h_now)) /\ exists pa_q_hjt_h_now_repeat_decoded. pa_b_hjt_h_now = pa_q_hjt_h_now_repeat_decoded * S ((S (pa_i_hjt_h_now_repeat)) * pa_c_hjt_h_now) + (s + 1)))) /\ (exists pa_u_hjt_h_now_product pa_v_hjt_h_now_product. ((((exists pa_h_hjt_h_now_product_start. pa_h_hjt_h_now_product_start + S (1) = S ((S (0)) * pa_v_hjt_h_now_product)) /\ exists pa_q_hjt_h_now_product_start. pa_u_hjt_h_now_product = pa_q_hjt_h_now_product_start * S ((S (0)) * pa_v_hjt_h_now_product) + (1))) /\ ((((exists pa_h_hjt_h_now_product_terminal. pa_h_hjt_h_now_product_terminal + S (h) = S ((S (2 * s + 2)) * pa_v_hjt_h_now_product)) /\ exists pa_q_hjt_h_now_product_terminal. pa_u_hjt_h_now_product = pa_q_hjt_h_now_product_terminal * S ((S (2 * s + 2)) * pa_v_hjt_h_now_product) + (h))) /\ forall pa_i_hjt_h_now_product. (exists pa_lt_hjt_h_now_product_bound. pa_lt_hjt_h_now_product_bound + S pa_i_hjt_h_now_product = 2 * s + 2) -> exists pa_p_hjt_h_now_product pa_r_hjt_h_now_product pa_s_hjt_h_now_product. ((((exists pa_h_hjt_h_now_product_factor. pa_h_hjt_h_now_product_factor + S (pa_p_hjt_h_now_product) = S ((S (pa_i_hjt_h_now_product)) * pa_c_hjt_h_now)) /\ exists pa_q_hjt_h_now_product_factor. pa_b_hjt_h_now = pa_q_hjt_h_now_product_factor * S ((S (pa_i_hjt_h_now_product)) * pa_c_hjt_h_now) + (pa_p_hjt_h_now_product))) /\ ((((exists pa_h_hjt_h_now_product_partial. pa_h_hjt_h_now_product_partial + S (pa_r_hjt_h_now_product) = S ((S (pa_i_hjt_h_now_product)) * pa_v_hjt_h_now_product)) /\ exists pa_q_hjt_h_now_product_partial. pa_u_hjt_h_now_product = pa_q_hjt_h_now_product_partial * S ((S (pa_i_hjt_h_now_product)) * pa_v_hjt_h_now_product) + (pa_r_hjt_h_now_product))) /\ ((((exists pa_h_hjt_h_now_product_successor. pa_h_hjt_h_now_product_successor + S (pa_s_hjt_h_now_product) = S ((S (S pa_i_hjt_h_now_product)) * pa_v_hjt_h_now_product)) /\ exists pa_q_hjt_h_now_product_successor. pa_u_hjt_h_now_product = pa_q_hjt_h_now_product_successor * S ((S (S pa_i_hjt_h_now_product)) * pa_v_hjt_h_now_product) + (pa_s_hjt_h_now_product))) /\ pa_s_hjt_h_now_product = pa_r_hjt_h_now_product * pa_p_hjt_h_now_product)))))))) -> (exists pa_b_hjt_h_now_bound pa_c_hjt_h_now_bound. ((forall pa_i_hjt_h_now_bound_repeat. (exists pa_lt_hjt_h_now_bound_repeat_bound. pa_lt_hjt_h_now_bound_repeat_bound + S pa_i_hjt_h_now_bound_repeat = e) -> (((exists pa_h_hjt_h_now_bound_repeat_decoded. pa_h_hjt_h_now_bound_repeat_decoded + S (4) = S ((S (pa_i_hjt_h_now_bound_repeat)) * pa_c_hjt_h_now_bound)) /\ exists pa_q_hjt_h_now_bound_repeat_decoded. pa_b_hjt_h_now_bound = pa_q_hjt_h_now_bound_repeat_decoded * S ((S (pa_i_hjt_h_now_bound_repeat)) * pa_c_hjt_h_now_bound) + (4)))) /\ (exists pa_u_hjt_h_now_bound_product pa_v_hjt_h_now_bound_product. ((((exists pa_h_hjt_h_now_bound_product_start. pa_h_hjt_h_now_bound_product_start + S (1) = S ((S (0)) * pa_v_hjt_h_now_bound_product)) /\ exists pa_q_hjt_h_now_bound_product_start. pa_u_hjt_h_now_bound_product = pa_q_hjt_h_now_bound_product_start * S ((S (0)) * pa_v_hjt_h_now_bound_product) + (1))) /\ ((((exists pa_h_hjt_h_now_bound_product_terminal. pa_h_hjt_h_now_bound_product_terminal + S (u) = S ((S (e)) * pa_v_hjt_h_now_bound_product)) /\ exists pa_q_hjt_h_now_bound_product_terminal. pa_u_hjt_h_now_bound_product = pa_q_hjt_h_now_bound_product_terminal * S ((S (e)) * pa_v_hjt_h_now_bound_product) + (u))) /\ forall pa_i_hjt_h_now_bound_product. (exists pa_lt_hjt_h_now_bound_product_bound. pa_lt_hjt_h_now_bound_product_bound + S pa_i_hjt_h_now_bound_product = e) -> exists pa_p_hjt_h_now_bound_product pa_r_hjt_h_now_bound_product pa_s_hjt_h_now_bound_product. ((((exists pa_h_hjt_h_now_bound_product_factor. pa_h_hjt_h_now_bound_product_factor + S (pa_p_hjt_h_now_bound_product) = S ((S (pa_i_hjt_h_now_bound_product)) * pa_c_hjt_h_now_bound)) /\ exists pa_q_hjt_h_now_bound_product_factor. pa_b_hjt_h_now_bound = pa_q_hjt_h_now_bound_product_factor * S ((S (pa_i_hjt_h_now_bound_product)) * pa_c_hjt_h_now_bound) + (pa_p_hjt_h_now_bound_product))) /\ ((((exists pa_h_hjt_h_now_bound_product_partial. pa_h_hjt_h_now_bound_product_partial + S (pa_r_hjt_h_now_bound_product) = S ((S (pa_i_hjt_h_now_bound_product)) * pa_v_hjt_h_now_bound_product)) /\ exists pa_q_hjt_h_now_bound_product_partial. pa_u_hjt_h_now_bound_product = pa_q_hjt_h_now_bound_product_partial * S ((S (pa_i_hjt_h_now_bound_product)) * pa_v_hjt_h_now_bound_product) + (pa_r_hjt_h_now_bound_product))) /\ ((((exists pa_h_hjt_h_now_bound_product_successor. pa_h_hjt_h_now_bound_product_successor + S (pa_s_hjt_h_now_bound_product) = S ((S (S pa_i_hjt_h_now_bound_product)) * pa_v_hjt_h_now_bound_product)) /\ exists pa_q_hjt_h_now_bound_product_successor. pa_u_hjt_h_now_bound_product = pa_q_hjt_h_now_bound_product_successor * S ((S (S pa_i_hjt_h_now_bound_product)) * pa_v_hjt_h_now_bound_product) + (pa_s_hjt_h_now_bound_product))) /\ pa_s_hjt_h_now_bound_product = pa_r_hjt_h_now_bound_product * pa_p_hjt_h_now_bound_product)))))))) -> (exists bqb_le_gap_hjt_h_now_result. bqb_le_gap_hjt_h_now_result + (h) = (u)) -> (exists pa_b_hjt_h_guard pa_c_hjt_h_guard. ((forall pa_i_hjt_h_guard_repeat. (exists pa_lt_hjt_h_guard_repeat_bound. pa_lt_hjt_h_guard_repeat_bound + S pa_i_hjt_h_guard_repeat = 12) -> (((exists pa_h_hjt_h_guard_repeat_decoded. pa_h_hjt_h_guard_repeat_decoded + S (s + 7) = S ((S (pa_i_hjt_h_guard_repeat)) * pa_c_hjt_h_guard)) /\ exists pa_q_hjt_h_guard_repeat_decoded. pa_b_hjt_h_guard = pa_q_hjt_h_guard_repeat_decoded * S ((S (pa_i_hjt_h_guard_repeat)) * pa_c_hjt_h_guard) + (s + 7)))) /\ (exists pa_u_hjt_h_guard_product pa_v_hjt_h_guard_product. ((((exists pa_h_hjt_h_guard_product_start. pa_h_hjt_h_guard_product_start + S (1) = S ((S (0)) * pa_v_hjt_h_guard_product)) /\ exists pa_q_hjt_h_guard_product_start. pa_u_hjt_h_guard_product = pa_q_hjt_h_guard_product_start * S ((S (0)) * pa_v_hjt_h_guard_product) + (1))) /\ ((((exists pa_h_hjt_h_guard_product_terminal. pa_h_hjt_h_guard_product_terminal + S (j) = S ((S (12)) * pa_v_hjt_h_guard_product)) /\ exists pa_q_hjt_h_guard_product_terminal. pa_u_hjt_h_guard_product = pa_q_hjt_h_guard_product_terminal * S ((S (12)) * pa_v_hjt_h_guard_product) + (j))) /\ forall pa_i_hjt_h_guard_product. (exists pa_lt_hjt_h_guard_product_bound. pa_lt_hjt_h_guard_product_bound + S pa_i_hjt_h_guard_product = 12) -> exists pa_p_hjt_h_guard_product pa_r_hjt_h_guard_product pa_s_hjt_h_guard_product. ((((exists pa_h_hjt_h_guard_product_factor. pa_h_hjt_h_guard_product_factor + S (pa_p_hjt_h_guard_product) = S ((S (pa_i_hjt_h_guard_product)) * pa_c_hjt_h_guard)) /\ exists pa_q_hjt_h_guard_product_factor. pa_b_hjt_h_guard = pa_q_hjt_h_guard_product_factor * S ((S (pa_i_hjt_h_guard_product)) * pa_c_hjt_h_guard) + (pa_p_hjt_h_guard_product))) /\ ((((exists pa_h_hjt_h_guard_product_partial. pa_h_hjt_h_guard_product_partial + S (pa_r_hjt_h_guard_product) = S ((S (pa_i_hjt_h_guard_product)) * pa_v_hjt_h_guard_product)) /\ exists pa_q_hjt_h_guard_product_partial. pa_u_hjt_h_guard_product = pa_q_hjt_h_guard_product_partial * S ((S (pa_i_hjt_h_guard_product)) * pa_v_hjt_h_guard_product) + (pa_r_hjt_h_guard_product))) /\ ((((exists pa_h_hjt_h_guard_product_successor. pa_h_hjt_h_guard_product_successor + S (pa_s_hjt_h_guard_product) = S ((S (S pa_i_hjt_h_guard_product)) * pa_v_hjt_h_guard_product)) /\ exists pa_q_hjt_h_guard_product_successor. pa_u_hjt_h_guard_product = pa_q_hjt_h_guard_product_successor * S ((S (S pa_i_hjt_h_guard_product)) * pa_v_hjt_h_guard_product) + (pa_s_hjt_h_guard_product))) /\ pa_s_hjt_h_guard_product = pa_r_hjt_h_guard_product * pa_p_hjt_h_guard_product)))))))) -> (exists pa_b_hjt_h_guard_bound pa_c_hjt_h_guard_bound. ((forall pa_i_hjt_h_guard_bound_repeat. (exists pa_lt_hjt_h_guard_bound_repeat_bound. pa_lt_hjt_h_guard_bound_repeat_bound + S pa_i_hjt_h_guard_bound_repeat = s + 5) -> (((exists pa_h_hjt_h_guard_bound_repeat_decoded. pa_h_hjt_h_guard_bound_repeat_decoded + S (4) = S ((S (pa_i_hjt_h_guard_bound_repeat)) * pa_c_hjt_h_guard_bound)) /\ exists pa_q_hjt_h_guard_bound_repeat_decoded. pa_b_hjt_h_guard_bound = pa_q_hjt_h_guard_bound_repeat_decoded * S ((S (pa_i_hjt_h_guard_bound_repeat)) * pa_c_hjt_h_guard_bound) + (4)))) /\ (exists pa_u_hjt_h_guard_bound_product pa_v_hjt_h_guard_bound_product. ((((exists pa_h_hjt_h_guard_bound_product_start. pa_h_hjt_h_guard_bound_product_start + S (1) = S ((S (0)) * pa_v_hjt_h_guard_bound_product)) /\ exists pa_q_hjt_h_guard_bound_product_start. pa_u_hjt_h_guard_bound_product = pa_q_hjt_h_guard_bound_product_start * S ((S (0)) * pa_v_hjt_h_guard_bound_product) + (1))) /\ ((((exists pa_h_hjt_h_guard_bound_product_terminal. pa_h_hjt_h_guard_bound_product_terminal + S (g) = S ((S (s + 5)) * pa_v_hjt_h_guard_bound_product)) /\ exists pa_q_hjt_h_guard_bound_product_terminal. pa_u_hjt_h_guard_bound_product = pa_q_hjt_h_guard_bound_product_terminal * S ((S (s + 5)) * pa_v_hjt_h_guard_bound_product) + (g))) /\ forall pa_i_hjt_h_guard_bound_product. (exists pa_lt_hjt_h_guard_bound_product_bound. pa_lt_hjt_h_guard_bound_product_bound + S pa_i_hjt_h_guard_bound_product = s + 5) -> exists pa_p_hjt_h_guard_bound_product pa_r_hjt_h_guard_bound_product pa_s_hjt_h_guard_bound_product. ((((exists pa_h_hjt_h_guard_bound_product_factor. pa_h_hjt_h_guard_bound_product_factor + S (pa_p_hjt_h_guard_bound_product) = S ((S (pa_i_hjt_h_guard_bound_product)) * pa_c_hjt_h_guard_bound)) /\ exists pa_q_hjt_h_guard_bound_product_factor. pa_b_hjt_h_guard_bound = pa_q_hjt_h_guard_bound_product_factor * S ((S (pa_i_hjt_h_guard_bound_product)) * pa_c_hjt_h_guard_bound) + (pa_p_hjt_h_guard_bound_product))) /\ ((((exists pa_h_hjt_h_guard_bound_product_partial. pa_h_hjt_h_guard_bound_product_partial + S (pa_r_hjt_h_guard_bound_product) = S ((S (pa_i_hjt_h_guard_bound_product)) * pa_v_hjt_h_guard_bound_product)) /\ exists pa_q_hjt_h_guard_bound_product_partial. pa_u_hjt_h_guard_bound_product = pa_q_hjt_h_guard_bound_product_partial * S ((S (pa_i_hjt_h_guard_bound_product)) * pa_v_hjt_h_guard_bound_product) + (pa_r_hjt_h_guard_bound_product))) /\ ((((exists pa_h_hjt_h_guard_bound_product_successor. pa_h_hjt_h_guard_bound_product_successor + S (pa_s_hjt_h_guard_bound_product) = S ((S (S pa_i_hjt_h_guard_bound_product)) * pa_v_hjt_h_guard_bound_product)) /\ exists pa_q_hjt_h_guard_bound_product_successor. pa_u_hjt_h_guard_bound_product = pa_q_hjt_h_guard_bound_product_successor * S ((S (S pa_i_hjt_h_guard_bound_product)) * pa_v_hjt_h_guard_bound_product) + (pa_s_hjt_h_guard_bound_product))) /\ pa_s_hjt_h_guard_bound_product = pa_r_hjt_h_guard_bound_product * pa_p_hjt_h_guard_bound_product)))))))) -> (exists bqb_le_gap_hjt_h_guard_result. bqb_le_gap_hjt_h_guard_result + (j) = (g)) -> (exists pa_b_hjt_h_next pa_c_hjt_h_next. ((forall pa_i_hjt_h_next_repeat. (exists pa_lt_hjt_h_next_repeat_bound. pa_lt_hjt_h_next_repeat_bound + S pa_i_hjt_h_next_repeat = 2 * s + 14) -> (((exists pa_h_hjt_h_next_repeat_decoded. pa_h_hjt_h_next_repeat_decoded + S (s + 7) = S ((S (pa_i_hjt_h_next_repeat)) * pa_c_hjt_h_next)) /\ exists pa_q_hjt_h_next_repeat_decoded. pa_b_hjt_h_next = pa_q_hjt_h_next_repeat_decoded * S ((S (pa_i_hjt_h_next_repeat)) * pa_c_hjt_h_next) + (s + 7)))) /\ (exists pa_u_hjt_h_next_product pa_v_hjt_h_next_product. ((((exists pa_h_hjt_h_next_product_start. pa_h_hjt_h_next_product_start + S (1) = S ((S (0)) * pa_v_hjt_h_next_product)) /\ exists pa_q_hjt_h_next_product_start. pa_u_hjt_h_next_product = pa_q_hjt_h_next_product_start * S ((S (0)) * pa_v_hjt_h_next_product) + (1))) /\ ((((exists pa_h_hjt_h_next_product_terminal. pa_h_hjt_h_next_product_terminal + S (hn) = S ((S (2 * s + 14)) * pa_v_hjt_h_next_product)) /\ exists pa_q_hjt_h_next_product_terminal. pa_u_hjt_h_next_product = pa_q_hjt_h_next_product_terminal * S ((S (2 * s + 14)) * pa_v_hjt_h_next_product) + (hn))) /\ forall pa_i_hjt_h_next_product. (exists pa_lt_hjt_h_next_product_bound. pa_lt_hjt_h_next_product_bound + S pa_i_hjt_h_next_product = 2 * s + 14) -> exists pa_p_hjt_h_next_product pa_r_hjt_h_next_product pa_s_hjt_h_next_product. ((((exists pa_h_hjt_h_next_product_factor. pa_h_hjt_h_next_product_factor + S (pa_p_hjt_h_next_product) = S ((S (pa_i_hjt_h_next_product)) * pa_c_hjt_h_next)) /\ exists pa_q_hjt_h_next_product_factor. pa_b_hjt_h_next = pa_q_hjt_h_next_product_factor * S ((S (pa_i_hjt_h_next_product)) * pa_c_hjt_h_next) + (pa_p_hjt_h_next_product))) /\ ((((exists pa_h_hjt_h_next_product_partial. pa_h_hjt_h_next_product_partial + S (pa_r_hjt_h_next_product) = S ((S (pa_i_hjt_h_next_product)) * pa_v_hjt_h_next_product)) /\ exists pa_q_hjt_h_next_product_partial. pa_u_hjt_h_next_product = pa_q_hjt_h_next_product_partial * S ((S (pa_i_hjt_h_next_product)) * pa_v_hjt_h_next_product) + (pa_r_hjt_h_next_product))) /\ ((((exists pa_h_hjt_h_next_product_successor. pa_h_hjt_h_next_product_successor + S (pa_s_hjt_h_next_product) = S ((S (S pa_i_hjt_h_next_product)) * pa_v_hjt_h_next_product)) /\ exists pa_q_hjt_h_next_product_successor. pa_u_hjt_h_next_product = pa_q_hjt_h_next_product_successor * S ((S (S pa_i_hjt_h_next_product)) * pa_v_hjt_h_next_product) + (pa_s_hjt_h_next_product))) /\ pa_s_hjt_h_next_product = pa_r_hjt_h_next_product * pa_p_hjt_h_next_product)))))))) -> (exists pa_b_hjt_h_next_bound pa_c_hjt_h_next_bound. ((forall pa_i_hjt_h_next_bound_repeat. (exists pa_lt_hjt_h_next_bound_repeat_bound. pa_lt_hjt_h_next_bound_repeat_bound + S pa_i_hjt_h_next_bound_repeat = f) -> (((exists pa_h_hjt_h_next_bound_repeat_decoded. pa_h_hjt_h_next_bound_repeat_decoded + S (4) = S ((S (pa_i_hjt_h_next_bound_repeat)) * pa_c_hjt_h_next_bound)) /\ exists pa_q_hjt_h_next_bound_repeat_decoded. pa_b_hjt_h_next_bound = pa_q_hjt_h_next_bound_repeat_decoded * S ((S (pa_i_hjt_h_next_bound_repeat)) * pa_c_hjt_h_next_bound) + (4)))) /\ (exists pa_u_hjt_h_next_bound_product pa_v_hjt_h_next_bound_product. ((((exists pa_h_hjt_h_next_bound_product_start. pa_h_hjt_h_next_bound_product_start + S (1) = S ((S (0)) * pa_v_hjt_h_next_bound_product)) /\ exists pa_q_hjt_h_next_bound_product_start. pa_u_hjt_h_next_bound_product = pa_q_hjt_h_next_bound_product_start * S ((S (0)) * pa_v_hjt_h_next_bound_product) + (1))) /\ ((((exists pa_h_hjt_h_next_bound_product_terminal. pa_h_hjt_h_next_bound_product_terminal + S (un) = S ((S (f)) * pa_v_hjt_h_next_bound_product)) /\ exists pa_q_hjt_h_next_bound_product_terminal. pa_u_hjt_h_next_bound_product = pa_q_hjt_h_next_bound_product_terminal * S ((S (f)) * pa_v_hjt_h_next_bound_product) + (un))) /\ forall pa_i_hjt_h_next_bound_product. (exists pa_lt_hjt_h_next_bound_product_bound. pa_lt_hjt_h_next_bound_product_bound + S pa_i_hjt_h_next_bound_product = f) -> exists pa_p_hjt_h_next_bound_product pa_r_hjt_h_next_bound_product pa_s_hjt_h_next_bound_product. ((((exists pa_h_hjt_h_next_bound_product_factor. pa_h_hjt_h_next_bound_product_factor + S (pa_p_hjt_h_next_bound_product) = S ((S (pa_i_hjt_h_next_bound_product)) * pa_c_hjt_h_next_bound)) /\ exists pa_q_hjt_h_next_bound_product_factor. pa_b_hjt_h_next_bound = pa_q_hjt_h_next_bound_product_factor * S ((S (pa_i_hjt_h_next_bound_product)) * pa_c_hjt_h_next_bound) + (pa_p_hjt_h_next_bound_product))) /\ ((((exists pa_h_hjt_h_next_bound_product_partial. pa_h_hjt_h_next_bound_product_partial + S (pa_r_hjt_h_next_bound_product) = S ((S (pa_i_hjt_h_next_bound_product)) * pa_v_hjt_h_next_bound_product)) /\ exists pa_q_hjt_h_next_bound_product_partial. pa_u_hjt_h_next_bound_product = pa_q_hjt_h_next_bound_product_partial * S ((S (pa_i_hjt_h_next_bound_product)) * pa_v_hjt_h_next_bound_product) + (pa_r_hjt_h_next_bound_product))) /\ ((((exists pa_h_hjt_h_next_bound_product_successor. pa_h_hjt_h_next_bound_product_successor + S (pa_s_hjt_h_next_bound_product) = S ((S (S pa_i_hjt_h_next_bound_product)) * pa_v_hjt_h_next_bound_product)) /\ exists pa_q_hjt_h_next_bound_product_successor. pa_u_hjt_h_next_bound_product = pa_q_hjt_h_next_bound_product_successor * S ((S (S pa_i_hjt_h_next_bound_product)) * pa_v_hjt_h_next_bound_product) + (pa_s_hjt_h_next_bound_product))) /\ pa_s_hjt_h_next_bound_product = pa_r_hjt_h_next_bound_product * pa_p_hjt_h_next_bound_product)))))))) -> (exists bqb_le_gap_hjt_h_next_result. bqb_le_gap_hjt_h_next_result + (hn) = (un))Structural proof guide
H(s) and J(s) together imply H(s+6).
Direct prerequisites: ceil_div_six_square_six_step, two_mul_eq_add_self, pow_base_monotone, pow_mul_base, pow_two_seed_bundle_from_total, pow_mul_exp_from_total, pow_add, mul_le_mul, le_refl, le_trans, add_assoc, add_comm, add_succ_left. The authored body proceeds by case analysis (7), intermediate claims (21), equality transport (10).
Proof neighborhood
Direct dependencies
BT00R5 ceil_div_six_square_six_step BT00QU two_mul_eq_add_self BT00PY pow_base_monotone BT00QV pow_mul_base BT00SO pow_two_seed_bundle_from_total BT00SM pow_mul_exp_from_total BT009X pow_add BT00PV mul_le_mul BT000E le_refl BT000F le_trans BT0003 add_assoc BT0002 add_comm BT0001 add_succ_leftDirect dependents
Formal native tactic body
Dependencies are hypotheses of the historical Alpha-v12 body receipt. The complete historical Alpha-v18 proof bundle independently checks every dependency; current Alpha v25 preserves that checked theorem use without changing Stable membership.
Read the argument
Proof checkpoints
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.
Named ingredients (12)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–20
03Fix variables and assumptionsL21–21
Work with arbitrary variables or the premises of the current implication.
- L21
intro hun
04Establish hceilshiftL22–28
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply ceil div six square six step.
05Separate the logical casesL29–29
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L29
cases hlower
06Establish hbaseL30–30
Establish this local claim before using it. It is not an additional assumption.
- L30
have hbase : exists bqb_le_gap_hjt_h_base. bqb_le_gap_hjt_h_base + (s + 7) = (2 * (s + 1))
07Construct an explicit witnessL31–31
Supply the displayed value, then prove that it has the required property.
- L31
exists x
08Calculate and transport equalitiesL32–36
09Establish honeL37–41
10Establish hdouble_exponentL42–44
11Establish hprefix_existsL45–48
12Separate the logical casesL49–49
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L49
cases hprefix_exists
13Establish hdouble_existsL50–53
14Separate the logical casesL54–54
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L54
cases hdouble_exists
15Establish hprefix_doubleL55–64
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow base monotone.
- L55
have hprefix_double : exists bqb_le_gap_hjt_h_prefix_double. bqb_le_gap_hjt_h_prefix_double + (x1) = (x2) - L56
specialize pow_base_monotone (s + 7) - L57
specialize pow_base_monotone (2 * (s + 1)) - L58
specialize pow_base_monotone (2 * s + 2) - L59
specialize pow_base_monotone x1 - L60
specialize pow_base_monotone x2 - L61
apply pow_base_monotone - L62
exact hbase - L63
exact hprefix_exists_witness - L64
exact hdouble_exists_witness
16Establish htwo_existsL65–68
17Separate the logical casesL69–69
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L69
cases htwo_exists
18Establish hfour_existsL70–73
19Separate the logical casesL74–74
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L74
cases hfour_exists
20Establish hseedsL75–77
21Separate the logical casesL78–78
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L78
cases hseeds
22Establish htwo_fourL79–88
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow mul exp from total.
- L79
have htwo_four : x3 = x4 - L80
specialize pow_mul_exp_from_total 2 - L81
specialize pow_mul_exp_from_total 2 - L82
specialize pow_mul_exp_from_total (s + 1) - L83
specialize pow_mul_exp_from_total (2 * s + 2) - L84
specialize pow_mul_exp_from_total 4 - L85
specialize pow_mul_exp_from_total x4 - L86
specialize pow_mul_exp_from_total x3 - L87
symm - L88
apply pow_mul_exp_from_total
23Use earlier factsL89–89
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L89
exact htotal
24Calculate and transport equalitiesL90–90
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L90
symm
25Use earlier factsL91–94
26Establish hdouble_factorL95–104
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow mul base.
27Use earlier factsL105–105
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L105
exact hdouble_exists_witness
28Calculate and transport equalitiesL106–107
29Establish hhfactor_boundL108–116
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul le mul.
- L108
have hhfactor_bound : exists bqb_le_gap_hjt_h_factor_bound. bqb_le_gap_hjt_h_factor_bound + (x4 * h) = (x4 * u) - L109
specialize mul_le_mul x4 - L110
specialize mul_le_mul x4 - L111
specialize mul_le_mul h - L112
specialize mul_le_mul u - L113
apply mul_le_mul - L114
specialize le_refl x4 - L115
exact le_refl - L116
exact hhu
30Establish hprefix_boundL117–123
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le trans.
31Establish hnext_sumL124–125
32Establish hnext_factorL126–135
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow add.
33Use earlier factsL136–138
34Establish hbound_prefix_existsL139–142
35Separate the logical casesL143–143
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L143
cases hbound_prefix_exists
36Establish hbound_prefix_factorL144–153
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow add.
37Use earlier factsL154–156
38Establish hbound_sumL157–166
39Calculate and transport equalitiesL167–168
40Use earlier factsL169–169
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L169
apply add_assoc
41Calculate and transport equalitiesL170–171
42Use earlier factsL172–172
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L172
apply add_comm
43Calculate and transport equalitiesL173–173
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L173
refl
44Use earlier factsL174–174
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L174
apply add_assoc
45Calculate and transport equalitiesL175–175
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L175
symm
46Use earlier factsL176–176
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L176
apply add_succ_left
47Establish hbound_factorL177–186
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow add.
48Use earlier factsL187–189
49Establish hproductsL190–199
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul le mul.
- L190
have hproducts : exists bqb_le_gap_hjt_h_products. bqb_le_gap_hjt_h_products + (x1 * j) = ((x4 * u) * g) - L191
specialize mul_le_mul x1 - L192
specialize mul_le_mul (x4 * u) - L193
specialize mul_le_mul j - L194
specialize mul_le_mul g - L195
apply mul_le_mul - L196
exact hprefix_bound - L197
exact hjg - L198
rewrite hnext_factor - L199
rewrite hbound_factor
50Calculate and transport equalitiesL200–200
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L200
rewrite hbound_prefix_factor
51Use earlier factsL201–201
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L201
exact hproducts
Original exact command ledger · 201 lines
- 0001
intro s - 0002
intro e - 0003
intro f - 0004
intro h - 0005
intro u - 0006
intro j - 0007
intro g - 0008
intro hn - 0009
intro un - 0010
intro htotal - 0011
intro hlower - 0012
intro hceiling - 0013
intro hnextceiling - 0014
intro hh - 0015
intro hu - 0016
intro hhu - 0017
intro hj - 0018
intro hg - 0019
intro hjg - 0020
intro hhn - 0021
intro hun - 0022
have hceilshift : f = e + (2 * s + 6) - 0023
specialize ceil_div_six_square_six_step s - 0024
specialize ceil_div_six_square_six_step e - 0025
specialize ceil_div_six_square_six_step f - 0026
apply ceil_div_six_square_six_step - 0027
exact hceiling - 0028
exact hnextceiling - 0029
cases hlower - 0030
have hbase : exists bqb_le_gap_hjt_h_base. bqb_le_gap_hjt_h_base + (s + 7) = (2 * (s + 1)) - 0031
exists x - 0032
rewrite <- hlower_witness - 0033
simp [two_mul_eq_add_self, add_assoc, add_comm] - 0034
rewrite <- hlower_witness - 0035
rewrite <- hlower_witness - 0036
simp [add_assoc, add_comm] - 0037
have hone : s + 1 = S s - 0038
trans S (s + 0) - 0039
apply PA4 - 0040
congr - 0041
apply PA3 - 0042
have hdouble_exponent : 2 * (s + 1) = 2 * s + 2 - 0043
rewrite hone - 0044
apply PA6 - 0045
have hprefix_exists : exists hp. (exists pa_b_hjt_h_prefix pa_c_hjt_h_prefix. ((forall pa_i_hjt_h_prefix_repeat. (exists pa_lt_hjt_h_prefix_repeat_bound. pa_lt_hjt_h_prefix_repeat_bound + S pa_i_hjt_h_prefix_repeat = 2 * s + 2) -> (((exists pa_h_hjt_h_prefix_repeat_decoded. pa_h_hjt_h_prefix_repeat_decoded + S (s + 7) = S ((S (pa_i_hjt_h_prefix_repeat)) * pa_c_hjt_h_prefix)) /\ exists pa_q_hjt_h_prefix_repeat_decoded. pa_b_hjt_h_prefix = pa_q_hjt_h_prefix_repeat_decoded * S ((S (pa_i_hjt_h_prefix_repeat)) * pa_c_hjt_h_prefix) + (s + 7)))) /\ (exists pa_u_hjt_h_prefix_product pa_v_hjt_h_prefix_product. ((((exists pa_h_hjt_h_prefix_product_start. pa_h_hjt_h_prefix_product_start + S (1) = S ((S (0)) * pa_v_hjt_h_prefix_product)) /\ exists pa_q_hjt_h_prefix_product_start. pa_u_hjt_h_prefix_product = pa_q_hjt_h_prefix_product_start * S ((S (0)) * pa_v_hjt_h_prefix_product) + (1))) /\ ((((exists pa_h_hjt_h_prefix_product_terminal. pa_h_hjt_h_prefix_product_terminal + S (hp) = S ((S (2 * s + 2)) * pa_v_hjt_h_prefix_product)) /\ exists pa_q_hjt_h_prefix_product_terminal. pa_u_hjt_h_prefix_product = pa_q_hjt_h_prefix_product_terminal * S ((S (2 * s + 2)) * pa_v_hjt_h_prefix_product) + (hp))) /\ forall pa_i_hjt_h_prefix_product. (exists pa_lt_hjt_h_prefix_product_bound. pa_lt_hjt_h_prefix_product_bound + S pa_i_hjt_h_prefix_product = 2 * s + 2) -> exists pa_p_hjt_h_prefix_product pa_r_hjt_h_prefix_product pa_s_hjt_h_prefix_product. ((((exists pa_h_hjt_h_prefix_product_factor. pa_h_hjt_h_prefix_product_factor + S (pa_p_hjt_h_prefix_product) = S ((S (pa_i_hjt_h_prefix_product)) * pa_c_hjt_h_prefix)) /\ exists pa_q_hjt_h_prefix_product_factor. pa_b_hjt_h_prefix = pa_q_hjt_h_prefix_product_factor * S ((S (pa_i_hjt_h_prefix_product)) * pa_c_hjt_h_prefix) + (pa_p_hjt_h_prefix_product))) /\ ((((exists pa_h_hjt_h_prefix_product_partial. pa_h_hjt_h_prefix_product_partial + S (pa_r_hjt_h_prefix_product) = S ((S (pa_i_hjt_h_prefix_product)) * pa_v_hjt_h_prefix_product)) /\ exists pa_q_hjt_h_prefix_product_partial. pa_u_hjt_h_prefix_product = pa_q_hjt_h_prefix_product_partial * S ((S (pa_i_hjt_h_prefix_product)) * pa_v_hjt_h_prefix_product) + (pa_r_hjt_h_prefix_product))) /\ ((((exists pa_h_hjt_h_prefix_product_successor. pa_h_hjt_h_prefix_product_successor + S (pa_s_hjt_h_prefix_product) = S ((S (S pa_i_hjt_h_prefix_product)) * pa_v_hjt_h_prefix_product)) /\ exists pa_q_hjt_h_prefix_product_successor. pa_u_hjt_h_prefix_product = pa_q_hjt_h_prefix_product_successor * S ((S (S pa_i_hjt_h_prefix_product)) * pa_v_hjt_h_prefix_product) + (pa_s_hjt_h_prefix_product))) /\ pa_s_hjt_h_prefix_product = pa_r_hjt_h_prefix_product * pa_p_hjt_h_prefix_product)))))))) - 0046
specialize htotal (s + 7) - 0047
specialize htotal (2 * s + 2) - 0048
exact htotal - 0049
cases hprefix_exists - 0050
have hdouble_exists : exists hd. (exists pa_b_hjt_h_double pa_c_hjt_h_double. ((forall pa_i_hjt_h_double_repeat. (exists pa_lt_hjt_h_double_repeat_bound. pa_lt_hjt_h_double_repeat_bound + S pa_i_hjt_h_double_repeat = 2 * s + 2) -> (((exists pa_h_hjt_h_double_repeat_decoded. pa_h_hjt_h_double_repeat_decoded + S (2 * (s + 1)) = S ((S (pa_i_hjt_h_double_repeat)) * pa_c_hjt_h_double)) /\ exists pa_q_hjt_h_double_repeat_decoded. pa_b_hjt_h_double = pa_q_hjt_h_double_repeat_decoded * S ((S (pa_i_hjt_h_double_repeat)) * pa_c_hjt_h_double) + (2 * (s + 1))))) /\ (exists pa_u_hjt_h_double_product pa_v_hjt_h_double_product. ((((exists pa_h_hjt_h_double_product_start. pa_h_hjt_h_double_product_start + S (1) = S ((S (0)) * pa_v_hjt_h_double_product)) /\ exists pa_q_hjt_h_double_product_start. pa_u_hjt_h_double_product = pa_q_hjt_h_double_product_start * S ((S (0)) * pa_v_hjt_h_double_product) + (1))) /\ ((((exists pa_h_hjt_h_double_product_terminal. pa_h_hjt_h_double_product_terminal + S (hd) = S ((S (2 * s + 2)) * pa_v_hjt_h_double_product)) /\ exists pa_q_hjt_h_double_product_terminal. pa_u_hjt_h_double_product = pa_q_hjt_h_double_product_terminal * S ((S (2 * s + 2)) * pa_v_hjt_h_double_product) + (hd))) /\ forall pa_i_hjt_h_double_product. (exists pa_lt_hjt_h_double_product_bound. pa_lt_hjt_h_double_product_bound + S pa_i_hjt_h_double_product = 2 * s + 2) -> exists pa_p_hjt_h_double_product pa_r_hjt_h_double_product pa_s_hjt_h_double_product. ((((exists pa_h_hjt_h_double_product_factor. pa_h_hjt_h_double_product_factor + S (pa_p_hjt_h_double_product) = S ((S (pa_i_hjt_h_double_product)) * pa_c_hjt_h_double)) /\ exists pa_q_hjt_h_double_product_factor. pa_b_hjt_h_double = pa_q_hjt_h_double_product_factor * S ((S (pa_i_hjt_h_double_product)) * pa_c_hjt_h_double) + (pa_p_hjt_h_double_product))) /\ ((((exists pa_h_hjt_h_double_product_partial. pa_h_hjt_h_double_product_partial + S (pa_r_hjt_h_double_product) = S ((S (pa_i_hjt_h_double_product)) * pa_v_hjt_h_double_product)) /\ exists pa_q_hjt_h_double_product_partial. pa_u_hjt_h_double_product = pa_q_hjt_h_double_product_partial * S ((S (pa_i_hjt_h_double_product)) * pa_v_hjt_h_double_product) + (pa_r_hjt_h_double_product))) /\ ((((exists pa_h_hjt_h_double_product_successor. pa_h_hjt_h_double_product_successor + S (pa_s_hjt_h_double_product) = S ((S (S pa_i_hjt_h_double_product)) * pa_v_hjt_h_double_product)) /\ exists pa_q_hjt_h_double_product_successor. pa_u_hjt_h_double_product = pa_q_hjt_h_double_product_successor * S ((S (S pa_i_hjt_h_double_product)) * pa_v_hjt_h_double_product) + (pa_s_hjt_h_double_product))) /\ pa_s_hjt_h_double_product = pa_r_hjt_h_double_product * pa_p_hjt_h_double_product)))))))) - 0051
specialize htotal (2 * (s + 1)) - 0052
specialize htotal (2 * s + 2) - 0053
exact htotal - 0054
cases hdouble_exists - 0055
have hprefix_double : exists bqb_le_gap_hjt_h_prefix_double. bqb_le_gap_hjt_h_prefix_double + (x1) = (x2) - 0056
specialize pow_base_monotone (s + 7) - 0057
specialize pow_base_monotone (2 * (s + 1)) - 0058
specialize pow_base_monotone (2 * s + 2) - 0059
specialize pow_base_monotone x1 - 0060
specialize pow_base_monotone x2 - 0061
apply pow_base_monotone - 0062
exact hbase - 0063
exact hprefix_exists_witness - 0064
exact hdouble_exists_witness - 0065
have htwo_exists : exists ht. (exists pa_b_hjt_h_two_factor pa_c_hjt_h_two_factor. ((forall pa_i_hjt_h_two_factor_repeat. (exists pa_lt_hjt_h_two_factor_repeat_bound. pa_lt_hjt_h_two_factor_repeat_bound + S pa_i_hjt_h_two_factor_repeat = 2 * s + 2) -> (((exists pa_h_hjt_h_two_factor_repeat_decoded. pa_h_hjt_h_two_factor_repeat_decoded + S (2) = S ((S (pa_i_hjt_h_two_factor_repeat)) * pa_c_hjt_h_two_factor)) /\ exists pa_q_hjt_h_two_factor_repeat_decoded. pa_b_hjt_h_two_factor = pa_q_hjt_h_two_factor_repeat_decoded * S ((S (pa_i_hjt_h_two_factor_repeat)) * pa_c_hjt_h_two_factor) + (2)))) /\ (exists pa_u_hjt_h_two_factor_product pa_v_hjt_h_two_factor_product. ((((exists pa_h_hjt_h_two_factor_product_start. pa_h_hjt_h_two_factor_product_start + S (1) = S ((S (0)) * pa_v_hjt_h_two_factor_product)) /\ exists pa_q_hjt_h_two_factor_product_start. pa_u_hjt_h_two_factor_product = pa_q_hjt_h_two_factor_product_start * S ((S (0)) * pa_v_hjt_h_two_factor_product) + (1))) /\ ((((exists pa_h_hjt_h_two_factor_product_terminal. pa_h_hjt_h_two_factor_product_terminal + S (ht) = S ((S (2 * s + 2)) * pa_v_hjt_h_two_factor_product)) /\ exists pa_q_hjt_h_two_factor_product_terminal. pa_u_hjt_h_two_factor_product = pa_q_hjt_h_two_factor_product_terminal * S ((S (2 * s + 2)) * pa_v_hjt_h_two_factor_product) + (ht))) /\ forall pa_i_hjt_h_two_factor_product. (exists pa_lt_hjt_h_two_factor_product_bound. pa_lt_hjt_h_two_factor_product_bound + S pa_i_hjt_h_two_factor_product = 2 * s + 2) -> exists pa_p_hjt_h_two_factor_product pa_r_hjt_h_two_factor_product pa_s_hjt_h_two_factor_product. ((((exists pa_h_hjt_h_two_factor_product_factor. pa_h_hjt_h_two_factor_product_factor + S (pa_p_hjt_h_two_factor_product) = S ((S (pa_i_hjt_h_two_factor_product)) * pa_c_hjt_h_two_factor)) /\ exists pa_q_hjt_h_two_factor_product_factor. pa_b_hjt_h_two_factor = pa_q_hjt_h_two_factor_product_factor * S ((S (pa_i_hjt_h_two_factor_product)) * pa_c_hjt_h_two_factor) + (pa_p_hjt_h_two_factor_product))) /\ ((((exists pa_h_hjt_h_two_factor_product_partial. pa_h_hjt_h_two_factor_product_partial + S (pa_r_hjt_h_two_factor_product) = S ((S (pa_i_hjt_h_two_factor_product)) * pa_v_hjt_h_two_factor_product)) /\ exists pa_q_hjt_h_two_factor_product_partial. pa_u_hjt_h_two_factor_product = pa_q_hjt_h_two_factor_product_partial * S ((S (pa_i_hjt_h_two_factor_product)) * pa_v_hjt_h_two_factor_product) + (pa_r_hjt_h_two_factor_product))) /\ ((((exists pa_h_hjt_h_two_factor_product_successor. pa_h_hjt_h_two_factor_product_successor + S (pa_s_hjt_h_two_factor_product) = S ((S (S pa_i_hjt_h_two_factor_product)) * pa_v_hjt_h_two_factor_product)) /\ exists pa_q_hjt_h_two_factor_product_successor. pa_u_hjt_h_two_factor_product = pa_q_hjt_h_two_factor_product_successor * S ((S (S pa_i_hjt_h_two_factor_product)) * pa_v_hjt_h_two_factor_product) + (pa_s_hjt_h_two_factor_product))) /\ pa_s_hjt_h_two_factor_product = pa_r_hjt_h_two_factor_product * pa_p_hjt_h_two_factor_product)))))))) - 0066
specialize htotal 2 - 0067
specialize htotal (2 * s + 2) - 0068
exact htotal - 0069
cases htwo_exists - 0070
have hfour_exists : exists hf. (exists pa_b_hjt_h_four_factor pa_c_hjt_h_four_factor. ((forall pa_i_hjt_h_four_factor_repeat. (exists pa_lt_hjt_h_four_factor_repeat_bound. pa_lt_hjt_h_four_factor_repeat_bound + S pa_i_hjt_h_four_factor_repeat = s + 1) -> (((exists pa_h_hjt_h_four_factor_repeat_decoded. pa_h_hjt_h_four_factor_repeat_decoded + S (4) = S ((S (pa_i_hjt_h_four_factor_repeat)) * pa_c_hjt_h_four_factor)) /\ exists pa_q_hjt_h_four_factor_repeat_decoded. pa_b_hjt_h_four_factor = pa_q_hjt_h_four_factor_repeat_decoded * S ((S (pa_i_hjt_h_four_factor_repeat)) * pa_c_hjt_h_four_factor) + (4)))) /\ (exists pa_u_hjt_h_four_factor_product pa_v_hjt_h_four_factor_product. ((((exists pa_h_hjt_h_four_factor_product_start. pa_h_hjt_h_four_factor_product_start + S (1) = S ((S (0)) * pa_v_hjt_h_four_factor_product)) /\ exists pa_q_hjt_h_four_factor_product_start. pa_u_hjt_h_four_factor_product = pa_q_hjt_h_four_factor_product_start * S ((S (0)) * pa_v_hjt_h_four_factor_product) + (1))) /\ ((((exists pa_h_hjt_h_four_factor_product_terminal. pa_h_hjt_h_four_factor_product_terminal + S (hf) = S ((S (s + 1)) * pa_v_hjt_h_four_factor_product)) /\ exists pa_q_hjt_h_four_factor_product_terminal. pa_u_hjt_h_four_factor_product = pa_q_hjt_h_four_factor_product_terminal * S ((S (s + 1)) * pa_v_hjt_h_four_factor_product) + (hf))) /\ forall pa_i_hjt_h_four_factor_product. (exists pa_lt_hjt_h_four_factor_product_bound. pa_lt_hjt_h_four_factor_product_bound + S pa_i_hjt_h_four_factor_product = s + 1) -> exists pa_p_hjt_h_four_factor_product pa_r_hjt_h_four_factor_product pa_s_hjt_h_four_factor_product. ((((exists pa_h_hjt_h_four_factor_product_factor. pa_h_hjt_h_four_factor_product_factor + S (pa_p_hjt_h_four_factor_product) = S ((S (pa_i_hjt_h_four_factor_product)) * pa_c_hjt_h_four_factor)) /\ exists pa_q_hjt_h_four_factor_product_factor. pa_b_hjt_h_four_factor = pa_q_hjt_h_four_factor_product_factor * S ((S (pa_i_hjt_h_four_factor_product)) * pa_c_hjt_h_four_factor) + (pa_p_hjt_h_four_factor_product))) /\ ((((exists pa_h_hjt_h_four_factor_product_partial. pa_h_hjt_h_four_factor_product_partial + S (pa_r_hjt_h_four_factor_product) = S ((S (pa_i_hjt_h_four_factor_product)) * pa_v_hjt_h_four_factor_product)) /\ exists pa_q_hjt_h_four_factor_product_partial. pa_u_hjt_h_four_factor_product = pa_q_hjt_h_four_factor_product_partial * S ((S (pa_i_hjt_h_four_factor_product)) * pa_v_hjt_h_four_factor_product) + (pa_r_hjt_h_four_factor_product))) /\ ((((exists pa_h_hjt_h_four_factor_product_successor. pa_h_hjt_h_four_factor_product_successor + S (pa_s_hjt_h_four_factor_product) = S ((S (S pa_i_hjt_h_four_factor_product)) * pa_v_hjt_h_four_factor_product)) /\ exists pa_q_hjt_h_four_factor_product_successor. pa_u_hjt_h_four_factor_product = pa_q_hjt_h_four_factor_product_successor * S ((S (S pa_i_hjt_h_four_factor_product)) * pa_v_hjt_h_four_factor_product) + (pa_s_hjt_h_four_factor_product))) /\ pa_s_hjt_h_four_factor_product = pa_r_hjt_h_four_factor_product * pa_p_hjt_h_four_factor_product)))))))) - 0071
specialize htotal 4 - 0072
specialize htotal (s + 1) - 0073
exact htotal - 0074
cases hfour_exists - 0075
have hseeds : (exists pa_b_hjt_h_seed_two pa_c_hjt_h_seed_two. ((forall pa_i_hjt_h_seed_two_repeat. (exists pa_lt_hjt_h_seed_two_repeat_bound. pa_lt_hjt_h_seed_two_repeat_bound + S pa_i_hjt_h_seed_two_repeat = 2) -> (((exists pa_h_hjt_h_seed_two_repeat_decoded. pa_h_hjt_h_seed_two_repeat_decoded + S (2) = S ((S (pa_i_hjt_h_seed_two_repeat)) * pa_c_hjt_h_seed_two)) /\ exists pa_q_hjt_h_seed_two_repeat_decoded. pa_b_hjt_h_seed_two = pa_q_hjt_h_seed_two_repeat_decoded * S ((S (pa_i_hjt_h_seed_two_repeat)) * pa_c_hjt_h_seed_two) + (2)))) /\ (exists pa_u_hjt_h_seed_two_product pa_v_hjt_h_seed_two_product. ((((exists pa_h_hjt_h_seed_two_product_start. pa_h_hjt_h_seed_two_product_start + S (1) = S ((S (0)) * pa_v_hjt_h_seed_two_product)) /\ exists pa_q_hjt_h_seed_two_product_start. pa_u_hjt_h_seed_two_product = pa_q_hjt_h_seed_two_product_start * S ((S (0)) * pa_v_hjt_h_seed_two_product) + (1))) /\ ((((exists pa_h_hjt_h_seed_two_product_terminal. pa_h_hjt_h_seed_two_product_terminal + S (4) = S ((S (2)) * pa_v_hjt_h_seed_two_product)) /\ exists pa_q_hjt_h_seed_two_product_terminal. pa_u_hjt_h_seed_two_product = pa_q_hjt_h_seed_two_product_terminal * S ((S (2)) * pa_v_hjt_h_seed_two_product) + (4))) /\ forall pa_i_hjt_h_seed_two_product. (exists pa_lt_hjt_h_seed_two_product_bound. pa_lt_hjt_h_seed_two_product_bound + S pa_i_hjt_h_seed_two_product = 2) -> exists pa_p_hjt_h_seed_two_product pa_r_hjt_h_seed_two_product pa_s_hjt_h_seed_two_product. ((((exists pa_h_hjt_h_seed_two_product_factor. pa_h_hjt_h_seed_two_product_factor + S (pa_p_hjt_h_seed_two_product) = S ((S (pa_i_hjt_h_seed_two_product)) * pa_c_hjt_h_seed_two)) /\ exists pa_q_hjt_h_seed_two_product_factor. pa_b_hjt_h_seed_two = pa_q_hjt_h_seed_two_product_factor * S ((S (pa_i_hjt_h_seed_two_product)) * pa_c_hjt_h_seed_two) + (pa_p_hjt_h_seed_two_product))) /\ ((((exists pa_h_hjt_h_seed_two_product_partial. pa_h_hjt_h_seed_two_product_partial + S (pa_r_hjt_h_seed_two_product) = S ((S (pa_i_hjt_h_seed_two_product)) * pa_v_hjt_h_seed_two_product)) /\ exists pa_q_hjt_h_seed_two_product_partial. pa_u_hjt_h_seed_two_product = pa_q_hjt_h_seed_two_product_partial * S ((S (pa_i_hjt_h_seed_two_product)) * pa_v_hjt_h_seed_two_product) + (pa_r_hjt_h_seed_two_product))) /\ ((((exists pa_h_hjt_h_seed_two_product_successor. pa_h_hjt_h_seed_two_product_successor + S (pa_s_hjt_h_seed_two_product) = S ((S (S pa_i_hjt_h_seed_two_product)) * pa_v_hjt_h_seed_two_product)) /\ exists pa_q_hjt_h_seed_two_product_successor. pa_u_hjt_h_seed_two_product = pa_q_hjt_h_seed_two_product_successor * S ((S (S pa_i_hjt_h_seed_two_product)) * pa_v_hjt_h_seed_two_product) + (pa_s_hjt_h_seed_two_product))) /\ pa_s_hjt_h_seed_two_product = pa_r_hjt_h_seed_two_product * pa_p_hjt_h_seed_two_product)))))))) /\ (exists pa_b_hjt_h_seed_seven pa_c_hjt_h_seed_seven. ((forall pa_i_hjt_h_seed_seven_repeat. (exists pa_lt_hjt_h_seed_seven_repeat_bound. pa_lt_hjt_h_seed_seven_repeat_bound + S pa_i_hjt_h_seed_seven_repeat = 7) -> (((exists pa_h_hjt_h_seed_seven_repeat_decoded. pa_h_hjt_h_seed_seven_repeat_decoded + S (2) = S ((S (pa_i_hjt_h_seed_seven_repeat)) * pa_c_hjt_h_seed_seven)) /\ exists pa_q_hjt_h_seed_seven_repeat_decoded. pa_b_hjt_h_seed_seven = pa_q_hjt_h_seed_seven_repeat_decoded * S ((S (pa_i_hjt_h_seed_seven_repeat)) * pa_c_hjt_h_seed_seven) + (2)))) /\ (exists pa_u_hjt_h_seed_seven_product pa_v_hjt_h_seed_seven_product. ((((exists pa_h_hjt_h_seed_seven_product_start. pa_h_hjt_h_seed_seven_product_start + S (1) = S ((S (0)) * pa_v_hjt_h_seed_seven_product)) /\ exists pa_q_hjt_h_seed_seven_product_start. pa_u_hjt_h_seed_seven_product = pa_q_hjt_h_seed_seven_product_start * S ((S (0)) * pa_v_hjt_h_seed_seven_product) + (1))) /\ ((((exists pa_h_hjt_h_seed_seven_product_terminal. pa_h_hjt_h_seed_seven_product_terminal + S (128) = S ((S (7)) * pa_v_hjt_h_seed_seven_product)) /\ exists pa_q_hjt_h_seed_seven_product_terminal. pa_u_hjt_h_seed_seven_product = pa_q_hjt_h_seed_seven_product_terminal * S ((S (7)) * pa_v_hjt_h_seed_seven_product) + (128))) /\ forall pa_i_hjt_h_seed_seven_product. (exists pa_lt_hjt_h_seed_seven_product_bound. pa_lt_hjt_h_seed_seven_product_bound + S pa_i_hjt_h_seed_seven_product = 7) -> exists pa_p_hjt_h_seed_seven_product pa_r_hjt_h_seed_seven_product pa_s_hjt_h_seed_seven_product. ((((exists pa_h_hjt_h_seed_seven_product_factor. pa_h_hjt_h_seed_seven_product_factor + S (pa_p_hjt_h_seed_seven_product) = S ((S (pa_i_hjt_h_seed_seven_product)) * pa_c_hjt_h_seed_seven)) /\ exists pa_q_hjt_h_seed_seven_product_factor. pa_b_hjt_h_seed_seven = pa_q_hjt_h_seed_seven_product_factor * S ((S (pa_i_hjt_h_seed_seven_product)) * pa_c_hjt_h_seed_seven) + (pa_p_hjt_h_seed_seven_product))) /\ ((((exists pa_h_hjt_h_seed_seven_product_partial. pa_h_hjt_h_seed_seven_product_partial + S (pa_r_hjt_h_seed_seven_product) = S ((S (pa_i_hjt_h_seed_seven_product)) * pa_v_hjt_h_seed_seven_product)) /\ exists pa_q_hjt_h_seed_seven_product_partial. pa_u_hjt_h_seed_seven_product = pa_q_hjt_h_seed_seven_product_partial * S ((S (pa_i_hjt_h_seed_seven_product)) * pa_v_hjt_h_seed_seven_product) + (pa_r_hjt_h_seed_seven_product))) /\ ((((exists pa_h_hjt_h_seed_seven_product_successor. pa_h_hjt_h_seed_seven_product_successor + S (pa_s_hjt_h_seed_seven_product) = S ((S (S pa_i_hjt_h_seed_seven_product)) * pa_v_hjt_h_seed_seven_product)) /\ exists pa_q_hjt_h_seed_seven_product_successor. pa_u_hjt_h_seed_seven_product = pa_q_hjt_h_seed_seven_product_successor * S ((S (S pa_i_hjt_h_seed_seven_product)) * pa_v_hjt_h_seed_seven_product) + (pa_s_hjt_h_seed_seven_product))) /\ pa_s_hjt_h_seed_seven_product = pa_r_hjt_h_seed_seven_product * pa_p_hjt_h_seed_seven_product)))))))) - 0076
apply pow_two_seed_bundle_from_total - 0077
exact htotal - 0078
cases hseeds - 0079
have htwo_four : x3 = x4 - 0080
specialize pow_mul_exp_from_total 2 - 0081
specialize pow_mul_exp_from_total 2 - 0082
specialize pow_mul_exp_from_total (s + 1) - 0083
specialize pow_mul_exp_from_total (2 * s + 2) - 0084
specialize pow_mul_exp_from_total 4 - 0085
specialize pow_mul_exp_from_total x4 - 0086
specialize pow_mul_exp_from_total x3 - 0087
symm - 0088
apply pow_mul_exp_from_total - 0089
exact htotal - 0090
symm - 0091
exact hdouble_exponent - 0092
exact hseeds_left - 0093
exact hfour_exists_witness - 0094
exact htwo_exists_witness - 0095
have hdouble_factor : x2 = x3 * h - 0096
specialize pow_mul_base 2 - 0097
specialize pow_mul_base (s + 1) - 0098
specialize pow_mul_base (2 * s + 2) - 0099
specialize pow_mul_base x3 - 0100
specialize pow_mul_base h - 0101
specialize pow_mul_base x2 - 0102
apply pow_mul_base - 0103
exact htwo_exists_witness - 0104
exact hh - 0105
exact hdouble_exists_witness - 0106
rewrite hdouble_factor at hprefix_double - 0107
rewrite htwo_four at hprefix_double - 0108
have hhfactor_bound : exists bqb_le_gap_hjt_h_factor_bound. bqb_le_gap_hjt_h_factor_bound + (x4 * h) = (x4 * u) - 0109
specialize mul_le_mul x4 - 0110
specialize mul_le_mul x4 - 0111
specialize mul_le_mul h - 0112
specialize mul_le_mul u - 0113
apply mul_le_mul - 0114
specialize le_refl x4 - 0115
exact le_refl - 0116
exact hhu - 0117
have hprefix_bound : exists bqb_le_gap_hjt_h_prefix_bound. bqb_le_gap_hjt_h_prefix_bound + (x1) = (x4 * u) - 0118
specialize le_trans x1 - 0119
specialize le_trans (x4 * h) - 0120
specialize le_trans (x4 * u) - 0121
apply le_trans - 0122
exact hprefix_double - 0123
exact hhfactor_bound - 0124
have hnext_sum : 2 * s + 14 = (2 * s + 2) + 12 - 0125
simp [add_assoc] - 0126
have hnext_factor : hn = x1 * j - 0127
specialize pow_add (s + 7) - 0128
specialize pow_add (2 * s + 2) - 0129
specialize pow_add 12 - 0130
specialize pow_add (2 * s + 14) - 0131
specialize pow_add x1 - 0132
specialize pow_add j - 0133
specialize pow_add hn - 0134
apply pow_add - 0135
exact hnext_sum - 0136
exact hprefix_exists_witness - 0137
exact hj - 0138
exact hhn - 0139
have hbound_prefix_exists : exists hb. (exists pa_b_hjt_h_bound_prefix pa_c_hjt_h_bound_prefix. ((forall pa_i_hjt_h_bound_prefix_repeat. (exists pa_lt_hjt_h_bound_prefix_repeat_bound. pa_lt_hjt_h_bound_prefix_repeat_bound + S pa_i_hjt_h_bound_prefix_repeat = (s + 1) + e) -> (((exists pa_h_hjt_h_bound_prefix_repeat_decoded. pa_h_hjt_h_bound_prefix_repeat_decoded + S (4) = S ((S (pa_i_hjt_h_bound_prefix_repeat)) * pa_c_hjt_h_bound_prefix)) /\ exists pa_q_hjt_h_bound_prefix_repeat_decoded. pa_b_hjt_h_bound_prefix = pa_q_hjt_h_bound_prefix_repeat_decoded * S ((S (pa_i_hjt_h_bound_prefix_repeat)) * pa_c_hjt_h_bound_prefix) + (4)))) /\ (exists pa_u_hjt_h_bound_prefix_product pa_v_hjt_h_bound_prefix_product. ((((exists pa_h_hjt_h_bound_prefix_product_start. pa_h_hjt_h_bound_prefix_product_start + S (1) = S ((S (0)) * pa_v_hjt_h_bound_prefix_product)) /\ exists pa_q_hjt_h_bound_prefix_product_start. pa_u_hjt_h_bound_prefix_product = pa_q_hjt_h_bound_prefix_product_start * S ((S (0)) * pa_v_hjt_h_bound_prefix_product) + (1))) /\ ((((exists pa_h_hjt_h_bound_prefix_product_terminal. pa_h_hjt_h_bound_prefix_product_terminal + S (hb) = S ((S ((s + 1) + e)) * pa_v_hjt_h_bound_prefix_product)) /\ exists pa_q_hjt_h_bound_prefix_product_terminal. pa_u_hjt_h_bound_prefix_product = pa_q_hjt_h_bound_prefix_product_terminal * S ((S ((s + 1) + e)) * pa_v_hjt_h_bound_prefix_product) + (hb))) /\ forall pa_i_hjt_h_bound_prefix_product. (exists pa_lt_hjt_h_bound_prefix_product_bound. pa_lt_hjt_h_bound_prefix_product_bound + S pa_i_hjt_h_bound_prefix_product = (s + 1) + e) -> exists pa_p_hjt_h_bound_prefix_product pa_r_hjt_h_bound_prefix_product pa_s_hjt_h_bound_prefix_product. ((((exists pa_h_hjt_h_bound_prefix_product_factor. pa_h_hjt_h_bound_prefix_product_factor + S (pa_p_hjt_h_bound_prefix_product) = S ((S (pa_i_hjt_h_bound_prefix_product)) * pa_c_hjt_h_bound_prefix)) /\ exists pa_q_hjt_h_bound_prefix_product_factor. pa_b_hjt_h_bound_prefix = pa_q_hjt_h_bound_prefix_product_factor * S ((S (pa_i_hjt_h_bound_prefix_product)) * pa_c_hjt_h_bound_prefix) + (pa_p_hjt_h_bound_prefix_product))) /\ ((((exists pa_h_hjt_h_bound_prefix_product_partial. pa_h_hjt_h_bound_prefix_product_partial + S (pa_r_hjt_h_bound_prefix_product) = S ((S (pa_i_hjt_h_bound_prefix_product)) * pa_v_hjt_h_bound_prefix_product)) /\ exists pa_q_hjt_h_bound_prefix_product_partial. pa_u_hjt_h_bound_prefix_product = pa_q_hjt_h_bound_prefix_product_partial * S ((S (pa_i_hjt_h_bound_prefix_product)) * pa_v_hjt_h_bound_prefix_product) + (pa_r_hjt_h_bound_prefix_product))) /\ ((((exists pa_h_hjt_h_bound_prefix_product_successor. pa_h_hjt_h_bound_prefix_product_successor + S (pa_s_hjt_h_bound_prefix_product) = S ((S (S pa_i_hjt_h_bound_prefix_product)) * pa_v_hjt_h_bound_prefix_product)) /\ exists pa_q_hjt_h_bound_prefix_product_successor. pa_u_hjt_h_bound_prefix_product = pa_q_hjt_h_bound_prefix_product_successor * S ((S (S pa_i_hjt_h_bound_prefix_product)) * pa_v_hjt_h_bound_prefix_product) + (pa_s_hjt_h_bound_prefix_product))) /\ pa_s_hjt_h_bound_prefix_product = pa_r_hjt_h_bound_prefix_product * pa_p_hjt_h_bound_prefix_product)))))))) - 0140
specialize htotal 4 - 0141
specialize htotal ((s + 1) + e) - 0142
exact htotal - 0143
cases hbound_prefix_exists - 0144
have hbound_prefix_factor : x5 = x4 * u - 0145
specialize pow_add 4 - 0146
specialize pow_add (s + 1) - 0147
specialize pow_add e - 0148
specialize pow_add ((s + 1) + e) - 0149
specialize pow_add x4 - 0150
specialize pow_add u - 0151
specialize pow_add x5 - 0152
apply pow_add - 0153
refl - 0154
exact hfour_exists_witness - 0155
exact hu - 0156
exact hbound_prefix_exists_witness - 0157
have hbound_sum : f = ((s + 1) + e) + (s + 5) - 0158
rewrite hceilshift - 0159
simp [two_mul_eq_add_self, add_assoc, add_comm] - 0160
congr - 0161
congr - 0162
congr - 0163
congr - 0164
congr - 0165
trans S (s + (e + s)) - 0166
congr - 0167
trans (e + s) + s - 0168
symm - 0169
apply add_assoc - 0170
trans (s + e) + s - 0171
congr - 0172
apply add_comm - 0173
refl - 0174
apply add_assoc - 0175
symm - 0176
apply add_succ_left - 0177
have hbound_factor : un = x5 * g - 0178
specialize pow_add 4 - 0179
specialize pow_add ((s + 1) + e) - 0180
specialize pow_add (s + 5) - 0181
specialize pow_add f - 0182
specialize pow_add x5 - 0183
specialize pow_add g - 0184
specialize pow_add un - 0185
apply pow_add - 0186
exact hbound_sum - 0187
exact hbound_prefix_exists_witness - 0188
exact hg - 0189
exact hun - 0190
have hproducts : exists bqb_le_gap_hjt_h_products. bqb_le_gap_hjt_h_products + (x1 * j) = ((x4 * u) * g) - 0191
specialize mul_le_mul x1 - 0192
specialize mul_le_mul (x4 * u) - 0193
specialize mul_le_mul j - 0194
specialize mul_le_mul g - 0195
apply mul_le_mul - 0196
exact hprefix_bound - 0197
exact hjg - 0198
rewrite hnext_factor - 0199
rewrite hbound_factor - 0200
rewrite hbound_prefix_factor - 0201
exact hproducts