BT00YC

double_quotient_carry_prefix_entries_zero

Alpha body-checked ยท checked-use disabled

Exact doubled quotients and a square tail force every carry to zero.

Exact expanded PA statement

forall p n b c d e f g l q r R s. (exists bcf_le_gap_bdqcpez_base. bcf_le_gap_bdqcpez_base + (1) = p) -> (exists bpvi_b_bdqcpez_square bpvi_c_bdqcpez_square. ((forall bpvi_i_bdqcpez_square. (exists bpvi_repeat_gap_bdqcpez_square. bpvi_repeat_gap_bdqcpez_square + S bpvi_i_bdqcpez_square = 2) -> (((exists bpvi_h_bdqcpez_square_repeat. bpvi_h_bdqcpez_square_repeat + S (p) = S ((S (bpvi_i_bdqcpez_square)) * bpvi_c_bdqcpez_square)) /\ exists bpvi_q_bdqcpez_square_repeat. bpvi_b_bdqcpez_square = bpvi_q_bdqcpez_square_repeat * S ((S (bpvi_i_bdqcpez_square)) * bpvi_c_bdqcpez_square) + (p)))) /\ (exists bpvi_u_bdqcpez_square bpvi_v_bdqcpez_square. ((((exists bpvi_h_bdqcpez_square_start. bpvi_h_bdqcpez_square_start + S (1) = S ((S (0)) * bpvi_v_bdqcpez_square)) /\ exists bpvi_q_bdqcpez_square_start. bpvi_u_bdqcpez_square = bpvi_q_bdqcpez_square_start * S ((S (0)) * bpvi_v_bdqcpez_square) + (1))) /\ ((((exists bpvi_h_bdqcpez_square_terminal. bpvi_h_bdqcpez_square_terminal + S (s) = S ((S (2)) * bpvi_v_bdqcpez_square)) /\ exists bpvi_q_bdqcpez_square_terminal. bpvi_u_bdqcpez_square = bpvi_q_bdqcpez_square_terminal * S ((S (2)) * bpvi_v_bdqcpez_square) + (s))) /\ forall bpvi_j_bdqcpez_square. (exists bpvi_product_gap_bdqcpez_square. bpvi_product_gap_bdqcpez_square + S bpvi_j_bdqcpez_square = 2) -> exists bpvi_factor_bdqcpez_square bpvi_partial_bdqcpez_square bpvi_successor_bdqcpez_square. ((((exists bpvi_h_bdqcpez_square_factor. bpvi_h_bdqcpez_square_factor + S (bpvi_factor_bdqcpez_square) = S ((S (bpvi_j_bdqcpez_square)) * bpvi_c_bdqcpez_square)) /\ exists bpvi_q_bdqcpez_square_factor. bpvi_b_bdqcpez_square = bpvi_q_bdqcpez_square_factor * S ((S (bpvi_j_bdqcpez_square)) * bpvi_c_bdqcpez_square) + (bpvi_factor_bdqcpez_square))) /\ ((((exists bpvi_h_bdqcpez_square_partial. bpvi_h_bdqcpez_square_partial + S (bpvi_partial_bdqcpez_square) = S ((S (bpvi_j_bdqcpez_square)) * bpvi_v_bdqcpez_square)) /\ exists bpvi_q_bdqcpez_square_partial. bpvi_u_bdqcpez_square = bpvi_q_bdqcpez_square_partial * S ((S (bpvi_j_bdqcpez_square)) * bpvi_v_bdqcpez_square) + (bpvi_partial_bdqcpez_square))) /\ ((((exists bpvi_h_bdqcpez_square_successor. bpvi_h_bdqcpez_square_successor + S (bpvi_successor_bdqcpez_square) = S ((S (S bpvi_j_bdqcpez_square)) * bpvi_v_bdqcpez_square)) /\ exists bpvi_q_bdqcpez_square_successor. bpvi_u_bdqcpez_square = bpvi_q_bdqcpez_square_successor * S ((S (S bpvi_j_bdqcpez_square)) * bpvi_v_bdqcpez_square) + (bpvi_successor_bdqcpez_square))) /\ bpvi_successor_bdqcpez_square = bpvi_partial_bdqcpez_square * bpvi_factor_bdqcpez_square)))))))) -> (exists bcf_lt_gap_bdqcpez_strict. bcf_lt_gap_bdqcpez_strict + S (n + n) = s) -> (forall bls_index_bdqcpez_left. (exists bls_gap_bdqcpez_left_bound. bls_gap_bdqcpez_left_bound + S (bls_index_bdqcpez_left) = (l)) -> exists bls_power_bdqcpez_left bls_quotient_bdqcpez_left bls_remainder_bdqcpez_left. ((exists bpvi_b_bls_bdqcpez_left_power bpvi_c_bls_bdqcpez_left_power. ((forall bpvi_i_bls_bdqcpez_left_power. (exists bpvi_repeat_gap_bls_bdqcpez_left_power. bpvi_repeat_gap_bls_bdqcpez_left_power + S bpvi_i_bls_bdqcpez_left_power = S bls_index_bdqcpez_left) -> (((exists bpvi_h_bls_bdqcpez_left_power_repeat. bpvi_h_bls_bdqcpez_left_power_repeat + S (p) = S ((S (bpvi_i_bls_bdqcpez_left_power)) * bpvi_c_bls_bdqcpez_left_power)) /\ exists bpvi_q_bls_bdqcpez_left_power_repeat. bpvi_b_bls_bdqcpez_left_power = bpvi_q_bls_bdqcpez_left_power_repeat * S ((S (bpvi_i_bls_bdqcpez_left_power)) * bpvi_c_bls_bdqcpez_left_power) + (p)))) /\ (exists bpvi_u_bls_bdqcpez_left_power bpvi_v_bls_bdqcpez_left_power. ((((exists bpvi_h_bls_bdqcpez_left_power_start. bpvi_h_bls_bdqcpez_left_power_start + S (1) = S ((S (0)) * bpvi_v_bls_bdqcpez_left_power)) /\ exists bpvi_q_bls_bdqcpez_left_power_start. bpvi_u_bls_bdqcpez_left_power = bpvi_q_bls_bdqcpez_left_power_start * S ((S (0)) * bpvi_v_bls_bdqcpez_left_power) + (1))) /\ ((((exists bpvi_h_bls_bdqcpez_left_power_terminal. bpvi_h_bls_bdqcpez_left_power_terminal + S (bls_power_bdqcpez_left) = S ((S (S bls_index_bdqcpez_left)) * bpvi_v_bls_bdqcpez_left_power)) /\ exists bpvi_q_bls_bdqcpez_left_power_terminal. bpvi_u_bls_bdqcpez_left_power = bpvi_q_bls_bdqcpez_left_power_terminal * S ((S (S bls_index_bdqcpez_left)) * bpvi_v_bls_bdqcpez_left_power) + (bls_power_bdqcpez_left))) /\ forall bpvi_j_bls_bdqcpez_left_power. (exists bpvi_product_gap_bls_bdqcpez_left_power. bpvi_product_gap_bls_bdqcpez_left_power + S bpvi_j_bls_bdqcpez_left_power = S bls_index_bdqcpez_left) -> exists bpvi_factor_bls_bdqcpez_left_power bpvi_partial_bls_bdqcpez_left_power bpvi_successor_bls_bdqcpez_left_power. ((((exists bpvi_h_bls_bdqcpez_left_power_factor. bpvi_h_bls_bdqcpez_left_power_factor + S (bpvi_factor_bls_bdqcpez_left_power) = S ((S (bpvi_j_bls_bdqcpez_left_power)) * bpvi_c_bls_bdqcpez_left_power)) /\ exists bpvi_q_bls_bdqcpez_left_power_factor. bpvi_b_bls_bdqcpez_left_power = bpvi_q_bls_bdqcpez_left_power_factor * S ((S (bpvi_j_bls_bdqcpez_left_power)) * bpvi_c_bls_bdqcpez_left_power) + (bpvi_factor_bls_bdqcpez_left_power))) /\ ((((exists bpvi_h_bls_bdqcpez_left_power_partial. bpvi_h_bls_bdqcpez_left_power_partial + S (bpvi_partial_bls_bdqcpez_left_power) = S ((S (bpvi_j_bls_bdqcpez_left_power)) * bpvi_v_bls_bdqcpez_left_power)) /\ exists bpvi_q_bls_bdqcpez_left_power_partial. bpvi_u_bls_bdqcpez_left_power = bpvi_q_bls_bdqcpez_left_power_partial * S ((S (bpvi_j_bls_bdqcpez_left_power)) * bpvi_v_bls_bdqcpez_left_power) + (bpvi_partial_bls_bdqcpez_left_power))) /\ ((((exists bpvi_h_bls_bdqcpez_left_power_successor. bpvi_h_bls_bdqcpez_left_power_successor + S (bpvi_successor_bls_bdqcpez_left_power) = S ((S (S bpvi_j_bls_bdqcpez_left_power)) * bpvi_v_bls_bdqcpez_left_power)) /\ exists bpvi_q_bls_bdqcpez_left_power_successor. bpvi_u_bls_bdqcpez_left_power = bpvi_q_bls_bdqcpez_left_power_successor * S ((S (S bpvi_j_bls_bdqcpez_left_power)) * bpvi_v_bls_bdqcpez_left_power) + (bpvi_successor_bls_bdqcpez_left_power))) /\ bpvi_successor_bls_bdqcpez_left_power = bpvi_partial_bls_bdqcpez_left_power * bpvi_factor_bls_bdqcpez_left_power)))))))) /\ ((((exists ff_h_bls_bdqcpez_left_quotient_entry. ff_h_bls_bdqcpez_left_quotient_entry + S (bls_quotient_bdqcpez_left) = S ((S (bls_index_bdqcpez_left)) * c)) /\ exists ff_q_bls_bdqcpez_left_quotient_entry. b = ff_q_bls_bdqcpez_left_quotient_entry * S ((S (bls_index_bdqcpez_left)) * c) + (bls_quotient_bdqcpez_left))) /\ ((n = bls_power_bdqcpez_left * bls_quotient_bdqcpez_left + bls_remainder_bdqcpez_left /\ exists bls_remainder_gap_bdqcpez_left_division. bls_remainder_gap_bdqcpez_left_division + S (bls_remainder_bdqcpez_left) = bls_power_bdqcpez_left))))) -> (forall bls_index_bdqcpez_right. (exists bls_gap_bdqcpez_right_bound. bls_gap_bdqcpez_right_bound + S (bls_index_bdqcpez_right) = (l)) -> exists bls_power_bdqcpez_right bls_quotient_bdqcpez_right bls_remainder_bdqcpez_right. ((exists bpvi_b_bls_bdqcpez_right_power bpvi_c_bls_bdqcpez_right_power. ((forall bpvi_i_bls_bdqcpez_right_power. (exists bpvi_repeat_gap_bls_bdqcpez_right_power. bpvi_repeat_gap_bls_bdqcpez_right_power + S bpvi_i_bls_bdqcpez_right_power = S bls_index_bdqcpez_right) -> (((exists bpvi_h_bls_bdqcpez_right_power_repeat. bpvi_h_bls_bdqcpez_right_power_repeat + S (p) = S ((S (bpvi_i_bls_bdqcpez_right_power)) * bpvi_c_bls_bdqcpez_right_power)) /\ exists bpvi_q_bls_bdqcpez_right_power_repeat. bpvi_b_bls_bdqcpez_right_power = bpvi_q_bls_bdqcpez_right_power_repeat * S ((S (bpvi_i_bls_bdqcpez_right_power)) * bpvi_c_bls_bdqcpez_right_power) + (p)))) /\ (exists bpvi_u_bls_bdqcpez_right_power bpvi_v_bls_bdqcpez_right_power. ((((exists bpvi_h_bls_bdqcpez_right_power_start. bpvi_h_bls_bdqcpez_right_power_start + S (1) = S ((S (0)) * bpvi_v_bls_bdqcpez_right_power)) /\ exists bpvi_q_bls_bdqcpez_right_power_start. bpvi_u_bls_bdqcpez_right_power = bpvi_q_bls_bdqcpez_right_power_start * S ((S (0)) * bpvi_v_bls_bdqcpez_right_power) + (1))) /\ ((((exists bpvi_h_bls_bdqcpez_right_power_terminal. bpvi_h_bls_bdqcpez_right_power_terminal + S (bls_power_bdqcpez_right) = S ((S (S bls_index_bdqcpez_right)) * bpvi_v_bls_bdqcpez_right_power)) /\ exists bpvi_q_bls_bdqcpez_right_power_terminal. bpvi_u_bls_bdqcpez_right_power = bpvi_q_bls_bdqcpez_right_power_terminal * S ((S (S bls_index_bdqcpez_right)) * bpvi_v_bls_bdqcpez_right_power) + (bls_power_bdqcpez_right))) /\ forall bpvi_j_bls_bdqcpez_right_power. (exists bpvi_product_gap_bls_bdqcpez_right_power. bpvi_product_gap_bls_bdqcpez_right_power + S bpvi_j_bls_bdqcpez_right_power = S bls_index_bdqcpez_right) -> exists bpvi_factor_bls_bdqcpez_right_power bpvi_partial_bls_bdqcpez_right_power bpvi_successor_bls_bdqcpez_right_power. ((((exists bpvi_h_bls_bdqcpez_right_power_factor. bpvi_h_bls_bdqcpez_right_power_factor + S (bpvi_factor_bls_bdqcpez_right_power) = S ((S (bpvi_j_bls_bdqcpez_right_power)) * bpvi_c_bls_bdqcpez_right_power)) /\ exists bpvi_q_bls_bdqcpez_right_power_factor. bpvi_b_bls_bdqcpez_right_power = bpvi_q_bls_bdqcpez_right_power_factor * S ((S (bpvi_j_bls_bdqcpez_right_power)) * bpvi_c_bls_bdqcpez_right_power) + (bpvi_factor_bls_bdqcpez_right_power))) /\ ((((exists bpvi_h_bls_bdqcpez_right_power_partial. bpvi_h_bls_bdqcpez_right_power_partial + S (bpvi_partial_bls_bdqcpez_right_power) = S ((S (bpvi_j_bls_bdqcpez_right_power)) * bpvi_v_bls_bdqcpez_right_power)) /\ exists bpvi_q_bls_bdqcpez_right_power_partial. bpvi_u_bls_bdqcpez_right_power = bpvi_q_bls_bdqcpez_right_power_partial * S ((S (bpvi_j_bls_bdqcpez_right_power)) * bpvi_v_bls_bdqcpez_right_power) + (bpvi_partial_bls_bdqcpez_right_power))) /\ ((((exists bpvi_h_bls_bdqcpez_right_power_successor. bpvi_h_bls_bdqcpez_right_power_successor + S (bpvi_successor_bls_bdqcpez_right_power) = S ((S (S bpvi_j_bls_bdqcpez_right_power)) * bpvi_v_bls_bdqcpez_right_power)) /\ exists bpvi_q_bls_bdqcpez_right_power_successor. bpvi_u_bls_bdqcpez_right_power = bpvi_q_bls_bdqcpez_right_power_successor * S ((S (S bpvi_j_bls_bdqcpez_right_power)) * bpvi_v_bls_bdqcpez_right_power) + (bpvi_successor_bls_bdqcpez_right_power))) /\ bpvi_successor_bls_bdqcpez_right_power = bpvi_partial_bls_bdqcpez_right_power * bpvi_factor_bls_bdqcpez_right_power)))))))) /\ ((((exists ff_h_bls_bdqcpez_right_quotient_entry. ff_h_bls_bdqcpez_right_quotient_entry + S (bls_quotient_bdqcpez_right) = S ((S (bls_index_bdqcpez_right)) * e)) /\ exists ff_q_bls_bdqcpez_right_quotient_entry. d = ff_q_bls_bdqcpez_right_quotient_entry * S ((S (bls_index_bdqcpez_right)) * e) + (bls_quotient_bdqcpez_right))) /\ ((n + n = bls_power_bdqcpez_right * bls_quotient_bdqcpez_right + bls_remainder_bdqcpez_right /\ exists bls_remainder_gap_bdqcpez_right_division. bls_remainder_gap_bdqcpez_right_division + S (bls_remainder_bdqcpez_right) = bls_power_bdqcpez_right))))) -> (forall b5cc_index_bdqcpez_carry. (exists bcf_lt_gap_bdqcpez_carry_bound. bcf_lt_gap_bdqcpez_carry_bound + S (b5cc_index_bdqcpez_carry) = l) -> exists b5cc_left_bdqcpez_carry b5cc_right_bdqcpez_carry b5cc_bit_bdqcpez_carry. (((exists fs_h_b5cc_bdqcpez_carry_left. fs_h_b5cc_bdqcpez_carry_left + S (b5cc_left_bdqcpez_carry) = S ((S (b5cc_index_bdqcpez_carry)) * c)) /\ exists fs_q_b5cc_bdqcpez_carry_left. b = fs_q_b5cc_bdqcpez_carry_left * S ((S (b5cc_index_bdqcpez_carry)) * c) + (b5cc_left_bdqcpez_carry))) /\ ((((exists fs_h_b5cc_bdqcpez_carry_right. fs_h_b5cc_bdqcpez_carry_right + S (b5cc_right_bdqcpez_carry) = S ((S (b5cc_index_bdqcpez_carry)) * e)) /\ exists fs_q_b5cc_bdqcpez_carry_right. d = fs_q_b5cc_bdqcpez_carry_right * S ((S (b5cc_index_bdqcpez_carry)) * e) + (b5cc_right_bdqcpez_carry))) /\ ((((exists fs_h_b5cc_bdqcpez_carry_bit. fs_h_b5cc_bdqcpez_carry_bit + S (b5cc_bit_bdqcpez_carry) = S ((S (b5cc_index_bdqcpez_carry)) * g)) /\ exists fs_q_b5cc_bdqcpez_carry_bit. f = fs_q_b5cc_bdqcpez_carry_bit * S ((S (b5cc_index_bdqcpez_carry)) * g) + (b5cc_bit_bdqcpez_carry))) /\ (((b5cc_bit_bdqcpez_carry = 0 /\ b5cc_right_bdqcpez_carry = b5cc_left_bdqcpez_carry + b5cc_left_bdqcpez_carry) \/ (b5cc_bit_bdqcpez_carry = 1 /\ b5cc_right_bdqcpez_carry = S (b5cc_left_bdqcpez_carry + b5cc_left_bdqcpez_carry))))))) -> (((n) = (p) * (q) + (r) /\ (exists bcf_lt_gap_bdqcpez_first_bound. bcf_lt_gap_bdqcpez_first_bound + S (r) = p))) -> (((n + n) = (p) * (q + q) + (R) /\ (exists bcf_lt_gap_bdqcpez_double_bound. bcf_lt_gap_bdqcpez_double_bound + S (R) = p))) -> forall i. (exists bcf_lt_gap_bdqcpez_bound. bcf_lt_gap_bdqcpez_bound + S (i) = l) -> (((exists fs_h_bdqcpez_result. fs_h_bdqcpez_result + S (0) = S ((S (i)) * g)) /\ exists fs_q_bdqcpez_result. f = fs_q_bdqcpez_result * S ((S (i)) * g) + (0)))

Structural proof guide

Exact doubled quotients and a square tail force every carry to zero.

Direct prerequisites: zero_or_succ, pow_one, division_remainder_unique, beta_at_unique, zero_add, lt_irrefl_expanded, pow_tail_strict_of_square, division_zero_quotient_of_lt. The authored body proceeds by case analysis (30), intermediate claims (14), equality transport (18).

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 p
  2. 0002intro n
  3. 0003intro b
  4. 0004intro c
  5. 0005intro d
  6. 0006intro e
  7. 0007intro f
  8. 0008intro g
  9. 0009intro l
  10. 0010intro q
  11. 0011intro r
  12. 0012intro R
  13. 0013intro s
  14. 0014intro hbase
  15. 0015intro hsquare
  16. 0016intro hstrict
  17. 0017intro hleft
  18. 0018intro hright
  19. 0019intro hcarry
  20. 0020intro hfirst
  21. 0021intro hdouble
  22. 0022intro i
  23. 0023intro hi
  24. 0024have hleft_data : exists D u a. (exists bpvi_b_bdqcpez_left_power bpvi_c_bdqcpez_left_power. ((forall bpvi_i_bdqcpez_left_power. (exists bpvi_repeat_gap_bdqcpez_left_power. bpvi_repeat_gap_bdqcpez_left_power + S bpvi_i_bdqcpez_left_power = S i) -> (((exists bpvi_h_bdqcpez_left_power_repeat. bpvi_h_bdqcpez_left_power_repeat + S (p) = S ((S (bpvi_i_bdqcpez_left_power)) * bpvi_c_bdqcpez_left_power)) /\ exists bpvi_q_bdqcpez_left_power_repeat. bpvi_b_bdqcpez_left_power = bpvi_q_bdqcpez_left_power_repeat * S ((S (bpvi_i_bdqcpez_left_power)) * bpvi_c_bdqcpez_left_power) + (p)))) /\ (exists bpvi_u_bdqcpez_left_power bpvi_v_bdqcpez_left_power. ((((exists bpvi_h_bdqcpez_left_power_start. bpvi_h_bdqcpez_left_power_start + S (1) = S ((S (0)) * bpvi_v_bdqcpez_left_power)) /\ exists bpvi_q_bdqcpez_left_power_start. bpvi_u_bdqcpez_left_power = bpvi_q_bdqcpez_left_power_start * S ((S (0)) * bpvi_v_bdqcpez_left_power) + (1))) /\ ((((exists bpvi_h_bdqcpez_left_power_terminal. bpvi_h_bdqcpez_left_power_terminal + S (D) = S ((S (S i)) * bpvi_v_bdqcpez_left_power)) /\ exists bpvi_q_bdqcpez_left_power_terminal. bpvi_u_bdqcpez_left_power = bpvi_q_bdqcpez_left_power_terminal * S ((S (S i)) * bpvi_v_bdqcpez_left_power) + (D))) /\ forall bpvi_j_bdqcpez_left_power. (exists bpvi_product_gap_bdqcpez_left_power. bpvi_product_gap_bdqcpez_left_power + S bpvi_j_bdqcpez_left_power = S i) -> exists bpvi_factor_bdqcpez_left_power bpvi_partial_bdqcpez_left_power bpvi_successor_bdqcpez_left_power. ((((exists bpvi_h_bdqcpez_left_power_factor. bpvi_h_bdqcpez_left_power_factor + S (bpvi_factor_bdqcpez_left_power) = S ((S (bpvi_j_bdqcpez_left_power)) * bpvi_c_bdqcpez_left_power)) /\ exists bpvi_q_bdqcpez_left_power_factor. bpvi_b_bdqcpez_left_power = bpvi_q_bdqcpez_left_power_factor * S ((S (bpvi_j_bdqcpez_left_power)) * bpvi_c_bdqcpez_left_power) + (bpvi_factor_bdqcpez_left_power))) /\ ((((exists bpvi_h_bdqcpez_left_power_partial. bpvi_h_bdqcpez_left_power_partial + S (bpvi_partial_bdqcpez_left_power) = S ((S (bpvi_j_bdqcpez_left_power)) * bpvi_v_bdqcpez_left_power)) /\ exists bpvi_q_bdqcpez_left_power_partial. bpvi_u_bdqcpez_left_power = bpvi_q_bdqcpez_left_power_partial * S ((S (bpvi_j_bdqcpez_left_power)) * bpvi_v_bdqcpez_left_power) + (bpvi_partial_bdqcpez_left_power))) /\ ((((exists bpvi_h_bdqcpez_left_power_successor. bpvi_h_bdqcpez_left_power_successor + S (bpvi_successor_bdqcpez_left_power) = S ((S (S bpvi_j_bdqcpez_left_power)) * bpvi_v_bdqcpez_left_power)) /\ exists bpvi_q_bdqcpez_left_power_successor. bpvi_u_bdqcpez_left_power = bpvi_q_bdqcpez_left_power_successor * S ((S (S bpvi_j_bdqcpez_left_power)) * bpvi_v_bdqcpez_left_power) + (bpvi_successor_bdqcpez_left_power))) /\ bpvi_successor_bdqcpez_left_power = bpvi_partial_bdqcpez_left_power * bpvi_factor_bdqcpez_left_power)))))))) /\ ((((exists fs_h_bdqcpez_left_entry. fs_h_bdqcpez_left_entry + S (u) = S ((S (i)) * c)) /\ exists fs_q_bdqcpez_left_entry. b = fs_q_bdqcpez_left_entry * S ((S (i)) * c) + (u))) /\ (((n) = (D) * (u) + (a) /\ (exists bcf_lt_gap_bdqcpez_left_division_bound. bcf_lt_gap_bdqcpez_left_division_bound + S (a) = D))))
  25. 0025specialize hleft i
  26. 0026apply hleft
  27. 0027exact hi
  28. 0028cases hleft_data
  29. 0029cases hleft_data_witness
  30. 0030cases hleft_data_witness_witness
  31. 0031cases hleft_data_witness_witness_witness
  32. 0032cases hleft_data_witness_witness_witness_right
  33. 0033have hright_data : exists D u a. (exists bpvi_b_bdqcpez_right_power bpvi_c_bdqcpez_right_power. ((forall bpvi_i_bdqcpez_right_power. (exists bpvi_repeat_gap_bdqcpez_right_power. bpvi_repeat_gap_bdqcpez_right_power + S bpvi_i_bdqcpez_right_power = S i) -> (((exists bpvi_h_bdqcpez_right_power_repeat. bpvi_h_bdqcpez_right_power_repeat + S (p) = S ((S (bpvi_i_bdqcpez_right_power)) * bpvi_c_bdqcpez_right_power)) /\ exists bpvi_q_bdqcpez_right_power_repeat. bpvi_b_bdqcpez_right_power = bpvi_q_bdqcpez_right_power_repeat * S ((S (bpvi_i_bdqcpez_right_power)) * bpvi_c_bdqcpez_right_power) + (p)))) /\ (exists bpvi_u_bdqcpez_right_power bpvi_v_bdqcpez_right_power. ((((exists bpvi_h_bdqcpez_right_power_start. bpvi_h_bdqcpez_right_power_start + S (1) = S ((S (0)) * bpvi_v_bdqcpez_right_power)) /\ exists bpvi_q_bdqcpez_right_power_start. bpvi_u_bdqcpez_right_power = bpvi_q_bdqcpez_right_power_start * S ((S (0)) * bpvi_v_bdqcpez_right_power) + (1))) /\ ((((exists bpvi_h_bdqcpez_right_power_terminal. bpvi_h_bdqcpez_right_power_terminal + S (D) = S ((S (S i)) * bpvi_v_bdqcpez_right_power)) /\ exists bpvi_q_bdqcpez_right_power_terminal. bpvi_u_bdqcpez_right_power = bpvi_q_bdqcpez_right_power_terminal * S ((S (S i)) * bpvi_v_bdqcpez_right_power) + (D))) /\ forall bpvi_j_bdqcpez_right_power. (exists bpvi_product_gap_bdqcpez_right_power. bpvi_product_gap_bdqcpez_right_power + S bpvi_j_bdqcpez_right_power = S i) -> exists bpvi_factor_bdqcpez_right_power bpvi_partial_bdqcpez_right_power bpvi_successor_bdqcpez_right_power. ((((exists bpvi_h_bdqcpez_right_power_factor. bpvi_h_bdqcpez_right_power_factor + S (bpvi_factor_bdqcpez_right_power) = S ((S (bpvi_j_bdqcpez_right_power)) * bpvi_c_bdqcpez_right_power)) /\ exists bpvi_q_bdqcpez_right_power_factor. bpvi_b_bdqcpez_right_power = bpvi_q_bdqcpez_right_power_factor * S ((S (bpvi_j_bdqcpez_right_power)) * bpvi_c_bdqcpez_right_power) + (bpvi_factor_bdqcpez_right_power))) /\ ((((exists bpvi_h_bdqcpez_right_power_partial. bpvi_h_bdqcpez_right_power_partial + S (bpvi_partial_bdqcpez_right_power) = S ((S (bpvi_j_bdqcpez_right_power)) * bpvi_v_bdqcpez_right_power)) /\ exists bpvi_q_bdqcpez_right_power_partial. bpvi_u_bdqcpez_right_power = bpvi_q_bdqcpez_right_power_partial * S ((S (bpvi_j_bdqcpez_right_power)) * bpvi_v_bdqcpez_right_power) + (bpvi_partial_bdqcpez_right_power))) /\ ((((exists bpvi_h_bdqcpez_right_power_successor. bpvi_h_bdqcpez_right_power_successor + S (bpvi_successor_bdqcpez_right_power) = S ((S (S bpvi_j_bdqcpez_right_power)) * bpvi_v_bdqcpez_right_power)) /\ exists bpvi_q_bdqcpez_right_power_successor. bpvi_u_bdqcpez_right_power = bpvi_q_bdqcpez_right_power_successor * S ((S (S bpvi_j_bdqcpez_right_power)) * bpvi_v_bdqcpez_right_power) + (bpvi_successor_bdqcpez_right_power))) /\ bpvi_successor_bdqcpez_right_power = bpvi_partial_bdqcpez_right_power * bpvi_factor_bdqcpez_right_power)))))))) /\ ((((exists fs_h_bdqcpez_right_entry. fs_h_bdqcpez_right_entry + S (u) = S ((S (i)) * e)) /\ exists fs_q_bdqcpez_right_entry. d = fs_q_bdqcpez_right_entry * S ((S (i)) * e) + (u))) /\ (((n + n) = (D) * (u) + (a) /\ (exists bcf_lt_gap_bdqcpez_right_division_bound. bcf_lt_gap_bdqcpez_right_division_bound + S (a) = D))))
  34. 0034specialize hright i
  35. 0035apply hright
  36. 0036exact hi
  37. 0037cases hright_data
  38. 0038cases hright_data_witness
  39. 0039cases hright_data_witness_witness
  40. 0040cases hright_data_witness_witness_witness
  41. 0041cases hright_data_witness_witness_witness_right
  42. 0042have hsemantic : exists q Q bit. (((exists fs_h_bdqcpez_semantic_left. fs_h_bdqcpez_semantic_left + S (q) = S ((S (i)) * c)) /\ exists fs_q_bdqcpez_semantic_left. b = fs_q_bdqcpez_semantic_left * S ((S (i)) * c) + (q))) /\ ((((exists fs_h_bdqcpez_semantic_right. fs_h_bdqcpez_semantic_right + S (Q) = S ((S (i)) * e)) /\ exists fs_q_bdqcpez_semantic_right. d = fs_q_bdqcpez_semantic_right * S ((S (i)) * e) + (Q))) /\ ((((exists fs_h_bdqcpez_semantic_bit. fs_h_bdqcpez_semantic_bit + S (bit) = S ((S (i)) * g)) /\ exists fs_q_bdqcpez_semantic_bit. f = fs_q_bdqcpez_semantic_bit * S ((S (i)) * g) + (bit))) /\ (((bit = 0 /\ Q = q + q) \/ (bit = 1 /\ Q = S (q + q))))))
  43. 0043specialize hcarry i
  44. 0044apply hcarry
  45. 0045exact hi
  46. 0046cases hsemantic
  47. 0047cases hsemantic_witness
  48. 0048cases hsemantic_witness_witness
  49. 0049cases hsemantic_witness_witness_witness
  50. 0050cases hsemantic_witness_witness_witness_right
  51. 0051cases hsemantic_witness_witness_witness_right_right
  52. 0052specialize zero_or_succ i
  53. 0053cases zero_or_succ
  54. 0054have hexponent_one : S i = 1
  55. 0055rewrite zero_or_succ_left
  56. 0056refl
  57. 0057have hleft_power : x = p
  58. 0058specialize pow_one p
  59. 0059specialize pow_one (S i)
  60. 0060specialize pow_one x
  61. 0061apply pow_one
  62. 0062exact hexponent_one
  63. 0063exact hleft_data_witness_witness_witness_left
  64. 0064have hright_power : x3 = p
  65. 0065specialize pow_one p
  66. 0066specialize pow_one (S i)
  67. 0067specialize pow_one x3
  68. 0068apply pow_one
  69. 0069exact hexponent_one
  70. 0070exact hright_data_witness_witness_witness_left
  71. 0071rewrite hleft_power at hleft_data_witness_witness_witness_right_right
  72. 0072rewrite hleft_power at hleft_data_witness_witness_witness_right_right
  73. 0073rewrite hright_power at hright_data_witness_witness_witness_right_right
  74. 0074rewrite hright_power at hright_data_witness_witness_witness_right_right
  75. 0075cases hleft_data_witness_witness_witness_right_right
  76. 0076cases hright_data_witness_witness_witness_right_right
  77. 0077cases hfirst
  78. 0078cases hdouble
  79. 0079have hleft_unique : x1 = q /\ x2 = r
  80. 0080specialize division_remainder_unique p
  81. 0081specialize division_remainder_unique n
  82. 0082specialize division_remainder_unique x1
  83. 0083specialize division_remainder_unique x2
  84. 0084specialize division_remainder_unique q
  85. 0085specialize division_remainder_unique r
  86. 0086apply division_remainder_unique
  87. 0087exact hleft_data_witness_witness_witness_right_right_left
  88. 0088exact hleft_data_witness_witness_witness_right_right_right
  89. 0089exact hfirst_left
  90. 0090exact hfirst_right
  91. 0091have hright_unique : x4 = q + q /\ x5 = R
  92. 0092specialize division_remainder_unique p
  93. 0093specialize division_remainder_unique (n + n)
  94. 0094specialize division_remainder_unique x4
  95. 0095specialize division_remainder_unique x5
  96. 0096specialize division_remainder_unique (q + q)
  97. 0097specialize division_remainder_unique R
  98. 0098apply division_remainder_unique
  99. 0099exact hright_data_witness_witness_witness_right_right_left
  100. 0100exact hright_data_witness_witness_witness_right_right_right
  101. 0101exact hdouble_left
  102. 0102exact hdouble_right
  103. 0103cases hleft_unique
  104. 0104cases hright_unique
  105. 0105have hleft_entry : x1 = x6
  106. 0106specialize beta_at_unique b
  107. 0107specialize beta_at_unique c
  108. 0108specialize beta_at_unique i
  109. 0109specialize beta_at_unique x1
  110. 0110specialize beta_at_unique x6
  111. 0111apply beta_at_unique
  112. 0112exact hleft_data_witness_witness_witness_right_left
  113. 0113exact hsemantic_witness_witness_witness_left
  114. 0114have hright_entry : x4 = x7
  115. 0115specialize beta_at_unique d
  116. 0116specialize beta_at_unique e
  117. 0117specialize beta_at_unique i
  118. 0118specialize beta_at_unique x4
  119. 0119specialize beta_at_unique x7
  120. 0120apply beta_at_unique
  121. 0121exact hright_data_witness_witness_witness_right_left
  122. 0122exact hsemantic_witness_witness_witness_right_left
  123. 0123cases hsemantic_witness_witness_witness_right_right_right
  124. 0124cases hsemantic_witness_witness_witness_right_right_right_left
  125. 0125rewrite hsemantic_witness_witness_witness_right_right_right_left_left at hsemantic_witness_witness_witness_right_right_left
  126. 0126rewrite hsemantic_witness_witness_witness_right_right_right_left_left at hsemantic_witness_witness_witness_right_right_left
  127. 0127exact hsemantic_witness_witness_witness_right_right_left
  128. 0128cases hsemantic_witness_witness_witness_right_right_right_right
  129. 0129rewrite <- hright_entry at hsemantic_witness_witness_witness_right_right_right_right_right
  130. 0130rewrite hright_unique_left at hsemantic_witness_witness_witness_right_right_right_right_right
  131. 0131rewrite <- hleft_entry at hsemantic_witness_witness_witness_right_right_right_right_right
  132. 0132rewrite <- hleft_entry at hsemantic_witness_witness_witness_right_right_right_right_right
  133. 0133rewrite hleft_unique_left at hsemantic_witness_witness_witness_right_right_right_right_right
  134. 0134rewrite hleft_unique_left at hsemantic_witness_witness_witness_right_right_right_right_right
  135. 0135exfalso
  136. 0136specialize lt_irrefl_expanded (q + q)
  137. 0137apply lt_irrefl_expanded
  138. 0138exists 0
  139. 0139trans S (q + q)
  140. 0140specialize zero_add (S (q + q))
  141. 0141exact zero_add
  142. 0142symm
  143. 0143exact hsemantic_witness_witness_witness_right_right_right_right_right
  144. 0144cases zero_or_succ_right
  145. 0145have hexponent_tail : exists bcf_le_gap_bdqcpez_tail_exponent. bcf_le_gap_bdqcpez_tail_exponent + (2) = S i
  146. 0146exists x9
  147. 0147rewrite zero_or_succ_right_witness
  148. 0148simp
  149. 0149have htail : exists bcf_lt_gap_bdqcpez_tail_strict. bcf_lt_gap_bdqcpez_tail_strict + S (n + n) = x3
  150. 0150specialize pow_tail_strict_of_square p
  151. 0151specialize pow_tail_strict_of_square (S i)
  152. 0152specialize pow_tail_strict_of_square x3
  153. 0153specialize pow_tail_strict_of_square s
  154. 0154specialize pow_tail_strict_of_square (n + n)
  155. 0155apply pow_tail_strict_of_square
  156. 0156exact hbase
  157. 0157exact hexponent_tail
  158. 0158exact hsquare
  159. 0159exact hright_data_witness_witness_witness_left
  160. 0160exact hstrict
  161. 0161have hright_zero : x4 = 0
  162. 0162specialize division_zero_quotient_of_lt x3
  163. 0163specialize division_zero_quotient_of_lt (n + n)
  164. 0164specialize division_zero_quotient_of_lt x4
  165. 0165specialize division_zero_quotient_of_lt x5
  166. 0166apply division_zero_quotient_of_lt
  167. 0167exact hright_data_witness_witness_witness_right_right
  168. 0168exact htail
  169. 0169have hright_entry : x4 = x7
  170. 0170specialize beta_at_unique d
  171. 0171specialize beta_at_unique e
  172. 0172specialize beta_at_unique i
  173. 0173specialize beta_at_unique x4
  174. 0174specialize beta_at_unique x7
  175. 0175apply beta_at_unique
  176. 0176exact hright_data_witness_witness_witness_right_left
  177. 0177exact hsemantic_witness_witness_witness_right_left
  178. 0178cases hsemantic_witness_witness_witness_right_right_right
  179. 0179cases hsemantic_witness_witness_witness_right_right_right_left
  180. 0180rewrite hsemantic_witness_witness_witness_right_right_right_left_left at hsemantic_witness_witness_witness_right_right_left
  181. 0181rewrite hsemantic_witness_witness_witness_right_right_right_left_left at hsemantic_witness_witness_witness_right_right_left
  182. 0182exact hsemantic_witness_witness_witness_right_right_left
  183. 0183cases hsemantic_witness_witness_witness_right_right_right_right
  184. 0184rewrite <- hright_entry at hsemantic_witness_witness_witness_right_right_right_right_right
  185. 0185rewrite hright_zero at hsemantic_witness_witness_witness_right_right_right_right_right
  186. 0186exfalso
  187. 0187apply PA1
  188. 0188symm
  189. 0189exact hsemantic_witness_witness_witness_right_right_right_right_right